51 pregunta sobre programación de microcontroladores, ayúdame a escribir un programa.
;Es mejor usar interrupciones
ORG 0000H
LJMP MAIN
ORG 001BH;Dirección del vector de interrupción del temporizador 1
LJMP T1_ISR ;Vaya a la subrutina de interrupción para su ejecución
ORG 0030H
MAIN: MOV TMOD,#20H ;Adopte el modo de temporizador 2, recarga automática de 8 bits p>
MOV TH1, #6 ; Dado que el ciclo es 500u, los niveles alto y bajo duran 250u
MOV TL1,#6 Se calcula el valor inicial del tiempo, el tiempo es 250u
MOV R0, #4 ;Establece el número de ciclos, 4x250u=1m
SETB EA ;Habilita interrupción total
SETB ET1 ;Habilita interrupción del temporizador 1
SETB TR1 ; Iniciar T1
SJMP $ ;Bucle vacío
;Interrumpir subrutina
T1_ISR: CPL P1.1 ;P1. 1 inversión
DJNZ R0,OUT ;Compruebe si el conteo es cuatro veces, si no es suficiente, salga
MOV R0,#4 ;Se han alcanzado cuatro veces, reasigne R0 p>
CPL P1.0 ; inversión P1.0
SALIDA: RETI; regreso al programa principal
END
simulación de proteus aprobada
p>