Haré modificaciones a mi programa de marquesina 89c51: Hay un total de 8 tubos luminosos, y la luz se emitirá de ambos lados hacia el medio, y luego desde el medio hacia ambos lados, y el ciclo continuará.
:
ORG 0000H ;El programa comienza desde 0.
LJMP MAIN ;Vaya al programa principal.
ORG 0030H ; El programa principal Dirección de inicio del almacenamiento del programa.
PRINCIPAL: MOV P1, #0FFH; Todas las luces están apagadas 11111111
MOV R2, #0FEH Estado inicial: configurado para encender una luz; en el costado 1111 1110
MOV R3, #7FH; Estado inicial: configurado para encender una luz en el costado 0111 1111
LOOP: MOV A, R2
ANL A, R3 ;A = 0111 1110
MOV P1, A ;Envía el estado de iluminación configurado al puerto P1 (entrada del circuito)
LCALL TIMEER ;Llama al programa de retardo, Retraso por un tiempo.
MOV A, R2
RL A ; Mueve la posición del estado de la luz hacia la izquierda una posición.
MOV R2, A
MOV A, R3
RR A ; Mueve la posición del estado de la luz hacia la derecha una posición.
MOV R3, A
SJMP LOOP; Vaya a la entrada del bucle y siga moviendo la posición de la luz.
TIMEER: MOV R5, #08H (El siguiente es el programa de retardo)
LOOP1; : MOV R6, #0FAH
LOOP2: MOV R7, #0FAH
LOOP3: DJNZ R7, LOOP3
DJNZ R6, LOOP2
DJNZ R5, LOOP1
RET
END