设置 8253 的计数器 1 工作在方式 3,计数器 0 工作在方式 1 单稳态触发器,并用按键来控制门控端,通过采用计时计数级联的方式解决了触发延时的问题。 (3)中断请求按键连续按下系统出现死机 在所有程序都检查无误,硬件电路也连接正确后,电路正常工作。当我让同学来测试的时候,他开玩笑地连续按下行人中断按键后,系统死机。我分析了很长时间也百思不得其解。后来,当我通过查找资料和询问老师后,原理我在中断程序设计过程中没有添加延时指令,这样系统在执行过程中,一遇到中断便要求必须马上对外设进行操作,而我们知道外设的操作与指令执行时间相比还需要一段时间,如果这段时间系统又要求外设做另外的操作,系统很容易死机。因此,为了使故障减小到最小化,我在每次执行外设操作时都附加了一条延时指令。经过修改后,当再次连续按键时系统也不会死机了。 十一.实验体会 1. 通过这次实验,尤其是最后的综合实验,使我对硬件电路以及汇编语音有了更加深入的了解,对我将来进行硬件电路设计非常有帮助。正如老师所期望的,我真正地体会到了一个硬件系统设计的全过程,我在设计过程中按照分析要求—总体设计—模块划分—编写程序—系统综合—硬件实现—系统调试一步一步来完成设计的,每一步出现问题我就可以迅速地分析问题找到解决方案,一直到最后的程序调试结束。同时,我也积累了一些在硬件电路设计过程中的经验,比如说在开关按键出要设计消抖程序防止出现逻辑错误或触发错误等。 2. 在综合实验过程中,为了能够写出更简洁完善的程序,我查阅了很多参考书,借鉴了很多例子,但这些现成的例子毕竟和老师的要求不同,而且我们不能全部抄袭他人的,因此我在很多关键部分都进行了修改和完善,以使其完成老师要求的功能。同时,我还有两处发挥了想象力。第一个就是 我联系实际交通灯系统,在红绿交替中间还有黄灯的闪烁状态。因此我就想在主程序中多加两个状态,用来实现黄灯闪烁。至于闪烁子程序的实现,我参考了一个很巧妙的算法,就是用查询方式来对黄灯状态进行控制:当黄灯为亮时,让其灭,当黄灯为灭时,让其亮,再加上一个软件延时便实现了黄灯的闪烁。其实,还可以用 8253 来实现黄灯的闪烁:通过中断方式,一旦黄灯亮,则进入响应的中断处理程序,在程序中调用 8253 使其工作在方式 3 方波发生器,合理设置分频数值便实现了黄灯的闪烁。第二个想象力是打算将倒计时通过七段数码管显示出来,但遗憾的是在具体实现时发现不仅仅是简单地添加一段显示子程序,其工作量要比之前的程序还用多,因为还得设计计时计数器,用来实现倒计时。最终也就没有实现。 3. 我认为这种教学方式真的有助于我们学生发挥自己的学习能力和创造力,是应该继续开展下去的。这里我也有一些不成熟的建议,首先,我认为既然是动手实践是这门实验的核心,那我们学生应该有更多的机会去动手操作,也就是说我们的任务或作业可以更多一些,老师可以为我们找一些更具有代表性的课程设计来提高我们的能力。其次,由于老师具有多年的工作经验我希望老师能够抽出一些时间来给我讲授一些在实际工作或设计工程中应该遵守的一些原则或者经验,虽然老师在课上讲了一些我们更渴望老师能够再多将一些。第三,我希望我们的实验课时间能够延长一些,因为老师有很多内容都没有时间将,而老师的话对我们进行系统设计是非常重要的。最后,我想老师如果在课程内容上再增加一些串行接口和并行接口的实验那就更好了,我们也会对计算机系统有一个更加全面的认识了。以上只是我个人的建议,仅供老师参考,祝微机原理实验的教学方法能够越来越好!