资源描述:
《长安大学微机课设交通信号灯控制系统代码(含注解)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、;本系统先状态1:南北红灯亮33秒,东西绿灯亮30秒,状态2:东西黄灯0.5秒闪烁3秒,南北红灯亮,;状态3:东西红灯33秒,南北绿灯30秒,状态4:东西红灯亮,南北黄灯闪烁3秒。依次循坏.MODELSMALL.8086.STACKDSEGSEGMENTLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;A口地址负责红绿灯显示输出;B口地址负责倒计时;C口地址负责位选;控制寄存器地址;数码竹的段选ADW0200HBDW0202HCDW0204HCONTROLDW0206HKIDBODHK2DBOEHK3DB07HK4DB0BHK5DBOFHN
2、UMDB33,30N_RED_W_GREENDB36HN_RED_W_YELLEWDB35HE_RED_S_GREENDB63HE_RED_S_YELLEWDB53HDSEGENDS.CODEASSUMEDS:DSEGSTART:;左侧数码管的低位位选;左侧高位位选;右侧低位位选;右侧高位位选;位清零;第一个数据控制左侧显示第二个数据控制右侧显示;南北红灯亮,东西绿灯亮;南北红灯亮,东西黄灯闪烁;东西红灯亮,南北绿灯亮;东西红灯亮,南北黄灯闪烁MOVAX,DSEGMOVDS,AXXORAX,AXMOVES,AXMOVSI,0008H;数据段初始化;NMI中断向量MOVAX,OFF
3、SETWORDPTRINTERRUPT;取中断服务程序的IP地址MOVES:[SI],AX;MOVAX,CS;取中断服务程序的段地址INCSIINCSIMOVES:[SI],AX;将屮断服务程序的段地址及ip放在屮断类型码2的位置CALLINIT8255CALLINIT8253CYCLE1:MOVDX,A;红绿灯显示输出,A口MOVAL,OFFH;灯显示清零,共阳极管OUTDX,ALMOVAL,N_RED_W_GREEN;先南北红灯亮,东西绿灯亮OUTDX,ALMOVNUM,21H;给NUM赋值南北红33秒,东西绿30秒,东西黄灯闪烁3秒MOVNUM+1,1EHCYCLE11:C
4、ALLDISPLAYMOVAL,NUMCMPAL,03H;如果NUM大于3,则循环CYCLE11,此时红灯倒计时和绿灯倒计时JNBECYCLE11;大于等于时跳转MOVDX,AMOVAL,OFFHOUTDX,ALMOVAL,N_RED_W_YELLEW;南北红灯亮,东西黄灯亮OUTDX,ALMOVAL,NUM;黄灯和红灯显示是一致MOVNUM+1,ALCYCLE12:CALLDISPLAYMOVAL,NUMCMPAL,OOH;如果NUM大于0,则循环cyclel2,此时红灯和黄灯倒计时JNBECYCLE12MOVNUM,1EH;给NUM重新赋值南北绿灯30秒,东西红灯33秒,南北
5、红灯3秒MOVNUM+1,21HMOVDX,AMOVAL,OFFHOUTDX,ALMOVAL,E_RED_S_GREEN;东西红灯亮,南北绿灯亮OUTDX,ALCYCLE13:CALLDISPLAYMOVAL,NUM+1CMPAL,03HJNBECYCLE13MOVDX,AMOVAL,OFFHOUTDX,ALMOVAL,E_RED_S_YELLEW;东西红灯亮,南北黄灯闪烁OUTDX,ALMOVAL,NUM+1MOVNUM,ALCYCLE14:CALLDISPLAY;如果NUM+1的值人于0,则循坏红灯和黄灯倒计时MOVAL,NUM+1CMPAL,OOHJNBECYCLE14;东
6、南酋北红绿灯依次循坏JMPCYCLE1DISPLAYNEARPROCMOVDX,BMOVAL,OOHOUTDX,ALMOVDX,CMOVAL,K5OUTDX,ALCALLDELAY;显示子程序;B口,数码管段选显示输出;段选清零;数码管位选输出;位选清零;延时子程序,实现动态循坏显示XORAX,AXMOVAL,NUMMOVBL,OAHDIVBLXORBX,BXMOVBLZALMOVAL,LED+[BX]MOVDX,BOUTDX,ALMOVDX,CMOVAL,K1OUTDX,ALCALLDELAY;左侧数码管显示数据;除数10,后续分离高低位;取余数;将人乂数码管显示数据个,十位分
7、离;高位显示MOVDX,BMOVAL,OOHOUTDX,ALMOVDX,CMOVAL,K5OUTDX,ALCALLDELAY;段选清零;位选清零XORBX,BXMOVBL,AHMOVAL丄ED+[BX]MOVDX,BOUTDX,ALMOVDX,CMOVAL,K2OUTDX,ALCALLDELAY;低位显示MOVDX,BMOVAL,OOH;段选清零OUTDX,ALMOVDX,CMOVAL,K5;位选清零OUTDX,ALCALLDELAYXORAX,AXMOVAL,NUM+1;右侧数