proteus ejecutando interrupción del temporizador y consulta del programa fuente
Cuando el puerto P2 emite un nivel bajo, el LED emite luz.
Después de la simulación PROTEUS, los siguientes dos programas pueden cumplir los requisitos.
;=========================================== =========
;El siguiente es el modo de consulta
ORG 0000H
LJMP MAIN
ORG 0050H
p>PRINCIPAL:
MOV TMOD, #01 ;Hacer modo de temporización T0 1
MOV TH0, #3CH
MOV TL0 , #0B0H ; 50ms@12MHz
SETB TR0 ;Iniciar T0
;----------------------- --- ------------------
MOV R7, #20
MOV A, #7FH
MOV P2, A
M_LOOP:
JNB TF0, M_LOOP; T0 no tiene desbordamiento y el número de ciclos lo excede.
CLR TF0
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, M_LOOP; ¿Desbordamiento 20 veces?
MOV R7, #20 ;Acabo de llegar a 1s
RR A
MOV P2, A
SJMP M_LOOP
;---------------------------------------------- ----
FIN
; ============================== ====== ===============
;Aquí está el modo de interrupción
ORG 0000H
LJMP PRINCIPAL
ORG 000BH
LJMP T0_INT
ORG 0050H
PRINCIPAL:
MOV TMOD, #01 ;Hacer modo de sincronización T0 1
MOV TH0, #3CH
MOV TL0, #0B0H ;50ms@12MHz
SETB TR0 ;Iniciar T0
MOV IE, #82H ;Permitir interrupción.
;------------------------------ ------ --------
MOV R7, #20
MOV A, #7FH
MOV P2, A
M_LOOP:
;Programa principal, bucle vacío
SJMP M_LOOP
;------------ ------ --------------------------
T0_INT: ;Ejecutar una vez cada 50ms.
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, T0_END ;¿Interrumpido 20 veces?
MOV R7, #20 ;sólo a 1s
RR A
MOV P2, A
T0_END:
RETI
;--------------------------------------- --- -----
FIN
;=========================== ====== ======================