Principios de SCM, preguntas de programación
ORG?0000H
LJMP?START
ORG?000BH
LJMP?Timer0Interrupt Entrada de interrupción del temporizador 0
INICIO:
MOV?SP, #60H?; valor inicial de la pila
CLR?P1.0;? el pin se inicializa para generar un nivel bajo
LCALL?InitTimer0?; Inicialización del temporizador T0
LOOP:
LJMP?LOOP
InitTimer0:
MOV?TMOD, #01H; Configure el temporizador T0 para que funcione en modo 1
MOV?TH0, #0FFH Según la pregunta, el temporizador debe ser 500us, así que configure el valor inicial del temporizador en FF06H
<; p>MOV?TL0 , #06HSETB?EA; Activar la interrupción total
SETB?ET0; Activar la interrupción del temporizador T0
SETB? TR0; Iniciar habilitación del contador/temporizador T0
RET
Timer0Interrupt:
PUSH?DPH?; Proteger la escena
PUSH? DPL
PUSH ?ACC
MOV?TH0, #0FFH?Reset del valor inicial del temporizador
MOV?TL0, #06H
CPL?P1.0?; El pin P1.0 está invertido y genera una onda cuadrada
POP?ACC?; restaurar la escena
POP?DPL
POP?DPH
RETI
END