Traducción al danés
JMP main //Salte al programa principal e inicie la ejecución——
ORG 800BH //Reserva el temporizador T0 interrumpir entrada-
JMP INTT0 //Saltar al temporizador T0 para la inicialización.
ORG 8100H //El programa principal inicia la ejecución desde la dirección de memoria externa 8100H-
MAIN: //etiqueta del programa principal (el programa principal comienza aquí)
MOV SP, #60H //Indicador de estado de inicialización-
MOV TMOD, #01H //Establece el temporizador T0 en modo 1 (temporizador de 16 bits)-
SETB ET0 // Encienda el temporizador de habilitación T0 -
SETB EA //Encienda el interruptor de interrupción principal de habilitación -
SETB TR0 //Inicie el temporizador T0
START0: // Indicador de inicio del temporizador T0
SETB P1.3 //Configura el cuarto pin del puerto P1 para generar un nivel alto y los otros pines para generar un nivel bajo -
MOV 30H, # 00H //Crea una unidad de memoria con la dirección 0030H y almacena el número 0- en la primera dirección.
Siguiente: //Siguiente indicador de entrada del programa-
MOV A, 30H //Guarde el número 0 con la dirección de unidad 30H justo ahora en el acumulador A-
MOV·DPTR, #TABLE //Apunta el puntero a la tabla de matriz TABLE-
MOVC A, @A DPTR //Tabla de búsqueda (se devuelve la suma del valor del acumulador y la tabla de búsqueda) y almacenado en el acumulador en el registro A)-
MOV·R2 A//El valor sumado del acumulador A se almacena temporalmente en el registro R2-
JZ ENDD //Juzga si el acumulador A y matriz La suma es 0 (es decir, el acumulador A es 0), vaya a la marca del programa ENDD-
ANL A, #0FH //El acumulador A enmascara los 4 bits superiores después de la suma - (eso es decir, solo los 4 bits bajos son válidos)-
MOV R5, A //Almacena el valor del acumulador en el registro R5 para almacenamiento temporal-
MOV A, R2 //Simplemente devuelve el valor del registro R2 Intercambia A por el acumulador A-
//Intercambia 4 bits del valor del acumulador A - (es decir, 0000 111 se convierte en 1111 0000) -
ANL A, #0FH // Luego enmascare los 4 bits altos - (igual que arriba) -
Si JNZ SING //El valor actual del acumulador A no es 1, el programa irá a SING y comenzará la ejecución -
cltr 0/ /Detener el temporizador T0-
JMP D1 //Saltar al logotipo del programa D1 para iniciar la ejecución-
SING: //entrada del logotipo del plan SING-
DEC A //El valor del acumulador A menos 1-
MOV 22H, A //Almacena el valor del acumulador A menos 1 en la unidad de almacenamiento en la dirección 22H-
RL A //El valor del acumulador A se mueve hacia la izquierda y luego regresa a A-
MOV DPTR, #TABLE1 //El puntero apunta a la tabla de datos TABLE1-
MOVC A, @A DPTR //Busca la tabla - (igual que arriba) -
MOV TH0, A //Almacena el valor después de buscar la tabla en el registro de bytes altos del temporizador T0-
MOV 21H , A //Almacena el valor del acumulador en la unidad de almacenamiento con dirección 21H-
MOV A, 22H //Devuelve el valor en la unidad de almacenamiento con dirección 22H al acumulador A-
RL A //Desplaza el acumulador A hacia la izquierda y guarda el valor desplazado a la izquierda nuevamente en A-
INC A //Agrega 1- al valor en el acumulador A
MOVC A, @A DPTR //Continuar buscando la tabla——
MOV TL0, A //Enviar el valor obtenido después de buscar la tabla al nivel inferior byte de orden del registro del temporizador T0- p>
MOV 20H, A //
SETB TR0
D1:
Sonido de retardo de llamada; retraso
INC 30H
El siguiente es JMP
ENDD:
CLR TR0
Punto de inicio de JMP 0
intt 0:; rutina de servicio de interrupción del temporizador 0
Push PSW
PUSH ACC // Poner pila, es decir, restaurar el valor recién guardado en A al valor antes de la interrupción-
MOV TL0, 20H
MOV TH0, 21H
CPL P1.3
ACC popular
POP PSW
Reti
DELAY: // Subrutina de retardo, bandera de entrada-
MOV R7, No. 02
Drayo:
MOV R4, #187
Retraso 1:
MOV R3, #248<
/p>
DJNZ R3, USD
DJNZ R4, DELAY1 //El registro R4 menos 1 no es 0, entonces irá a DLAY1-
DJNZ R7, DELAY0
DJNZ R4, DELAY1 // p>
DJNZ R5, retrasado
Remojado para suavizar
TABLE: //Declaración de tabla para almacenar datos -
DB 82H, 01H, 81H, 94H, 84H, 0B4H, 0A4H, 04H
DB 82H, 01H, 81H, 94H, 84H, 0C4H, 0B4H, 04H
DB 82H, 01H, 81H, 0F4H, 0D4H, 0B4H, 0A4H, 94H
DB 0E2H, 01H, 0E1H, 0D4H, 0B4H, 0C4H, 0B4H, 04H
DB 82H , 01H, 81H, 94H, 84H, 0B4H, 0A4H, 04H
DB 82H, 01H, 81H, 94H, 84H, 0C4H, 0B4H, 04H
DB 82H, 01H, 81H , 0F4H, 0D4H, 0B4H, 0A4H, 94H
DB 0E2H, 01H, 0E1H, 0D4H, 0B4H, 0C4H, 0B4H, 04H, 00H
TABLE1: //Declaración de tabla -
DW 64260, 64400, 64524, 64580, 64684, 64777, 64820, 64898
DW 64968, 65030, 65058, 6510, 65157, 65178, 65217
;//No entiendo por qué hay un punto y coma, Quizás sea para comentarios -
Fin//Fin del programa -
-
Eso es él. Acabas de llamar al traductor. ¡No nos mostraste lo que hace el programa!
Si necesita la funcionalidad del programa, ¡adjunte una descripción!
¡Espero que esto ayude!