Exercício Semáforo - Assembly (Felipe P.)
Por: Felipe Pontes • 26/11/2015 • Trabalho acadêmico • 2.281 Palavras (10 Páginas) • 239 Visualizações
;=====================================================================
;================= ETEC Aristóteles Ferreira. ========================
;============== Prof.: Silvio Clarindo da Silva ======================
;====== 5ºPrograma -SEQUENCIAL Por: Felipe P.M data: 09/10/15. ===3A3=
;=====================================================================
BT0 EQU P3.2 ; NOMEIA P3.2 COMO BT0
ORG 0000H ; INICIO DE PROGRAMA
S1: MOV P0, #0000H ; MOVE O VALOR 0000H PARA P0
SETB P0.5 ; SETA P0.5
SETB P0.2 ; SETA P0.2
SETB P0.7 ; SETA P0.7
JB BT0, TEMPO ; VERIFICA SE BT0 ESTÁ ATIVADO, SE SIM, CONTINUA PROGRAMA, SE NÃO, SALTA PARA TEMPO
LJMP PEDESTRE ; SUB-ROTINA DE TEMPO PEDESTRE
TEMPO: MOV R2, #0FFH ; MOVE O VALOR #00FH PARA O R2
PULO3: MOV R1, #0FFH ; MOVE O VALOR #00FH PARA O R1
PULO2: MOV R0, #0AH ; MOVE O VALOR #0AH PARA O R0
PULO: DJNZ R0, PULO ; DECREMENTA E SALTA PARA PULO
DJNZ R1, PULO2 ; DECREMENTA E SALTA PARA PULO2
DJNZ R2, PULO3 ; DECREMENTA E SALTA PARA PULO3
JB BT0, RE1 ; VERIFICA SE BT0 ESTÁ ACIONADO, SE SIM, CONTINUA PROGRAMA, SE NÃO, VAI PARA RE1
LCALL PEDESTRE ; SUB-ROTINA DE TEMPO
LJMP S1 ; SALTA PARA S1
RE1: CLR P0.2 ; ZERA P0.2
INICIO1: ; NOMEIA PONTO DE PARTIDA
SETB P0.5 ; SETA O BIT P0.5
SETB P0.0 ; SETA O BIT P0.0
TEMPO1: MOV R2, #0FFH ; MOVE PARA R2 O VALOR 0FFH
PULO6: MOV R1, #0FFH ; MOVE PARA R1 O VALOR 0FFH
PULO5: MOV R0, #01EH ; MOVE PARA R0, 01EH
PULO4: DJNZ R0, PULO4 ; DECREMENTA E SALTA PARA PULO4
DJNZ R1, PULO5 ; DECREMENTA E SALTA PARA PULO5
DJNZ R2, PULO6 ; DECREMENTA E SALTA PARA PULO6
JB BT0, RE2 ; VERIFICA SE BT0 ESTÁ ACIONADO, SE SIM, CONTINUA PROGRAMA, SE NÃO, VAI PARA RE2
LCALL PEDESTRE ; SUB-ROTINA DE TEMPO
LJMP S1 ; SALTA PARA S1
RE2: CLR P0.0 ; ZERA P0.0
SETB P0.1 ; SETA O BIT P0.1
TEMPO2: MOV R2, #0FFH ; MOVE O VALOR #00FH PARA O R2
PULO9: MOV R1, #0FFH ; MOVE PARA R1 O VALOR 0FFH
PULO8: MOV R0, #0AH ; MOVE PARA R0, 0AH
PULO7: DJNZ R0, PULO7 ; DECREMENTA E SALTA PARA PULO7
DJNZ R1, PULO8 ; DECREMENTA E SALTA PARA PULO8
DJNZ R2, PULO9 ; DECREMENTA E SALTA PARA PULO9
JB BT0, RE3 ; VERIFICA SE BT0 ESTÁ ACIONADO, SE SIM, CONTINUA PROGRAMA, SE NÃO, VAI PARA RE3
LCALL PEDESTRE ; SUB-ROTINA DE TEMPO
LJMP S1 ; SALTA PARA S1
RE3:
CLR P0.1 ; ZERA P0.1
CLR P0.5 ; ZERA P0.5
SETB P0.2 ; SETA O BIT P0.2
SETB P0.3 ; SETA O BIT P0.3
TEMPO3: MOV R2, #0FFH ; MOVE PARA R2 O VALOR 0FFH
PULO12: MOV R1, #0FFH ; MOVE PARA R1 O VALOR 0FFH
PULO11: MOV R0, #01EH ; MOVE
...