微机接口实验 - 图文 联系客服

发布时间 : 星期二 文章微机接口实验 - 图文更新完毕开始阅读

.

来。在中断程序中,IR3的功能是显示10个3中间以空格隔开,在显示10个后换行,IR10功能类似。其中由于IR10所连接的从片在主片中连接的中断信号入口优先级别较高,所以在IR3的程序运行过程中会被IR10的中断请求所中断,实现中断嵌套。事实上,中断程序中CLI语句丧失了应有的功能,具体的解释见后文讨论部分。 实验1-3结果:

通过按动不同的开关,CPU进入对应的中断程序显示对应的字符串(0-7)。实验结果如图:

分析:详细的程序分析过程见实验步骤的红色注释部分。

在本次实验中,同样是利用一片8259实现中断,与实验1不同之处在于字程序中并非利用设置中断向量表来进入中断程序的,而是利用了OCW3读取查询字来查找并判断中断来源,之后直接用JE指令跳转到程序入口地址处,执行中断程序。

实验二

实验2-1结果:

8254通道0工作在方式3下,按动3下脉冲,灯灭再按两下到计数到0亮。然

.

.

后每按两下灯转换状态。

8254通道0工作在方式0下,按动5下脉冲,灯亮,之后不变。 实验结果如图:

分析:详细的程序分析过程见实验步骤的红色注释部分。

在本次试验中,利用8254计数器通道0的方式3从4倒数计数,每次按动脉冲,提供CLK下降沿。在程序中,首先对8254进行初值的设定,由于是方式3,所以在设定完初值后,立即开始计数,不过由于没有按动脉冲所以,并没有向下计数,在按动脉冲后开始计数,计数到2后产生低电平信号。整体上看OUT输出的是一个方波。方式3在计数为0后会重新从初值开始计数。在方式0的工作模式下,OUT先是低电平,之后计数到0变高电平,不过不会重新计数,因此保持不变。 实验2-2结果:

信号灯按照频率1HZ的周期闪烁。 实验结果如图:

.

.

分析:详细的程序分析过程见实验步骤的红色注释部分。

在本次实验中,利用8254分频产生1HZ信号,由于1MHZ超出单一通道计数范围,因此考虑利用两个通道计数(1000*1000=1M)。将其中一个工作在方式3下的OUT信号作为另一个同样工作在方式3下的通道的CLK信号,第二个通道的OUT信号作为输出信号,两个通道初值都为1000,在设置的时候可以直接设置高8位10H,第八位默认为00(10进制计数)。

实验三

实验3-1结果:

拨动开关,使对应的信号灯改变状态(亮/灭) 实验结果如图:

分析:详细的程序分析过程见实验步骤的红色注释部分。

本次实验里,利用8255的A,B口的工作方式0实现输入输出功能。程序

.

.

中首先设置8255工作方式,A方式0输入,B方式0输出。每次将A口输入的开关信息直接传递到B口输出。 实验3-2结果: 实验结果如图:

分析:详细的程序分析过程见实验步骤的红色注释部分。

本次实验中,对实验3-1的程序进行修改,将AB口的工作方式都设为方式1,并加入代码,每次读取PC4口的数据判断STB信号是否有效,在STB有效的情况下才能显示数据。

五:结论(讨论)

1、 实验结论

实验一通过对8259主片中断实验,从片中断实验,中断嵌套实验和扩展多应用实验的汇编程序编写(部分),实际运行和结果分析,我学习了应用实验箱集成开发环境对汇编语言的开发过程,了解了.ASM程序的调试,运行步骤。对8259对的中断优先级,初始化过程,操作命令等概念和过程有了更加直观的认识,掌握了可编程中断控制器 8259 的应用编程方法,掌握了PC 机中断处理系统的基本原理。

实验二中,通过对8254计数器的应用实验和8254分频功能的自设计实验的程序编写(部分),实际运行和结果分析,我掌握了 8254 的工作方式及应用编程。和 8254 典型应用电路的接法。

.

.

实验三中,通过对可编程并行接口 8255 方式 0 的应用实验和对8255方式1的编程应用自设计实验的程序编写(部分),实际运行和结果分析,使我对汇编程序的语义和编写有了更加深入的理解和更加熟练的操作,对8255各种工作方式有了更加直观的认识。掌握了8255在方式0和方式1下的工作方式和应用编程,掌握了8255典型应用电路的接法。

2、讨论

实验一中遇到的问题和困难主要是实验2中,代码的实验结果和预测结果有所不同。在运行之前考虑到从片和主片的问题认为IR3在主片所以优先级高,这样的看法被验证是错误的,IR10虽然是从片上的中断,但是从片所连接的主片的端口优先级别比IR3所连入端口级别高,因此,IR3的优先级别会低于IR10。而在认真分析后发现由于中断程序中CLI的存在,在程序正常执行下应该不会应为更高级别的中断而进入中断嵌套。上网查证后得到可能的解释:在虚拟机下运行的状态并非处理器的真正状态,只有在ring0权限下,CLI才有可能真正关中断。

实验二中遇到的问题主要是8254由于上课没有讲过,对其用法和操作不是很熟悉,再利用8254进行分频的时候陷入了2个通道的CLK都必须接1MHZ信号的经验陷阱,对于GATE和CLK信号的作用区分的不是很清楚。并且对8254的各种工作方式使用的不是很熟练。

实验三中遇到的问题主要是实验二中程序的编写中对于工作在方式1下的端口输入输出时序的了解不够深入。在一开始并没有对于程序有很直接的思路,对于8255的STB,IBF,INTR及ACK,OBF,INTR之间的变化关系不熟悉。在查阅相关书籍后分析时序图才掌握了其中的关系。其次主要是对端口C置1置0控制字的操作不是很理解,利用端口C写入PC改变INTE的过程不理解。最后我对利用PC2,4,6写INTE的理解为由于INTE寄存器无地址,只能利用个别PC号来改变INTE的值,在此过程中不影响PC本身的值。

.