Cómo escribir "programas de retardo múltiple" en lenguaje ensamblador para el microcontrolador at89c51
En el lenguaje ensamblador del microcontrolador, si un programa de retraso se puede llamar en diferentes circunstancias y retrasarse en diferentes momentos, se puede lograr de una manera similar a pasar parámetros en el lenguaje C. Por ejemplo:
p >ORG 0000H
LJMP PRINCIPAL
ORG 0030H
PRINCIPAL:
MOV P0,#5AH ;LED encendido P0 La lámpara se enciende a intervalos
MOV R7,#50; R7 es el parámetro de transferencia de retardo
LCALL DELAY;Llame a la función de retardo
MOV P0,# 0A5H La otra mitad de la luz LED en P0 se enciende
MOV R7,#100;Alarga el tiempo de retardo
LCALL DELAY
MOV P0,#; 00H;LED y todo encendido
MOV R7,#150;Retardo alargado nuevamente
LCALL DELAY
MOV P0,#0FFH;Luz apagada
MOV R7, #200 ;El tiempo de retardo se alarga nuevamente
LCALL DELAY
SJMP MAIN ;Bucle
DELAY:
MOV R2, #100
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
DJNZ R7,DELAY ;R7 es el parámetro pasado asignado antes de la llamada.
RET
FIN