¿Cómo escribir un controlador de iluminación de automóvil usando lenguaje ensamblador de microcontrolador?
ORG 0000H
INICIO LJMP
ORG 1000H
INICIO: MOV SP, #4FH
PRINCIPAL: MOV A, P3
CJNE A, #0FEH, A0; Pruebe si la señal de giro a la izquierda está presionada. Si no, salte al siguiente.
AJMP MAIN
A0: MOV A, P3
CJNE A, #0FDH, A1; prueba si la señal de giro a la derecha está presionada, si no, salta a la siguiente;
TE LLAMA
AJMP PRINCIPAL
A1: MOV A, P3
CJNE A, #0FBH, A2; Si no se presiona, salta a la siguiente prueba
ACALL DAO
AJMP MAIN
MOV A, P3
A2: CJNE A. , #0F7H, A3; Pruebe si la luz de falla está presionada, si no, salte a la siguiente
ACALL GU
AJMP MAIN
A3; : MOV A, P3
CJNE A, #0FAH, A4 pruebe si la luz de marcha atrás y la luz izquierda están presionadas, si no se presionan, salte a la siguiente
ACALL DAOZUO
AJMP MAIN
A4: SETB P0.0
MOV A, P3
CJNE A, #0F9H, A5; se presionan luz de marcha atrás y luz derecha, si no se presiona salta a la siguiente prueba
ACALL DAOYOU
ciclo AJMP MAIN
A5: SETB P0 .0;
MOV A, P3
CJNE A, #0F6H, A6 Pruebe si la luz izquierda del automóvil y la luz de falla están presionadas, si no están presionadas, salte a la siguiente
p>ACALL ZUOGU
AJMP PRINCIPAL
A6: SETB P0.0
MOV A, P3
CJNE A , #0F5H, A7 Pruebe si la luz del automóvil defectuosa y la luz derecha están presionadas; si no, salte a la siguiente prueba
ACALL YOUGU
AJMP MAIN
A7: SETB P0.0
MOV A, P3
CJNE A, #0F3H, A8; pruebe si la luz del automóvil defectuosa y la luz de marcha atrás están presionadas, o salte a la prueba si no están presionados Siguiente
ACALL GUDAO
AJMP MAIN
A8: SETB P0.0 se apaga
MOV. A, P3
CJNE A, #0F2H, A9; Pruebe si la luz de marcha atrás, la luz de falla y la luz izquierda están presionadas
abajo, si no se presiona, salta a la siguiente prueba
ACALL ZUOGUDAO
AJMP MAIN
A9: SETB P0.0 luz apagada
<; p > MOV A, P3CJNE A, #0F1H, A10; pruebe si la luz de marcha atrás, la luz de falla y la luz derecha están presionadas, si no están presionadas, salte a la siguiente etiqueta
> ACALL YOUGUDAO
AJMP MAIN
A10: SETB P0.0; apaga la luz
ACALL DELAY
Ciclo AJMP MAIN; nuevamente comience a probar desde el primero
ZUO: CLR P2.0; luz encendida
ACALL DELAY
luz SETB P2.0 apagada
RETRASO DE LLAMADA
ret
USTED: CLR P2.1 activado
RETARDO DE LLAMADA
SETB P2.1; luz
RETRASO DE LLAMADA
ret
DAO: CLR P0.0; luz encendida
RETARDO DE LLAMADA
ret
GU: SETB P0.0
CLR P1.0; encendido
ACALL DELAY
SETB P1.0 apagado;
RETARDO DE LLAMADA
ret
DAOZUO: CLR P0.0; luz encendida
CLR P2.0
RETRASO DE LLAMADA; apagado
SETB P2.0
RETRASO DE LLAMADA
ret
DAOYOU: CLR P0.0 encendido Luz
CLR P2.1
RETARDO DE LLAMADA AC
SETB P2.1
RETARDO DE LLAMADA AC
ret
ZUOGU: CLR P2.0; luz encendida
CLR P1.0
ACALL DELAY apagada
SETB P2 .0
SETB P1.0
ACALL DELAY
ret
YOUGU: CLR P1.0 se enciende
CLR P2.1
ACALL DELAY; apaga la luz
S
ETB P2.1
SETB P1.0
RETARDO DE LLAMADA
ret
GUDAO: SETB P0.0
CLR P0.0
CLR P1.0; luz encendida
ACALL DELAY; luz apagada
SETB P1.0
ACALL DELAY
ret
ZUOGUDAO: CLR P0.0; luz encendida
CLR P2.0
CLR P1.0 p> p>
RETARDO DE LLAMADA
SETB P2.0; se apaga
SETB P1.0
RETARDO DE LLAMADA
ret
YOUGUDAO: CLR P0.0; luz encendida
CLR P2.1
CLR P1.0
Luz ACALL DELAY; off
SETB P2.1
SETB P1.0
RETARDO DE LLAMADA
ret
RETARDO: ; Subprograma de retardo
MOV R1, #0FFH
LOOP0: MOV R2, #0FFH
LOOP1: NOP
NOP p>
NOP
DJNZ R2, LOOP1
DJNZ R1, LOOP0
RET
END