完整word版Proteus实现单片机交通灯图+程序调试可用Word格式文档下载.docx
《完整word版Proteus实现单片机交通灯图+程序调试可用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整word版Proteus实现单片机交通灯图+程序调试可用Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
=1时东西红灯亮,=2时东西绿灯亮,=3时东西黄灯亮
EWLEDDATAINITEQU36H;
存储东西各颜色灯的初始时间
org0000h
lJMPMAIN
org0003h
ljmpexint0
ORG000BH
lJMPINTT0
org0013h
ljmpexint1
org0100h
;
主函数**************************************
MAIN:
CALLINIT
START:
MOVA,COUNT
CJNEA,#200,NOT1S;
没到1秒跳转
MOVCOUNT,#00;
1秒时间到
DECSNLEDDATA
MOVA,SNLEDDATA
JNZcheckewleddata
MOVSNLEDDATA,SNLEDDATAINIT
INCSNCOLORFLAG
MOVA,SNCOLORFLAG
CJNEA,#04,checkewleddata
MOVSNCOLORFLAG,#01
checkewleddata:
DECEWLEDDATA
MOVA,EWLEDDATA
JNZtimenotover
MOVEWLEDDATA,EWLEDDATAINIT
INCEWCOLORFLAG
MOVA,EWCOLORFLAG
CJNEA,#04,timenotover
MOVEWCOLORFLAG,#01
TIMENOTOVER:
NOT1S:
callewcolorcheck
CALLsnCOLORCHECK
CALLDISPLAY
JMPSTART
*********************************************
初始化函数***********************************
INIT:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#0eCH
MOVTL0,#078H
MOVCOUNT,#00H
MOVSNLEDDATAINIT,#15
MOVEWLEDDATAINIT,#18
SETBTR0;
开定时器0
SETBET0;
允许定时器0中断
setbex0;
允许外部0中断
setbex1;
允许外部1中断
setbit0;
外部中断0下降沿触发
setbit1;
外部中断1下降沿触发
SETBEA;
开总中断
MOVP2,#0feH
MOVSNCOLORFLAG,#01
MOVEWCOLORFLAG,#01
RET
*****************************************
外部中断0***********************************
exint0:
pushacc
pushpsw
mova,p0
mova,p1
mova,p2
clrex1
clrp2.0
clrp2.1
clrp2.2
clrp2.3
setbp1.4
clrp1.1
clrp1.2
setbp1.5
clrp1.3
clrp1.4
jnbp3.2,$
setbex1
popacc
movp2,a
movp1,a
movp0,a
poppsw
reti
外部中断1***********************************
exint1:
clrex0
setbp1.2
clrp1.0
setbp1.3
clrp1.5
jnbp3.3,$
setbex0
reti
T0中断函数*******************************
INTT0:
PUSHACC
PUSHPSW
MOVTH0,#0ecH;
#0ech
MOVTL0,#078H;
#078h
MOVA,P2
RLA
CJNEA,#11101111B,NOT5
MOVA,#0feH;
p2.0=0,南北数码管十位亮,p2.1=0,南北数码管个位亮
NOT5:
MOVP2,A;
p2.2=0,东西数码管十位亮,p2.3=0,东西数码管个位亮
INCCOUNT
POPPSW
POPACC
RETI
****************************************
南北红绿黄灯控制**************************
snCOLORCHECK:
PUSHACC
PUSHB
PUSHPSW
sngreen:
CJNEA,#01,snYELLOW
MOVSNLEDDATAINIT,#03;
设置南北黄灯闪烁时间
CLRP1.2
CLRP1.1
SETBP1.0;
南北绿灯亮
JMPsnCOLORCHECKOUT
snYELLOW:
;
MOVA,SNCOLORFLAG
CJNEA,#02,snred
MOVSNLEDDATAINIT,#18;
设置南北红灯亮时间
MOVB,#100
DIVAB
MOVA,B
CJNEA,#00H,snNOTFLASH
CPLP1.1;
南北黄灯闪烁
CLRP1.0
snNOTFLASH:
snred:
MOVSNLEDDATAINIT,#15;
设置南北绿灯亮时间
SETBP1.2;
南北红灯亮
snCOLORCHECKOUT:
POPB
RET
******************************************************
东西红绿黄灯控制**************************************
ewCOLORCHECK:
ewred:
MOVA,ewCOLORFLAG
CJNEA,#01,ewyellow
MOVewLEDDATAINIT,#15;
设置东西绿灯亮时间
CLRP1.3
CLRP1.4
SETBP1.5;
东西红灯亮
JMPewCOLORCHECKOUT
ewyellow:
MOVA,ewCOLORFLAG
CJNEA,#03,ewgreen
MOVewLEDDATAINIT,#18;
设置东西红灯亮时间
CJNEA,#00H,ewNOTFLASH
CPLP1.4;
东西黄灯闪烁
CLRP1.5
ewNOTFLASH:
ewgreen:
MOVewLEDDATAINIT,#03;
设置东西黄灯闪烁时间
SETBP1.3;
东西绿灯亮
ewCOLORCHECKOUT:
************************************************************
数码管显示**************************************************
DISPLAY:
MOVB,#10
MOVR0,B
MOVR1,A
MOVR2,B
MOVR3,A
MOVDPTR,#TABLE
DISPSNH:
CJNEA,#0feH,DISPSNL
MOVA,R1
MOVCA,@A+DPTR
MOVP0,A
JMPDISPOUT
DISPSNL:
CJNEA,#0fdH,DISPEWH
MOVA,R0
JMPDISPOUT
DISPEWH:
CJNEA,#0fbH,DISPEWL
MOVA,R3
JMPDISPOUT
DISPEWL:
CJNEA,#0f7H,DISPOUT
MOVA,R2
DISPOUT:
RET
**************************************************
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
0123456789
END