Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;=============================
- ;Projeto Semáforo - Versão 1.1
- ;Linguagem : Assembly
- ;Microcontrolador : At89S4051
- ;=============================
- ORG 000h
- CALL CONFIG
- ORG 03h
- MOV R7, #001h
- CLR EX0
- SETB EX1
- MOV IPH, #00000100b
- RETI
- ORG 0013h
- MOV R7, #000h
- CLR EX1
- SETB EX0
- RETI
- ORG 060h
- CONFIG:
- SETB EA
- SETB EX0
- INICIO:
- CJNE R7, #001h, INICIO
- MOV P1, #0FFh ;Portas P1 em nivel 1, apagando Display
- MOV P3, #0FFh ;Portas P3 em nivel 1, apagando Leds
- MOV R1, #006h ;R1 - Para o laço de start do sistema
- CALL START
- VERDE:
- CJNE R7, #001h, INICIO
- CPL P3.7
- CALL CONTA
- CPL P3.7
- AMARELO:
- CPL P3.5
- MOV P1 , #0FFh
- MOV A , #00Bh
- CALL TIME
- CPL P3.5
- VERMELHO:
- CPL P3.4
- CALL CONTA
- CPL P3.4
- SJMP VERDE
- CONTA:
- MOV A , #00Bh
- MOV P1 , #10010000b ; 9
- CALL TIME
- MOV P1 , #10000000b ; 8
- CALL TIME
- MOV P1 , #11111000b ; 7
- CALL TIME
- MOV P1 , #10000010b ; 6
- CALL TIME
- MOV P1 , #10010010b ; 5
- CALL TIME
- MOV P1 , #10011001b ; 4
- CALL TIME
- MOV P1 , #10110000b ; 3
- CALL TIME
- MOV P1 , #10100100b ; 2
- CALL TIME
- MOV P1 , #11111001b ; 1
- CALL TIME
- MOV P1 , #11111111b ; Limpa Display
- RET
- ;Fim - Rotinas iniciais
- ;======================
- ;========================
- ;Função Iniciar Semáforo
- ;========================
- START:
- DJNZ R1, LEVEL
- SJMP ACENDELEDS
- LEVEL:
- MOV A , R1
- MOV P1 , #11111110b
- CALL TIME
- MOV P1 , #11111101b
- CALL TIME
- MOV P1 , #11111011b
- CALL TIME
- MOV P1 , #11110111b
- CALL TIME
- MOV P1 , #11101111b
- CALL TIME
- MOV P1 , #11011111b
- CALL TIME
- MOV P1 , #0FFh
- SJMP START
- ACENDELEDS:
- MOV A, #005h ; Tempo para o Time 500 mS
- MOV P1 , #10000000b
- CPL P3.7
- CALL TIME
- MOV P1 , #0FFh
- CALL TIME
- MOV P1 , #10000000b
- CPL P3.5
- CALL TIME
- MOV P1 , #0FFh
- CALL TIME
- MOV P1 , #10000000b
- CPL P3.4
- CALL TIME
- MOV P1 , #0FFh
- MOV P3 , #0FFh
- RET
- ;Fim - Função Iniciar Semáforo
- ;=============================
- ;====================================
- ;Função Time (Multiplicador de Tempo)
- ;====================================
- TIME:
- MOV R0, A
- TIME1: DJNZ R0, TIME050MS
- RET
- ; Fim - Função Multiplicador Time
- ;====================================
- ;==========================
- ;Função Time 50 mS
- ;==========================
- TIME050MS:
- MOV TL0, #0FAh
- MOV TH0, #0B9h
- STEP1:
- DJNZ TH0, STEP2
- SJMP TIME1
- STEP2:
- DJNZ TL0, STEP2
- MOV TL0, #0FAh
- SJMP STEP1
- RET
- ; Fim - Função Time 50 mS
- ;==========================
- END
- ;INSTRUÇÕES:
- ;===========
- ;
- ;Ligação dos Pinos (Cathodo, display com Anodo comum):
- ;P1.0 - Segmento A do display
- ;P1.1 - Segmento B do display
- ;P1.2 - Segmento C do display
- ;P1.3 - Segmento D do display
- ;P1.4 - Segmento E do display
- ;P1.5 - Segmento F do display
- ;P1.6 - Segmento G do display
- ;
- ;P3.7 - Led Verde - Cathodo
- ;P3.5 - Led Amarelo - Cathodo
- ;P3.4 - Led Vermelho - Cathodo
- ;
- ;Cálculos, ciclo de máquina x ciclo clock
- ;Cmáquina = 12 ciclos de clock
- ;Cmáquina = 12 / Clock do oscilador, logo para oscilador de 12Mhz
- ;Cmáquina = 12 / 11059200 = 1.08507 uS (10^-6)
- ;Para 1 segundo (1000000 uS), temos 1000000/1.08507 =~ 921600 Cmáquina
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement