Por favor ayúdenme a traducir el programa para este microcontrolador 51 (con comentarios).

org 0000h especifica la dirección donde se almacena el programa.

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