Red de conocimiento informático - Conocimiento del nombre de dominio - Solicitud urgente: Control de semáforo con 51 microcontroladores

Solicitud urgente: Control de semáforo con 51 microcontroladores

ORG 0000H; Dirección de entrada del programa principal

LJMP MAIN; Saltar al principio del programa principal

ORG 0003H Interrumpir la entrada del programa de interrupción externa; 0 Dirección

ORG 000BH; Dirección de entrada del programa de interrupción del temporizador 0

LJMP T0_INT; Saltar a la rutina de servicio de interrupción

ORG 0013H Interrupción externa 1 Interrupción del programa; dirección de entrada

PRINCIPAL: MOV SP, #50H

MOV IE, #8EH; la CPU activa la interrupción, permite la interrupción T0, la interrupción T1 y la interrupción externa 1

MOV TMOD, #51H; configure T1 en modo de conteo, T0 en modo de sincronización y ambos funcionan en modo 1

MOV TH1, #00H; Borre el contador T1

MOV TL1; , #00H

SETB TR1; Iniciar temporizador T1

SETB EX1; Permitir interrupción INT1

SETB IT1; Seleccionar modo de disparo de borde

MOV DPTR, #0003H

MOV A, #80H; Asignar valor inicial a 8255, 8255 funciona en modo 0

MOVX @DPTR, A

OTRA VEZ: JB P3.1, N0; determine si se debe establecer el valor inicial del tiempo del semáforo este-oeste, si P3.1 es 1, salte

MOV A, P1

JB; P1.7, RED; determine si P1.7 es 1. Si es 1, configure el tiempo de luz roja; de lo contrario, configure el tiempo de luz verde

MOV R0, #00H;

MOV R0, A; almacena el tiempo inicial de luz verde este-oeste

MOV R3, A

LCALL DISP1

LCALL DELAY

AJMP OTRA VEZ

ROJO: MOV A, P1

ANL A, #7FH; P1.7 está configurado en 0

MOV R7, # 00H se borra R7

MOV R7, A; almacena el tiempo inicial de la luz roja este-oeste

MOV R3, A

LCALL DISP1

p>

RETRASO DE LLAMADA

AJMP OTRA VEZ

--------------------------; -------- ---------

N0: SETB TR0; iniciar temporizador T0

MOV 76H, R7; el tiempo de luz roja se almacena en 76H

N00: MOV A, 76H; la dirección este-oeste está prohibida, se permite la dirección norte-sur

MOV R3, A

MOV DPTR, #0000H; configurado en el puerto 8255A, la luz roja está encendida en dirección este-oeste y la luz verde está encendida en dirección norte-sur.

MOV A, #0DDH

MOVX @DPTR, A

N01: JB P2.0, B0

N02: SETB P3.0

CJNE R3, #00H, N01; comparar si el valor en R3 es 0, y si no es 0, girar Ir al comando actual y ejecutar

;------La luz amarilla parpadea durante 5 segundos, programe------

N1: SETB P3.0

MOV R3, #05H

MOV DPTR, #0000H; al puerto 8255A, este-oeste, norte-sur luz amarilla encendida

MOV A, #0D4H

MOVX @ DPTR, A

N11: MOV R4, #00H

N12: CJNE R4, #7DH, $; la luz amarilla permanece encendida durante 0,5 segundos

N13: MOV DPTR, #0000H; configure el puerto 8255A, la luz amarilla está encendida la dirección norte-sur está apagada

MOV A, #0DDH

MOVX @DPTR, A

N14: MOV R4, #00H

CJNE R4, #7DH, $; la luz amarilla continúa apagada por 0.5 segundos

CJNE R3, #00H, N1 el tiempo de parpadeo llega a 5 segundos y se apaga

-------------------------------------------------- -------------

N2: MOV R7, #00H

MOV A, R0; circulación este-oeste, norte-sur prohibido

MOV R3, A

MOV DPTR, #0000H; configurado en el puerto 8255A, la luz verde en dirección este-oeste está encendida, la luz roja en dirección norte-sur está encendida

MOV A, #0EBH

MOVX @DPTR, A

N21: JB P2.0, T03

