1、4: 数码管显示:红灯-前20S不显示,只在最后5S开始倒计时显示。绿灯-前15S不显示,只在最后5S开始倒计时显示。黄灯-3S倒计时显示(若东西路为黄灯,南北路为红灯,那么南北绿的数码管也显示3S)。5:交通应急事件处理:利用中断分别实现东西路-南北路的交通应急事件处理。6:延时程序的使用:用循环延时和定时器计时的方法。注:P1.0-北路绿灯,P1.1-北路黄灯,P1.2-北路红灯。P1.3-东路绿灯,P1.4-东路黄灯,P1.5-东路红灯。【交通灯流程图】开始南北路绿灯亮,红,黄灯灭东西路红灯亮,绿,黄灯灭延时20秒南北路绿灯数码管开始倒计时5秒其他灯不变5秒倒计时结束南北路绿灯灭,黄灯亮
2、且数码管开始倒计时3秒东西路红灯数码管开始倒计时3秒3秒倒计时结束东西路绿灯亮,黄灯,红灯灭南北路红灯亮,黄灯,绿灯灭延时25秒东西路数码管开始倒计时5秒东西路绿灯灭,黄灯亮且数码管开始倒计时3秒南北路红灯数码管开始倒计时3秒程序如下:ORG 0000HLJMP LOOPORG 000BH ;定时器0中断,实现交通应急事件LJMP WZD0ORG 0013H ;外部中断1,实现交通应急事件LJMP WZD1ORG 0030HLOOP: MOV R3,#5 MOV R4,#5 MOV R2,#20 MOV SP,#70H MOV IE,#85H MOV TMOD,#01H ;置T0为工作方式1
3、MOV TH0,#3CH ;置T0定时初值50ms MOV TL0,#0B0H CLR TF0 SETB TR0 ;启动定时器T0 SETB P1.1 ;东-红灯亮,北-绿灯亮 SETB P1.2 CLR P1.0 SETB P1.3 SETB P1.4 CLR P1.5 ACALL DEL30S ACALL YELLOW1 ;北-绿灯转黄灯,东-红灯亮 ACALL DEL3S ;延时后北-黄灯灭 SETB P1.0 ;东:红灯灭,绿灯亮,北:黄灯灭,红灯亮。 SETB P1.1 CLR P1.3 CLR P1.2 SETB P1.5 ACALL DEL55S ;北-红灯不变,东-绿灯转黄灯
4、ACALL YELLOW2 ACALL DEL3S SJMP LOOPYELLOW1: ;北-绿灯转黄灯,东-红灯不变 SETB P1.0 CLR P1.1 RETYELLOW2:东-绿灯转黄灯,北-红灯不变 CLR P1.4WZD0: ;实现南北路交通应急事件 CLR P1.0 ; (南北路保持畅通,东西路停止通行) JNB P3.2,WZD0 RETIWZD1: ;实现东西路交通应急事件 CLR P1.3 ; (东西路保持畅通,南北路停止通行) JNB P3.3,WZD1 RETI DEL30S:红绿灯延时DEL25S:JNB TF0,DEL25S ;查询50ms到否 CLR TF0 恢复
5、T0定时初值50ms MOV TL0,#0B0H DJNZ R2,DEL25S ;判断1s到否?未到继续状态1 MOV R2,#20 ;置50ms计数初值 DJNZ R4,DEL25S ;状态1维持25sDEL5S:取数延时 MOV R2,#6DEL5: MOV A,R2 ACALL ST ;取数 MOV P0,A ;实现数码管显示 ACALL DEL1S ;每隔1S减1 DJNZ R2,DEL5DEL3S: MOV R2,#4HDEL3: MOV P2,A数码管显示 ACALL DEL1S DJNZ R2,DEL3DEL55S: ACALL DEL20S MOV R2,#6 ;倒计时5SDEL55:ACALL ST MOV P2,A ; DJNZ R2,DEL55DEL1S:1S延时子程序 MOV R5,#0BHST1: MOV R6,#0DAHST2: MOV R7,#0CFH DJNZ R7,$ DJNZ R6,ST2 DJNZ R5,ST1RETDEL20S: ;20S延时子程序 MOV R5,#0BH;#0DCHST3:ST4: DJNZ R6,ST4 DJNZ R5,ST3ST: ; MOV DPTR,#TAB MOVC A,A+DPTRTAB:DB 0FFH,0FFH,0F9H,0A4H,0B0H,99H,92HEnd
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1