微机原理课程设计报告-数字时钟的实现(附代码)

三、功能流程图: 1、主程序流程图

2、LED显示子程序流程图

3、按键处理子程序流程图

4、中断子程序-时间计数子程序流程图

四、结果讨论: 1、实验结果:

程序运行,数码管开始从000000走表,按C键后显示‘——————’开始对时钟进行初始值设置,设置初始值时可以按D键进行回退修改。

2、问题解决:

(1) 添加D键的回退删除功能:在C键功能实现区域里不断检测D键是否按下,若按下则将LED上一位数码管设置成‘—’并将设置时间的地址回退1,及可完成对D键的功能设置;

(2) 调试程序时发现时钟初始值可以设置,D键回退功能也是可以的,8253gate信号也正确连接着,但是初始值设置完后时钟并没有走表,于是将8253的输出端的线接入至手动的单脉冲的发生器,进行手动给8259刺激,结果时钟开始随手按动开始走表,可以断定该8253芯片可能已经损坏,换了个试验箱后遇到了同样的情况,直至换了功能正常的实验箱后实验现象才正确展现。

3、功能完善

可以在课题要求的基础上添加一些功能,使得电子时钟的功能更加完善: (1)添加暂停功能,按键A时间暂停,再按A键时间继续走;

(2)添加闹铃功能,按键B设置闹铃时间,时间到时控制鸣笛闹铃;

(3)添加倒数计时的功能,按键E设置倒数的初始值,时间到即鸣笛闹铃; 可以看出本次课程设计的课题可以完善的地方有很多,如果只满意于已完成的则大错特错了,课程设计虽然已经结束,但是课下仍然可以对自己的课题进行进步的探索,不断完善,不断追求完美,这也是我们需要的。

4、实验总结

(1) 通过此次课程设计,将微机原理与接口技术课程所学的知识运用到了实际操作中,并学会了数码管显示电子时钟的制作方法;实验过程中遇到了一些困难和问题,通过同学之间的讨论和查找资料也一一攻破,顺利完成了课程设计,实验结果符合课题要求。

(2) 中断服务程序设计时还应注意以下几个问题:

A.因为8086CPU在响应中断时不能自动地保护它的各寄存器(除标志寄存器外)内容,虽然可用寄存器在主程序和中断服务程序之间传送参量和结果,但这样做极易引起意想不到的错误,所以应当避免,而采用指定内存单元进行参数传递;

B.使用堆栈实现保护现场与恢复现场。使用时要注意堆栈的先进后出的特性,同时要确保堆栈有足够的空间,防止堆栈溢出;

C.只有中断服务程序用到的那些寄存器(标志寄存器除外)的内容才需要加以保护; D.在从中断服务程序返回之前,即使CPU处于关中断状态也不必开中断。在执行IERT指令后,CPU自动恢复中断前标志寄存器。

(3) 调试的时候因为遇到两个实验箱都是有问题的,本来以为是程序出现了问题,来回检查程序,直到最后又换了个实验箱才知道程序是正确的,实验箱是实验的基础,我们做实验时都应该细心爱护,弄坏了芯片,给自己和他人都带来了不便。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4