Principio de semáforo basado en 51 microcontroladores
Tenga en cuenta que el puerto p0 es la luz roja este-oeste
; el puerto p1 es la luz amarilla este-oeste
; luz verde
;p3 luces rojas norte y sur
; p4 luces amarillas norte y sur
; p5 luces verdes norte y sur
>; la luz verde permanece durante 3 segundos; la luz amarilla parpadea 5 veces, 0,2 segundos cada vez, la roja permanece 4 segundos
ORG 0000H
LJMP MAIN
ORG 0030H
PRINCIPAL:MOV DPTR,#B1
MOV R2,#4
MOV A,#0H
F3:MOV R1,A
MOVC A,@A+DPTR
JNB ACC.4,SS1; Determine si la luz amarilla en dirección este-oeste está encendida. Si está encendida, transfiera al. programa de luz amarilla intermitente
JNB ACC.1,SS2; determine si la luz amarilla en la dirección norte-sur está encendida. Si está encendida, luego transfiérala al programa de luz amarilla intermitente.
MOV P1,A
LCALL DY1S
SS:MOV A,R1
INC A
DJNZ R2,F3 p>
SJMP PRINCIPAL
SS1:MOV R0,#10
XH1:CPL ACC.4
MOV P1,A
LCALL DYS
DJNZ R0,XH1
SJMP SS
SS2:MOV R0,#10
XH2:CPL ACC. 1
MOV P1,A
LCALL DYS
DJNZ R0,XH2
SJMP SS
DY1S: MOV R5,#30
DLP0:MOV R6,#100
DLP1:MOV R7,#250 ;F=6MHZ
DLP2:DJNZ R7,DLP2 ;2X250X2uS=1ms
DJNZ R6,DLP1 ;1x100=0.1S
DJNZ R5,DLP0 ;0.1X30=3s
p>
RET
DYS:MOV R6,#200
DLP3:MOV R7,#250 ;F=6MHZ
DLP4:DJNZ R7, DLP4 ;2X250X1uS=500us=1ms
DJNZ R6,DLP3 ;1x200=0.2S
RET
B1: DB 11011110B,11101110B,11110011B,11110101B
p>FIN