Traducción del programa MCU
ORG 0000H (significa colocar la siguiente instrucción en el espacio de almacenamiento ROM comenzando con la dirección 0000H, es decir, almacenar la instrucción SJMP START en 0000H, 0001H. ¡La longitud de SJMP START es de 2 bytes! Por favor Preste atención al rango de transferencia de SJMP cuando ORG es una pseudoinstrucción. El microcontrolador no se está ejecutando, por lo que no genera código de máquina y sirve como ensamblador, es decir, cuando traduce el lenguaje ensamblador a código de máquina. el ensamblador donde colocar la siguiente línea. Habrá esta oración al comienzo del programa de ensamblaje porque después de reiniciar el microcontrolador, PC = 0000H, es decir, después de reiniciar el microcontrolador, el programa comienza a ejecutarse desde 0000H. Debido a que las direcciones del microcontrolador 0003H a 002BH son las direcciones de entrada de interrupción, almacenamos las instrucciones de salto En 0000H ~ 0002H, salta directamente al programa principal)
Se inicia SJMP (el programa salta al principio, y el rango de transferencia de SJMP es +127B~-128B de la PC actual).
ORG 0030H (los programas que comienzan con inicio se almacenan secuencialmente en el espacio de almacenamiento que comienza con 0030H).
Inicio: MOV P3, #0FFH (P3 emite un nivel alto. Como no hay un diagrama de circuito, solo podemos inferir del siguiente programa: ¡¡todas las luces están apagadas!! En otras palabras, un extremo de la luz en el diagrama del circuito Conéctela a la fuente de alimentación y el otro extremo al puerto P3. El siguiente procedimiento se considera completamente apagado (por supuesto, todas las luces pueden estar encendidas según el diagrama del circuito)
MOV A, #0FEH (A establece el valor inicial, solo la luz más a la izquierda o más a la derecha está encendida)
JNB P1.2, bucle (determina si P1.2 es 0, si es 0, salta al bucle, adivina al levantar el botón, salta al presionar el botón)
JNB P1.3, circuito 1 (igual que arriba)
JNB P1.4, circuito. 2 (igual que arriba)
JNB P1.5, circuito 3 (igual que arriba)
Inicio de SJMP (regrese a STRAT, la función del programa anterior es determinar continuamente si se presiona una tecla, y si se presiona una tecla, salta para realizar el procesamiento correspondiente)
Bucle: MOV·P3,A (P3=A, porque A acaba de establecer el valor inicial, por lo que P3 El puerto tiene una luz)
LCALL DEL (llama a la subrutina retrasada para que las personas puedan ver que la luz es brillante)
JNB P1.3, LOOP1 (determina si P1.3). es 0, salta a LOOP1 si es 0)
Mover a la izquierda
bucle SJMP (saltar a bucle)
LOOP1: MOV P3, #. 0FFH (P3 emite un nivel alto, es decir, todas las luces están apagadas)
La función del programa anterior es que, si presiona la tecla de P1.2, se abrirá hacia la izquierda a su vez, hasta que el Se presiona la tecla de P1.3, todas las luces se apagarán
JNB P1.4, LOOP2 (determina si P1.4 es 0, si es 0, salta a LOOP2
JNB P1.5, LOOP3 (determina si P1.5 es 0, salta a LOOP3 si es 0
SJMP (si ni P1.4 ni 1.5 son 0). continúe esperando hasta que uno de ellos sea 0, es decir
Se hayan presionado P1.4 y P1.5)
LOOP2: JNB P1.0, LOOP (determinar si se presiona la tecla P1.0, y salta a LOOP si se presiona)
JNB P1.3, bucle 1 (igual que arriba)
JNB P1.5, circuito 3 (igual como arriba)
MOV·P3, A (P3=A, porque A acaba de establecer el valor inicial, por lo que el puerto P3 tiene una luz)
LCALL DEL (llamada a subrutina retrasada para que la gente pueda ver que la luz está encendida)
Mover hacia la izquierda
SJMP Loop 2
El programa de arriba La función es que si se presiona la tecla P1.4 , se iluminará hacia la izquierda en secuencia y no saltará hasta que se presione la tecla P1.3 o P1.5.
Bucle 3: JNB P1.2, bucle
JNB P1.3, bucle 1
JNB P1.4, bucle 2
MOV·P3
LCALL DEL
RR A
SJMP loop 3
La función del programa anterior es que si presionas Cuando se presiona la tecla P1.5, se iluminará hacia la derecha en secuencia y no saltará hasta que se presione la tecla P1.2, P1.3 o P1.4.
DEL: MOV R5, #02H
MOV·R6
MOV R7, #0F0H
DEL3: DJNZ R7, DEL3
DJNZ R6, DEL2
DJNZ R5, DEL1
El párrafo anterior es el ciclo de máquina del programa de retardo ((15 * 16 * 2+3) * 15*16+3)* 2+1).
Retrasar el retorno del programa
END (dígale al ensamblador que finalice, al igual que ORG, el microcontrolador no ejecuta esta oración)
Corríjame si hay cualquier error! ! ! !