Colección de citas famosas - Consulta de diccionarios - Control de semáforo de programación MCU (programa fuente de software de búsqueda de onda *.asm)

Control de semáforo de programación MCU (programa fuente de software de búsqueda de onda *.asm)

5. Descripción del diseño

1. Debido a que este diseño es un diseño de control de semáforo, primero es necesario comprender las reglas cambiantes de los semáforos reales. Supongamos que una intersección corre de este a oeste y de norte a sur. El estado inicial 0 son luces rojas en el este y oeste, luces rojas en el norte y sur, luego cambia al estado l, las luces verdes del norte y sur están abiertas al tráfico y las luces del este y oeste son rojas después de una; Durante un período de tiempo, cambia al estado 2, las luces verdes norte y sur parpadean varias veces y se vuelven amarillas, con un retraso de 3 segundos, las luces este y oeste siguen en rojo; regresa al estado 3, el este y el oeste. las luces verdes del oeste están abiertas al tráfico, y las luces del norte y del sur son rojas después de un rato, pasa al estado 4, las luces verdes del este y del oeste parpadean varias veces y luego se vuelven amarillas, con un retraso de 3 segundos, y las luces norte y sur siguen en rojo; luego pasa al estado 1, y así sucesivamente.

2. La clave de la rutina del servicio de interrupción es: (1) Proteger el estado al ingresar a la interrupción y restaurar el estado al ingresar antes de salir de la interrupción. (2) Se debe configurar en el programa de interrupción si se permite el reingreso de la interrupción.

ORG 0000H

AJMP PRINCIPAL

ORG 0003H

LJMP INT

ORG 0040H

PRINCIPAL: MOV SP, #60H

SETB EA

SETB EX0

SETB PX0

SETB IT0

MOV P1, #09H

ACALL DELAY1S

ABC: MOV R0, #3

MOV R1, #3

MOV P1, #0CH

ACALL DELAY1S

DEF:

CLR P1.2

ACALL DELAY2S

SETB P1.2

ACALL DELAY2S

DJNZ R0, DEF

MOV P1, #0AH

ACALL DELAY1S

MOV P1, #11H

ACALL DELAY1S

MOV P1, #21H

ACALL DELAY1S

GHI: CLR P1.5

ACALL DELAY2S

SETB P1.5

ACALL DELAY2S

DJNZ R1, GHI

MOV P1, # 11H

AJMP ABC

INT: CLR EA

PUSH PSW

PUSH ACC

PUSH 05H

PUSH 06H

PUSH 07H

PUSH P1

SETB EA

MOV P1, #09H

ACALL DELAY1S

CLR EA

POP P1

POP 07H

POP 06H

POP 05H

POP ACC

POP PSW

SETB EA

RETI

DELAY1S: MOV R7, #5

DEL: MOV R6, #255

DE: MOV R5, #255

DJNZ R5, $ FOSC=6MHZ

DJNZ R6, DE

DJNZ R7, DEL

RET

DELAY2S: MOV R4, #250

DELL: MOV R3, #250

DJNZ R3, $; FOSC=6MHZ

DJNZ R4, DELL

RET

FIN