开始 R2<-33 R3<-100
R4<-75 NOPNOP DJNZ R4 DJNZ R3 DJNZ R2 返回 图6 1秒延时子程序流程图
2.2.3 夜间模式子程序
系统在主程序中已经完成中断初始化,在正常模式下,其随时可通过中断0进入夜间模式,不受当时通行方向的影响。夜间模式中,交通灯每45秒改变一次通行方向,使得南北和东西交替通行。其流程图如图7。其程序为: YEJIAN: MOV R0,#00H ;夜间模式 MOV P2,R0 ;灯全灭
- 9 -
SETB P2.7 ; 南北绿灯亮 SETB P2.1 ;东西红灯亮 ACALL DISPLAY1 ;显示倒计时 ACALL FLASHN ;南北方向绿灯闪烁 CLR P2.7 ;南北绿灯灭 SETB P2.6 ;南北黄灯亮 ACALL DELAY2 ;短延时2 CLR P2.6 ;南北黄灯灭 CLR P2.1 ;东西红灯灭 SETB P2.3 ;东西绿灯亮 SETB P2.5 ;南北红灯亮 ACALL DISPLAY1 ;显示倒计时 ACALL FLASHS ;东西方向绿灯闪烁 CLR P2.3 ;东西绿灯灭 SETB P2.2 ;东西黄灯亮 ACALL DELAY2 ;短延时2 CLR P2.2 ;东西黄灯灭
LJMP YEJIAN
开始 外部中断0初始化 进入夜间工作状态 南北10秒倒计时显示 东西10秒倒计时显示
- 10 -
图7 夜间工作模式
2.2.4 绿灯闪烁子程序
每到同行方向转换时,绿灯闪烁,提醒司机注意通行方向的改变,避免不必要的危险。绿灯闪烁的程序分南北方向和东西方向,以南北方向为例,流程图如图8所示,其程序为: SETB P2.7
;南北方向绿灯闪烁子程序
;短延时1 ;灭南北方向绿灯 ;短延时1 ;循环3次 ;重装循环次数
ACALL DELAY1 CLR
P2.7
ACALL DELAY1 DJNZ MOV RET
R6,FLASHN R6,#3
开始 亮绿灯 延时 灭绿灯 R6<-R6-1 R6=0? 返回 图8 绿灯闪烁子程序流程图
2.2.5 显示倒计时子程序
通过LED显示器显示距离换向时间还剩多少,利于司机调整车辆状况,其程
- 11 -
序为:
DISPLAY:MOV R0,#44
MOV
R7,#45
;显示子程序
;循环次数 ;表地址送DPTR ;秒数送A ;查表
;查表得BCD送P1 ;秒数减一 ;延时一秒 ;循环 ;返回
L1: MOV
MOV MOVC MOV DEC
DPTR,#TABLE A,R0
A,@A+DPTR P1,A R0
ACALL DELAY DJNZ RET
R7,L1
此程序是通过循环查表来实现倒计时显示的,其流程图如图9所示:
开始 R0<-44 R7<-45 DPTR<-#TABLE 查表,把BCD码送P1 R0<-R0-1 延时1秒 R7<-R7-1 R7=0? 返回
- 12 -
相关推荐: