Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo escribir un controlador de iluminación de automóvil usando lenguaje ensamblador de microcontrolador?

¿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, P3

CJNE 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>

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

NOP

DJNZ R2, LOOP1

DJNZ R1, LOOP0

RET

END