¡El ensamblaje de MCU llama a subrutinas repetidamente! Esta subrutina debe usarse en diferentes lugares. ¿Cómo ajustarla? ¿Para qué se utiliza RET?
Para llamar a una subrutina, simplemente ingrese LCALL XXXX, XXXX representa el nombre de su subrutina, como una subrutina de retraso LCALL DELY1MS. Esto es para llamar a una subrutina de retraso con un retraso de 1 milisegundo. la subrutina El nombre lo puedes decidir tú mismo
DELY1MS: Este nombre debe ser el mismo que aparece en la llamada, de lo contrario, esta subrutina no será llamada
MOV R7 ,#250
DL1: NOP
NOP
DJNZ R7,DL1
RET
La función de RET es regresar de la subrutina. Llamar a una subrutina Cuando el microcontrolador ejecuta la instrucción RET, el microcontrolador regresará al lugar de llamada y continuará la ejecución.
Aquí tienes una rutina:
Luz intermitente
ORG 00H
AJMP START
ORG 30H
INICIO:MOV P0,#00H
LCALL DELY; subrutina de retardo de llamada
MOV P0,#0FFH
LCALL DELY ;Llamada subrutina de retardo
AJMP START
DELY:MOV R7,#250
DL1:MOV R6,#250
DJNZ R6,$
DJNZ R7,DL1
RET
END
Como puedes ver en este programa, la subrutina se puede llamar. Sin embargo, la llamada a la subrutina debe regresar al final; de lo contrario, el programa quedará atrapado en la subrutina y no podrá salir, y el programa no podrá usarse.