Você está na página 1de 2

CHA EQU P2.

0
CHB EQU P2.1
OFF EQU P2.2
LEDA EQU P3.7
LEDB EQU P3.3

Org 00 ;Iniciar pelo endereço 00


Mov P3,#00
Testotal: Clr Leda ;Apagar Led A
Clr Ledb ;Apagar Led B
Test2: Jnb Cha,Rota ;Testar chave A, Se Pressionada Mandar Para R
otina Do Led A
Jnb Chb,Rotb ;Testar chave B, Se pressionada Mandar para R
otina Do Led A
Ljmp Test2 ;Pular para o Label Test2, caso Não seja pressi
onada Nenhuma Das duas.
Rota: Setb Leda ;Ligar Led A
Lcall Rot125 ;Chamar rotina de 0,125 segundos.
Clr Leda ;Desligar Led A
Lcall Rot125 ;Chamar Rotina de 0,125 segundos.
Jnb Off,Testotal ;Se chave OFF pressionada, Mandar pro label T
estotal.
sjmp Rota ;Se chave OFF Não For pressionada, Mandar para
o label Rota.
Rotb: Setb Ledb ;Liga Led B
Lcall Rot05 ;Chamar Rotina de 0,5 segundos
Clr Ledb ;Desligar Ledb
Lcall Rot05 ;Chamar Rotina de 0,5 segundos
Jnb Off, Testotal ;Se chave OFF pressionada, Manda Para o label
Testotal.
Sjmp Rotb ;Se chave OFF Não For pressionada, Manda para o
label Rotb.

;Subrotinas

Rot125: Mov Tmod,#22h ;Ligar contador em Modo 2;


Mov R0,#50 ;Escrever 50 No R0;
Mov R1,#10 ;Escrever 10 No R1;
Jnb Off,testotal ;Se chave OFF pressionada, Mandar para o labe
l Testotal.
Volta: Mov Th0,#(5) ;Começar contagem com o Número 5 No contador.
Mov Tl0,#(5) ;Começar contagem com o Número 5 No contador.
Setb Tr0 ;Começar clock
jnb Tf0,$ ;Testar se o Flag Não estourou, se Não tiver esto
urado, ficar testando.
Clr Tf0 ;Limpar Flag
Jnb Off,testotal ;Se chave OFF pressionada, Manda para o label
Testotal.
Djnz R0,volta ;Decrementar R0, se diferente de 0 Então irá para
o label volta.
Mov R0,#50 ;Escreve o número 50 no r0
Djnz R1,volta ;Decrementa R1, Se diferente de 0 Então irá para
o label Volta.
Clr Tr0 ;Parar o clock.
Ret ;Retornar uma instrução depois do Lcall.
Rot05: Mov Tmod,#22h ;Ligar contador em modo 2
Mov R0,#100 ;Escrever 100 No R0;
Mov R1,#20 ;Escrever 20 No R1;
jnb Off,Testotal ;Se chave OFF pressionada, Mandar para o labe
l Testotal.
Volta1: Mov TH0,#(5) ;Começar contagem com o Número 5 No contador.
Mov Tl0,#(5) ;Começar contagem com o Número 5 No contador.
Setb Tr0 ;Começar clock
Jnb Tf0,$ ;Testar se o Flag Não estourou, se Não EStiver es
tourado, fica testando.
Clr Tf0 ;Limpar Flag
Jnb Off,Testotal ;Se chave OFF pressionada, Mandar para o labe
l Testotal.
Djnz R0,volta1 ;Decrementar R0, se diferente de 0 Então irá para
o label volta1.
Mov R0,#100 ;Escrever o Número 100 no r0
Djnz R1,Volta1 ;Decrementar R1, Se diferente de 0 Então irá para
o label Volta1.
Clr Tr0 ;Parar o clock
Ret ;Retornar uma instrução depois do Lcall.
End ;Terminar o programa.

Você também pode gostar