Red de conocimiento informático - Problemas con los teléfonos móviles - proteus ejecutando interrupción del temporizador y consulta del programa fuente

proteus ejecutando interrupción del temporizador y consulta del programa fuente

Supongamos que la frecuencia del oscilador de cristal es de 12 MHz;

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

;=========================== ====== ======================