资源描述:
《微机原理交通灯控制实验及其详细》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、交通灯信号控制实验一、实验目的1、掌握并行接口8253的基本原理2、掌握8253的编程方法二、实验内容如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通变化规律亮灭。三、编程提示1、8255控制寄存器地址:28BH—0C40BHA口地址:288H—04C408HC口地址:28AH—04C40AH2、十字路口交通灯的变化规律要求(1)南北路口的绿灯、东西路口的红灯同时亮三秒;(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同
2、时亮三秒;(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;(5)转(1)重复。3、程序设计流程开始返回DOS设置8255C口输出南北路口的绿灯、东西路口的红灯亮长延时南北路口的黄灯闪烁,东西路口红灯亮南北路口的红灯、东西路口的绿灯亮长延时南北路口红灯亮、东西路口黄灯亮闪烁是否有键按下下?吗?YN四、程序设计及实验调试程序设计的思想及注意事项:1.首先是在选择程序时是选用软件延时还是硬件延时。我采用的是C口方式0输入,所以选用了软件延时。2.在选择循环的时间上,老师上课时说过,长延时可以采用双层嵌套,外层嵌套为0FFFFH,内层嵌套为4000H,我在编程时外层送
3、进了0,相当于初值为65536,内层送进了4000H。为了达到闪烁和延时的区别,我在编闪烁的程序时,给外层嵌套送入初值3000H,内层0100H(这是我通过实验的结果)。人眼感觉闪烁的效果只是短延时的结果。3.最后程序调用了6号功能键执行键盘输入,当有输入改变标志位时,则返回操作系统。南北红南北黄南北绿东西红东西黄东西绿亮亮闪烁亮亮亮亮闪烁亮亮实验程序:CODESEGMENTASSUMECS:CODESTART:MOVDX,0C40BHMOVAL,10010000B;C口方式0输入OUTDX,ALFIRST:MOVDX,0C40AHMOVAL,00100100BOUTD
4、X,AL;南北绿,东西红写入C口MOVCX,0;送入初值65536MOVAX,4000H;软件长延时,由经验值确定DELAY1:DECAXJNZDELAY1LOOPDELAY1MOVBL,4;控制黄灯亮的次数SECOND:MOVDX,0C40AHMOVAL,01000100BOUTDX,AL;南北黄,东西红MOVCX,3000HMOVAX,0100HLI1:DECAXJNZLI1LOOPLI1MOVDX,0C40AH;软件短延时MOVAL,00000100B;南北黄灭OUTDX,ALMOVCX,3000HMOVAX,0100HWEN1:DECAXJNZWEN1;软件短延
5、时LOOPWEN1DECBLJNZSECOND;黄灯闪烁4次THIRD:MOVDX,0C40AH;写入C口MOVAL,10000001BOUTDX,AL;南北红,东西绿MOVCX,0MOVAX,4000HDELAY2:DECAX;软件长延时JNZDELAY2LOOPDELAY2MOVBL,4;控制黄灯亮的次数FORTH:MOVDX,0C40AH;写入C口MOVAL,10000010BOUTDX,AL;南北红,东西黄MOVCX,3000HMOVAX,0100HLI2:DECAXJNZLI2;软件短延时LOOPLI2MOVDX,0C40AHMOVAL,10000000BOU
6、TDX,AL;东西黄灭MOVCX,3000HMOVAX,0100HWEN2:DECAXJNZWEN2LOOPWEN2DECBLJNZFORTH;黄灯闪烁4次MOVDL,0FFHMOVAH,06HINT21H;执行键盘输入操作JZFIRSTMOVAH,4CHINT21H;返回操作系统CODEENDSENDSTART实验中遇到问题及分析:1.首先,实验出现的问题是在编程方面。由于自己使用了LOOP语句,而开始自己没有注意LOOPWEN2相当于DECCXJNZWEN2,而自己在赋值时,对CX赋值有点混乱。编程时由于粗心,写如C口的初值有错,导致二极管没能按预定结果亮,通过硬件
7、结果,我很快发现了问题所在。2.实验课上,自己认真听老师说怎样对六个灯进行赋值达到控制的结果,所以在编程时没有将灯的顺序搞混,在写入8255的C口时比较顺利。3.实验时遇到了一些问题,有一个是按键下去返回操作系统。自己运行完执行文件,当按键下去返回操作系统时,却发现执行文件没有反应,而交通灯也在继续亮。我查看了自己的程序,发现有MOVAH,06HINT21HJZFIRSTMOVAH,4CHINT21H几条语句,后来又试验了几次,并增加了停留时间,我最后发现是电脑运行较的问题。4.对交通灯黄灯闪烁的时间控制问题上,我一次换了几个值外层嵌套内