PUSH CX PUSH AX MOV CX,1EH D3: CALL DALLY LOOP D3 POP AX POP CX RET DALLY1 ENDP
DALLY2 PROC NEAR ;灯闪烁(即亮与灭)的时间间隔, PUSH CX PUSH AX MOV CX,02H D4: CALL DALLY LOOP D4 POP AX POP CX RET DALLY2 ENDP
DALLY3 PROC NEAR ;东西方向绿灯亮,南北方向红灯亮, PUSH CX PUSH AX MOV CX,0AH
15
软件延时子程序,黄软件延时子程序, D5: CALL DALLY LOOP D5 POP AX POP CX RET DALLY3 ENDP CODE ENDS END START
16
5、调试过程及运行结果
5.1调试过程
在调试过程中发现程序中未进行保护现场和恢复现场操作,使AX,BX内容丢失,同时在主程序调用子程序时也出现错误,程序运行不出来,经同学帮助改正,成功运行。在修改程序过程中,发现自己对大多数汇编语言不太熟悉,很多指令都理解不上,在今后的学习中我应加强这方面的训练。
在整个设计的过程中,我们遇到了很多问题,大部分是以前没有弄明白的东西,在遇到问题以后,通过老师们的指导和同学们的相互帮助,这些问题基本上都得到了圆满的解决,主要的问题有以下几处:
1.在设计中,对偏移量没有太深刻的理解,没有在每个子程序中对偏移量进行声明,通过调试尝试后,发现了错误并进行了修改,使程序能够正常的运行。
2.在调试程序时,发现JMP语句只能跳转在20行以内,通过修改,加入中断,使程序通过了编译。
3.在对LED接线时,起初没有考虑到对x1-x4的接线,通过学习理解了x1-x4是对LED每个数码管的控制,重新对程序进行修改,把8255A的C口低四位做输出与x1-x4连接,用于选择控制对每一位LED的显示。
4.在延时程序的设计中,起始打算每隔5ms每个LED亮一次,给人视觉上感觉是同时亮的,但是效果并不好,灯管亮度不一样,经过尝试分析后,每隔0.5ms延时一次效果更佳。
17
5.2运行结果
东西方向绿灯亮,南北方向红灯亮60秒 东西方向黄灯闪烁,南北方向红灯亮5秒 东西方向红灯亮,南北方向绿灯亮20秒 东西方向红灯亮,南北方向黄灯闪烁5秒
6、心得体会
通过这周的微机原理与接口技术课程设计,我对这学期微机原理与接口技术原理的知识有了更进一步的认识,在这次课程设计中,我们不得不通过各方面途径去查取相关资料,去自学相关知识,去一个个逐步消解我们学习上的盲点,这让我受益匪浅,收获颇多,但从中也发现了自己许多的不足和需要改进的地方。在设计的过程中,由于没有把握整个的设计的大概的流程,并对对每一个分块进行设计,在本次设计这一点没有做好,所以在设计当中做了不少无用功,其次,很重要的一点是要熟悉可编程并
18
行通信接口芯片8255的初始化及其端口的使用,在设计当中关于延时的选择,由于水平所限未选8253、8259的芯片,使过程得到简化,但不利于交通信号灯的精确控时,是本次设计的最大缺陷。通过本次课程设计,我的实际操作能力和设计能力都得到了一定的提高,但理论与实践之间永远是存在着一定差距的,要把理论知识充分灵活地运用于实践是需要一定的实践经验和牢固的理论基础,希望以后能有更多这样的实践的机会。
19
7、参考文献
[1] 冯博琴.吴宁.微型计算机原理与接口技术(第二版)北京. 清华大学出版社, 2007
[2] 舒贞权.任伟利.微机计算机原理[M]·西安:西安交通大学出版社,2004
[3] 楼顺天.周社佳.微机原理与接口技术[M]·北京:科学出版社,2006
[4] 王玉良.吴晓非.微机原理与接口技术[M]·北京:北京邮电大学出版社,2006
[5] 舒贞权,任伟利·微机计算机原理[M]·西安:西安交通大学出版社,1997
20