N22: CJNE R3 , #00H, N21

;----- -Programa de luz amarilla intermitente durante 5 segundos------

N3: MOV R3, #05H

MOV DPTR, #0000H; Establezca el puerto 8255A, este-oeste, norte-sur, la luz amarilla está encendida

MOV A, #0E2H

MOVX @DPTR, A

N31: MOV R4, #00H

CJNE R4, #7DH , $; la luz amarilla permanece encendida durante 0,5 segundos

N32: MOV DPTR, #0000H; Configure el puerto 8255A, la luz amarilla se apaga en las direcciones norte y sur

MOV A, #0EBH

MOVX @D

PTR, A

N33: MOV R4, #00H

CJNE R4, #7DH, $; la luz amarilla permanece apagada por 0.5 segundos

CJNE R3, #00H, N3; Salir si el tiempo de parpadeo alcanza los 5 segundos

SJMP N00

------Programa de alarma de luz roja------

B0: MOV R2, #03H; La duración de la alarma es de 3 segundos

B01: MOV A, R3

JZ N1; ya no ocurre

CLR P3.0; Alarma

CJNE R2, #00H, B01; Determinar si han transcurrido 3 segundos

SJMP N02

; ------Subrutina de retardo de 1 segundo -------

N7: RETI

T0_INT: MOV TL0, #9AH; 10 ms al temporizador T0

MOV TH0, #0F1H

INC R4

INC R5

CJNE R5, #0FAH, T01; si el retraso es suficiente para un segundo o no. Luego llame a la subrutina de visualización

MOV R5, #00H Clear R5

DEC R3 Disminuya el valor de cuenta regresiva inicial en uno

DEC R2; Disminuir el valor de alarma inicial 1

T01: ACALL DISP; Llamar a la subrutina de visualización

RETI; ----Mostrar subrutina----- -

DISP: JNB P2.4, T02

DISP1: MOV B, #0AH

MOV A , R3 mediana de dos a diez conversión de pantalla

DIV AB

MOV 79H, A

MOV 7AH, B

DIS: MOV A, 79H; muestra el dígito de las decenas

p>

MOV DPTR, #TAB

MOVC A, @A DPTR

MOV DPTR, #0002H

MOVX @DPTR, A

MOVX @DPTR, #0001H

MOV A, #0F7H

MOVX @DPTR, A

RETARDO DE LLAMADA

DS2: MOV A, 7AH; muestra los dígitos

MOV DPTR, #TAB

MOVC A, @A DPTR

MOV DPTR, #0002H

MOVX @DPTR,A

MOV DPTR, #0001H

MOV A, #0FBH

MOVX @DPTR, A

RET

----- -Programa de detección de flujo de tráfico en dirección este-oeste------

T03: MOV A, R3

SUBB A, #00H Si se completa la cuenta regresiva de la luz verde; , ya no se detectará el flujo de tráfico

JZ N3

JB P2.0, T03

INC R7

CJNE R7, #64H, E1

MOV R7, #00H; despejado después de 100 interrupciones

E1: SJMP N22

------Tráfico este-oeste programa de visualización de flujo----- -

T02: MOV B, #0AH

MOV A, R7 mediana de conversión de visualización de dos a diez

DIV AB

MOV 79H, A

MOV 7AH, B

DIS3: MOV A, 79H; muestra dígitos de decenas

MOV DPTR, #TAB

MOVC A, @A DPTR

MOV DPTR, #0002H

MOVX @DPTR, A

MOV DPTR, # 0001H

MOV A, #0F7H

MOVX @DPTR, A

LCALL DELAY

DS4: MOV A, 7AH; dígito

MOV DPTR, #TAB

MOVC A, @A DPTR

MOV DPTR, #0002H

MOVX @DPTR, A

MOV DPTR, #0001H

MOV A, #0FBH

MOVX @DPTR, A

LJMP N7

;---- --Subrutina Delay 4MS----------

RETARDO: MOV R1, #0AH

BUCLE: MOV R6, #64H

NOP

LOOP1: DJNZ R6, LOOP1

DJNZ R1, LOOP

RET

-- ----Tabla de caracteres ------

TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH

END