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 para o labe l Testotal. 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 estiver es tourado, 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 pro label T estotal. 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.