Programa en lenguaje ensamblador de lámpara de agua que fluye
ORG 0000H; inicio del programa
SJMP START; saltar a INICIO
ORG 0050H; INICIO inicia el almacenamiento desde ROM 0050H
INICIO: MOVE P1.0, #00000001B; envía el número binario 00000001B al puerto P1
LCALL DELAY; llama a la subrutina de retardo
MOVE P1.0, #00000010B; El número 00000010B se envía al puerto P1
LCALL DELAY
MOVER P1.0, #00000100B
LCALL DELAY
MOVER P1.0 , #00001000B
RETARDO DE LLAMADA
MOVER P1.0, #00010000B
RETARDO DE LLAMADA
MOVER P1.0, #00100000B
p>RETARDO LLAMADA LC
MOVER P1.0, #01000000B
RETARDO LLAMADA LC
MOVER P1.0, #10000000B
LCALL DELAY
LJMP START; salta a START
; retrasa la subrutina DELAY, cambia los valores en R5, R6, R7 (0 a 255) para cambiar el Tiempo de retardo
DELAY: MOV R5, #20; ponga 20 en el registro R5,
D1: MOV R6, #20
D2: MOV R7, # 248
DJNZ R7, $; Disminuye el contenido en el registro R7 en 1. Si el resultado no está fijo en 0, salta a sí mismo. Si es igual a 0, ejecuta el siguiente programa.
DJNZ R6, D2; Disminuye el contenido en el registro R6 en 1. Si el resultado no está fijo en 0, salta a sí mismo. Si es igual a 0, salta a D2
DJNZ R5, D1
RET
FIN