文档详情

Proteus实现单片机交通灯_图+程序(调试可用).doc

发布:2017-09-18约5.34千字共18页下载文档
文本预览下载声明
这是我初学单片机,并用Proreus软件自己绘制自己编写程序实现的一个交通红绿灯的系统。这是硬件连接图和程序,以便今后复习。 左 上 右 下 中控制部分,上面一个开关按下时,南北方向绿灯,东西方向红灯 黄灯闪烁3秒 绿灯设置15秒,红灯设置18秒。绿灯走完15秒后黄灯闪烁3秒变为红灯,红灯走完18秒后变成绿灯,以此循环。 源程序: COUNT EQU 30H ;T0中断计数 SNLEDDATA EQU 31H ;存储南北数码管显示的数据 SNCOLORFLAG EQU 32H ;=1时南北绿灯亮,=2时南北黄灯亮,=3时南北红灯亮 SNLEDDATAINIT EQU 33H ;存储南北各颜色灯的初始时间 EWLEDDATA EQU 34H ;存储东西数码管显示的数据 EWCOLORFLAG EQU 35H ;=1时东西红灯亮,=2时东西绿灯亮,=3时东西黄灯亮 EWLEDDATAINIT EQU 36H ;存储东西各颜色灯的初始时间 org 0000h lJMP MAIN org 0003h ljmp exint0 ORG 000BH lJMP INTT0 org 0013h ljmp exint1 org 0100h ;主函数************************************** MAIN: CALL INIT START: MOV A,COUNT CJNE A,#200,NOT1S ;没到1秒跳转 MOV COUNT,#00 ;1秒时间到 DEC SNLEDDATA MOV A,SNLEDDATA JNZ checkewleddata MOV SNLEDDATA,SNLEDDATAINIT INC SNCOLORFLAG MOV A,SNCOLORFLAG CJNE A,#04,checkewleddata MOV SNCOLORFLAG,#01 checkewleddata: DEC EWLEDDATA MOV A,EWLEDDATA JNZ timenotover MOV EWLEDDATA,EWLEDDATAINIT INC EWCOLORFLAG MOV A,EWCOLORFLAG CJNE A,#04,timenotover MOV EWCOLORFLAG,#01 TIMENOTOVER: NOT1S: call ewcolorcheck CALL snCOLORCHECK CALL DISPLAY JMP START ;********************************************* ;初始化函数*********************************** INIT: MOV SP,#60H MOV TMOD,#01H MOV TH0,#0eCH MOV TL0,#078H MOV COUNT,#00H MOV SNLEDDATAINIT,#15 MOV EWLEDDATAINIT,#18 MOV SNLEDDATA,SNLEDDATAINIT MOV EWLEDDATA,EWLEDDATAINIT SETB TR0 ;开定时器0 SETB ET0 ;允许定时器0中断 setb ex0 ;允许外部0中断 setb ex1 ;允许外部1中断 setb it0 ;外部中断0下降沿触发 setb it1 ;外部中断1下降沿触发 SETB EA ;开总中断 MOV P2,#0feH MOV SNCOLORFLAG,#01 MOV EWCOLORFLAG,#01 RET ;***************************************** ;外部中断0*********************************** exint0: push acc push psw mov a,p0 push acc mov a,p1 push acc mov a,p2 push acc clr ex1 clr p2.0
显示全部
相似文档