微机原理实验——并行IO接口(三)

简介: 微机原理实验——并行IO接口(三)

实验结果


程序控制方式实现任务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.代码纠错.


因为我们在开始开发前,总可能会没有考虑到实际会遇到的一些问题与困难,很多时候第一次写出来的代码无法实现理想的效果,会出现各种各样的问题。在解决问题时,我们应当学会对整个问题进行细化,学会对每部分进行一个流程的设计,学会先对每个模块进行分析,这样降低了问题的难度,也使得自己写代码更加顺畅,头脑更具有条理性,这样的分析、解决问题的方法,也是本次实验以及报告贯穿始终的。


通过这次实验,我对中断技术有了更加直观的了解,中断方式是计算机系统应用最为广泛的接口通信方式,同时,当许算机系统运行复杂软件系统时,中断方式也是软件各模块之间通信方式之一;对各种不同的实现方法也有了更加深刻地了解,不仅巩固了所学,也提升了各方面的能力,对计算机实现各种各样的更复杂的任务的底层逻辑有了一个初步的了解。


总之,这是一次意义丰富、收获众多的实验经历,我从中学到了很多!

目录
相关文章
|
6月前
|
存储 传感器 数据可视化
【软件设计师备考 专题 】IO接口的功能、类型和特性
【软件设计师备考 专题 】IO接口的功能、类型和特性
180 1
|
3月前
|
Java 数据处理
Java IO 接口(Input)究竟隐藏着怎样的神秘用法?快来一探究竟,解锁高效编程新境界!
【8月更文挑战第22天】Java的输入输出(IO)操作至关重要,它支持从多种来源读取数据,如文件、网络等。常用输入流包括`FileInputStream`,适用于按字节读取文件;结合`BufferedInputStream`可提升读取效率。此外,通过`Socket`和相关输入流,还能实现网络数据读取。合理选用这些流能有效支持程序的数据处理需求。
44 2
【IO面试题 五】、 Serializable接口为什么需要定义serialVersionUID变量?
serialVersionUID用于标识类的序列化版本,确保在反序列化时类的版本一致性,避免因类定义变更导致的不兼容问题。
|
3月前
|
Ubuntu Linux
内核实验(九):添加IO驱动的阻塞读写功能
本文通过修改内核模块代码,介绍了如何在Linux内核中为IO驱动添加阻塞读写功能,使用等待队列和条件唤醒机制来实现读写操作的阻塞和非阻塞模式,并在Qemu虚拟机上进行了编译、部署和测试。
16 0
|
6月前
|
设计模式 缓存 Java
【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南( 实现可伸缩IO专题)— 上
【Java技术专题】「入门到精通系列教程」深入探索Java特性中并发编程体系的原理和实战开发指南( 实现可伸缩IO专题)— 上
77 0
|
5月前
|
存储 缓存 NoSQL
Redis为什么速度快:数据结构、存储及IO网络原理总结
Redis为什么速度快:数据结构、存储及IO网络原理总结
|
6月前
|
存储 Java
java IO接口(Input)用法
【5月更文挑战第1天】Java的`java.io`包包含多种输入输出类。此示例展示了如何使用`FileInputStream`从`input.txt`读取数据。首先创建`FileInputStream`对象,接着创建一个字节数组存储读取的数据,调用`read()`方法将文件内容填充至数组。然后将字节数组转换为字符串并打印,最后关闭输入流。注意,`InputStream`是抽象类,此处使用其子类`FileInputStream`。其他子类如`ByteArrayInputStream`、`ObjectInputStream`和`BufferedInputStream`各有特定用途。
65 2
|
6月前
|
缓存 Java 数据库
深入理解 Java IO 流:原理与应用
【4月更文挑战第4天】Java IO 浴是处理文件和数据输入输出的关键,涉及数据传输和处理。核心概念包括输入流(从源头读取)和输出流(写入目标),由InputStream和OutputStream接口定义基础操作。具体实现如FileInputStream和FileOutputStream用于文件操作,BufferedInputStream和BufferedOutputStream提升性能。IO流广泛应用于文件操作、网络通信、数据库交互和系统交互。其优点在于灵活性、可扩展性和高效性。使用时注意关闭流、处理异常及选择合适流实现。理解IO流原理和应用能提升编程效率和程序性能。
170 1
|
6月前
|
传感器 编解码 C语言
【软件设计师备考 专题 】IO设备、通信设备的性能,以及基本工作原理
【软件设计师备考 专题 】IO设备、通信设备的性能,以及基本工作原理
85 1
|
6月前
|
Java 大数据 数据库
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!