实验结果
程序控制方式实现任务1:
1.按下BTNC 按键时,计算机读入一组16
位独立开关状态作为第一个输入的二进制数据,并即时显示输入的二进制数到16
位LED 灯上。(如图13)
输入为: 0000000000101101(十进制:45)
2.按下BTNR 按键时,计算机读入另一组16
位独立开关状态作为第二个输入的二进制数据,并即时显示输入的二进制数到16 位LED
灯上。(如图14)
输入为: 0000000011010010(十进制:210)
3.按下BTNU 按键时,将保存的2
组二进制数据做无符号加法运算,并将运算结果输出到LED 灯对应位。(如图15)
输出为:0000000011111111(十进制:255)
4.按下BTND 按键时,将保存的2
组二进制数据做无符号乘法运算,并将运算结果输出到LED 灯对应位。(如图16)
输出为:0010010011101010(十进制:9450)
并行IO接口中断控制方式实现任务2:
1.按下BTNC 按键时,计算机读入一组16
位独立开关状态作为一个二进制数据,并将该二进制数的低8
位对应的二进制数值0 或1 显示到8 个七段数码管上。(如图17)
2.按下BTNU 按键时,计算机读入一组16 位独立开关状态作为一个二进制数据,并将该16
进制数据各位数字对应的字符0~F 显示到低4 位七段数码管上(高4
位七段数码管不显示)。(如图18)
3.按下BTND 按键时,计算机读入一组16
位独立开关状态作为一个二进制数据,并将该数据表示的无符号十进制数各位数字对应的字符0~9
显示到低5 位七段数码管上(高3 位七段数码管不显示)。(如图19)
输入为:0001010101010101(十进制:5461)
方式比较
程序控制方式 |
中断方式 |
IO接口设计简单. 程序代码简洁明了. CPU和外设之间交换信息采用查询方式.,使得快速CPU与慢速外设之间矛盾 在反复查询上浪费了CPU的大部分时间. 程序配置比较灵活 |
CPU实行分时操作,从而大大提高了计算机的效率. 能够立即响应与处理. 由软件维护中断向量表 通过一个总中断服务程序查询ISR寄存器识别中断源,来调用各个中断服务函数 通过软件写IAR和清除ISR |
实验总结
这次实验是微机原理实验中最重要的一次实验。通过这次的实验,我学到了很多,也收获了很多。不仅对《微机原理与接口技术》课程的相关知识有了更为深入的了解,对使用中断控制方式实现各种较复杂的任务有了亲身的体会,也对独立自主学习与独立完成任务有了进一步的实践,主要有以下一些感受和认识:
1.中断控制器在计算机系统实现中断管理中至关重要.
由中断控制器来实现中断请求信号保持与清除、中断源识别、中断使能控制、中断优先级设置等功能,配合微处理器实现与外设之间的中断方式通信。
2.工作模式有快速中断与普通中断.
普通中断还是快速中断可由软件设定,他们之间的区别为:快速中断模式时,INTC
维护硬件中断向量表,在中断响应周期向微处理器提供中断向量,根据微处理器中断响应周期提供的中断响应状态信号自动清除中断状态;普通中断模式时,由软件维护中断向量表以及读取中断状态寄存器识别中断源,并且软件需在中断服务程序中写中断响应寄存器清除INTC中断状态。
3.中断方式程序设计.
中断方式程序设计包含两个程序:中断系统初始化程序和中断服务程序。它们的功能不同,但都十分重要,缺一不可。中断系统初始化程序主要完成设备初始化和中断系统初始化,实现如使能中断、填写中断向量表等功能;而中断服务程序主要完成中断事务处理以及清除中断状态等。中断服务程序由硬件中断源调用,因此不带参数。但是,当设备中断服务程序由总中断服务程序调用时,则可以带参数,此时设备的中断服务程序并非真正意义上的中断服务程序,而可以看作是总中断服务程序的一个子程序。
4.中断执行流程.
微处理器检查是否存在中断,需要在执行完现行指令且设置开中断。若有中断,则进入中断响应周期,流程为:关中断、保护断点; => 读取中断向量、转入中断服务程序; => 中断服务; =>
中断返回、开中断。
5.多中断源.
当有多个中断源时,中断发生时,不同的中断服务程序各自处理完成自己的任务,不会引起混乱;但每个中断事务要求要尽可能简单,如果过于复杂的话,可能会阻塞其他中断源,造成难以预料的错误。
6.使用全局变量与公共缓冲区.
因为中断服务程序相互之间不存在子、主程序关系,所以无法通过参数调用实现信息互传。因此,需要使用全局变量来完成不同程序之间的信息传递,比如说使用多个数码管显示时。同时,为了简化开发,在C语言中我们可以把地址用宏定义来代替。
7.代码纠错.
因为我们在开始开发前,总可能会没有考虑到实际会遇到的一些问题与困难,很多时候第一次写出来的代码无法实现理想的效果,会出现各种各样的问题。在解决问题时,我们应当学会对整个问题进行细化,学会对每部分进行一个流程的设计,学会先对每个模块进行分析,这样降低了问题的难度,也使得自己写代码更加顺畅,头脑更具有条理性,这样的分析、解决问题的方法,也是本次实验以及报告贯穿始终的。
通过这次实验,我对中断技术有了更加直观的了解,中断方式是计算机系统应用最为广泛的接口通信方式,同时,当许算机系统运行复杂软件系统时,中断方式也是软件各模块之间通信方式之一;对各种不同的实现方法也有了更加深刻地了解,不仅巩固了所学,也提升了各方面的能力,对计算机实现各种各样的更复杂的任务的底层逻辑有了一个初步的了解。
总之,这是一次意义丰富、收获众多的实验经历,我从中学到了很多!