交通信号灯模拟控制系统设计 第2页
四、交通信号灯模拟控制系统主程序
ORG 0000H
SJMP A3
ORG 0030H
A3: MOV SP,#60H ;设栈指针初值
MOV A, #24H
MOV P1, A
SETB P3.2
CLR P3.3
CLR P3.4
SETB P3.5 ;全部红灯亮
MOV R4,#00H ;显示0秒
MOV R7,#00H ;显示0秒
MOV R2,#03H
LCALL XI ;调用子程序
A2 : MOV A,#0CH
MOV P1,A
SETB P3.2
SETB P3.3
CLR P3.4
CLR P3.5 ;东西红灯,南北绿灯
MOV R4,#14H ; 显示20秒
LOOP2 : MOV R2,#03H
LCALL XI
DJNZ R4,LOOP2 ;判断20秒显示时间到否
MOV R2,#03H
LCALL XI
LOOP8: MOV R2,#03H ;南北黄灯闪3次
LCALL XI
MOV R4,#05H ;设南北黄灯亮长显示5秒
SETB P3.2
CLR P3.3
A1: MOV A,#14H
MOV P1 ,A
SETB P3.4
CLR P3.5 ;东西红灯,南北黄灯
MOV R2,#01H ;定时
LCALL DELAY ;调用延时子程序
MOV A ,#04H
MOV P1 ,A
CLR P3.4
CLR P3.5 ;东西红灯,南北不亮即意思要南北黄灯闪烁
MOV R2 ,#01H ;定时
LCALL DELAY
DJNZ R4,LOOP8 ;判断南北黄灯闪烁,显示5秒到否?
MOV A, #61H
MOV P1,A
CLR P3.2
CLR P3.3
CLR P3.4
SETB P3.5 ;东西绿灯,南北红灯
MOV R4,#14H ;显示20秒
LOOP3:
MOV R2,#03H
LCALL XI
DJNZ R4,LOOP3 ;判断20秒显示时间到否
MOV R7,#05H ;设东西黄灯亮长显示5秒
SETB P3.5
A0: MOV A,#0A2H
MOV P1,A
CLR P3.2
CLR P3.3
CLR P3.4 ;东西黄灯,南北红灯
MOV R2,#01H ;定时
LCALL DELAY
MOV A,#20H ;
MOV P1,A
CLR P3.2
CLR P3.3
CLR P3.4 ;南北红灯,东西不亮即意思要东西黄灯闪烁
MOV R2,#01H ;定时
LCALL DELAY
DJNZ R7,A0 ;判断东西黄灯闪烁,显示5秒到否?
LJMP A2 ;循环回状态1,即东西红灯,南北黄灯
DELAY: PUSH 2
PUSH 1
PUSH 0 ;进栈
DELAY1: MOV 1,#00H
DELAY2:MOV 0,#0B2H
DJNZ 0,$ ;判断是否运行完0B2H
DJNZ 1,DELAY2
DJNZ 2,DELAY1
POP 0
POP 1
POP 2 ;出栈
DJNZ R2 ,DELAY ; 判断R2是否运行完
RET ;返回主程序
XI: MOV A,R4
MOV B,#10
DIV AB
MOV R6,A
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
H55S: DJNZ R7,H55S
MOV A,R6
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
H55S1: DJNZ R7,H55S1
LCALL DELAY
RET
TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
END