LJMP MAIN transfiere el programa principal
org 0003h especifica la dirección del programa almacenado.
ljmp int0 establece la entrada de interrupción en INT0
org 000Bh especifica la dirección del programa almacenado.
ljmp timer 0; temporizador de entrada de interrupción programada 0
Principal:; programa principal
MOV SP, # 60h establece la parte inferior de la pila en 60H
p>mov TCON,#00000001b;
mov IE,#10000011b;interrumpir
iniciar:;iniciar
mov A,#0fh enviar 0F a un
clr c; clear carry
MOV R2, # 08H envía 08 a R2.
Bucle: RLC A; una banda lleva desplazamiento de bucle hacia la izquierda
MOV P1, A; salida de P0
Retraso de LCALL 0,2 segundos
DJNZ R2, línea de timbre; veces de cambio de timbre R2
MOV R2, #07HR2 está configurado en 07.
bucle 1: RRC A; un desplazamiento de bucle hacia la derecha de la banda
MOV P1, A salida de P0
retardo LCALL
DJNZ; R2, bucle 1; mueva R2 al bucle derecho.
JMP inicia; salta al principio y comienza de nuevo.
int 0: empujar PSW; entrada de interrupción, entrada de pila PSW, bandera de protección
Empujar a ingresa a la pila, protegiendo a.
Mov TMOD, #00000001b, establece el temporizador 0 en modo 1.
mov TL0,#0f0h establece el valor inicial del temporizador
mov TH0,#0D8h establece el valor inicial del temporizador
mov r2,#3 ; el supuesto R2 es 3.
mov a, # 00010000 b; A=#00010000b
clr c; clear carry
setb tr0 inicia el tiempo
mov p1 , a; salida a a P1.
Aquí: cjne r2, #0, aquí,; R2 no es igual a 0. Sigue saltando y espera.
sacar a; Extraer de la pila y restaurar protegido.
saque psw de la pila
RETI; retorno de interrupción
Temporizador 0:; interrupción del temporizador
Empuje pswPSW a la pila
p>
clr tr0 detener temporizador
Diciembre R2; R2 menos 1
RLC a; banda a llevar desplazamiento de bucle izquierdo
mov p1,a; salida a de P1.
mov TL0, # 0f0h restablece el valor inicial del temporizador
mov TH0, #0D8h
setb tr0 inicia el tiempo
pop psw PSW off pila
RETI; retorno de interrupción
Retraso: MOV R3, # 20; retraso 0,2 segundos
D1: MOV R4, # 40; /p>
D2: MOV R5, #248 envía 248 a R5.
DJNZ R5, $; Disminuye R5 en 1, si no es 0, entonces disminúyelo hasta que sea 0.
D2 DJNZ R4; R4 menos 1, no 0, vaya a D2.
DJNZ R3, d 1; R3 menos 1, no 0, a D1.
RET regresa
Fin