微机接口实验报告qxf.docx
《微机接口实验报告qxf.docx》由会员分享,可在线阅读,更多相关《微机接口实验报告qxf.docx(13页珍藏版)》请在冰点文库上搜索。
微机接口实验报告qxf
微机接口技术
实验报告
目录
实验一PCI总线中断应用实验日志2
实验二定时/计数器应用实验日志3
实验三并行接口应用实验日志5
实验四综合应用设计实验报告7
实验目的:
8
实验内容:
8
设计思路:
8
流程图:
9
详细设计:
9
遇到的问题及解决方案:
11
心得体会:
11
实验一PCI总线中断应用实验日志
实验目的:
1.掌握使用PCI中断的方法。
2.了解操作PCI设备I/O端口的方法。
3.进一步掌握8259中断控制器的工作原理、编程方法以及PC机如何通过8259A实现对外部可屏蔽硬件中断源的管理。
4.进一步掌握中断服务程序的设计方法。
实验内容:
1.【示例】编写一实验程序,利用实验装置提供的中断源,完成每按动一次脉冲开关,产生一次中断,向显示器输出字符“7”。
2.修改示例程序,控制中断响应次数为10次,即当第11次以后按动脉冲开关,屏幕上不再显示“7”。
解答:
修改示例程序的A1程序段如下,完成中断响应次数控制
MOVCX,10
A1:
NOP
CALLBREAK
LOOPA1
运行结果:
1.编译运行第一题后,每次按动KK1,屏幕输出字符为“7”
2.第二题经过示例程序再修改后,通过按动KK1,只能输出10个字符,此后不再响应,程序结束
遇到的问题及解决方案:
由于程序示例本身比较完整,在改写程序完成题目二时基本没有遇到什么困难,但是在实际操作工程中,对试验箱的存储单元的初始化的理解有些许困惑。
这主要是对汇编语言的学习才刚刚起步,第一次面对相对比较复杂的程序,有了畏惧心理。
心得体会:
通过此次实验,我初步了解了微机接口实验系统和TD-PIT-B实验系统微机接口试验系统开发环境,
并学会了对该环境的简单操作。
对I/O地址译码的内容与工作原理有了深一步的理解。
更重要的是,通过本次试验,我对汇编程序的理解和编写得到了锻炼。
实验二定时/计数器应用实验日志
实验目的:
1.掌握8254的工作方式及应用编程。
2.掌握8254的典型应用电路的接法。
3.学习8254在PC系统中的典型应用方法。
实验内容:
1.【示例】计数应用实验:
编写程序,应用8254的计数功能,用开关模拟计数。
使每当按动开关KK1五次后,产生中断,并在屏幕上显示一个字符“M”。
编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1作为CLK0时钟,OUT0连接IRQ,每当KK1按动5次后产生中断请求实验步骤如下:
初始化8254为:
MOVDX,MY8254_MODE;CLK=KK1
MOVAL,17H;设置计数器0,方式3,只读低字节,二进制计数
OUTDX,AL
MOVDX,MY8254_COUNT0
MOVAL,5;写入初值5
OUTDX,AL
2.定时应用:
自己编写程序,应用8254的定时功能,将屏幕设计为一个秒表。
设计思想:
每计时1秒,描述时间的变量就应加1,并且每计时60秒自动归零。
因此,可利用8254的计数器0设置为方式2,用实验箱提供的信号源10KHZ作为CLK0时钟,计数值为十进制0(即最大计数值10000),这样每隔1秒就会在OUT0端产生0到1的跃变,该信号接IRQ作为中断请求。
在中断服务程序中完成对时钟的修改及显示。
初始化:
MOVDX,MY8254_MODE;CLK=10K
MOVAL,35H;设置00110101计数器0,双字节,方式2,二进制计数
OUTDX,AL
MOVDX,MY8254_COUNT0
MOVAL,0;计数初值0
OUTDX,AL;先写低字节
OUTDX,AL;写高字节
3.电子发声:
自己编写程序让实验装置上的扬声器和PC机上的扬声器唱歌。
设计思想:
向扬声器传送不同频率的方波,就能驱动小喇叭发出不同音符的音响。
因此,设置8254的工作方式为方式3——方波频率发生器,改变8254计数通道i的计数初值,就可改变OUTi输出信号的频率,从而改变扬声器发出的音调。
但每个音调发声的时间长短可以通过延时程序来控制。
运行结果:
题目1:
每按动开关KK1五次后,在屏幕上显示一个字符“M”
题目2:
运行开始,屏幕上即按顺序出现不断跳动的自然数字1-60,改变clk线路的频率,快慢发生变化
题目3:
运行8254-3后,试验箱发出声音。
稍加改动OuTi的频率,声音发生变化
遇到的问题及解决方案:
此实验的关键是正确的写入8254控制字,以及前面所学知识中断的应用。
在原有代码的前提上进行修改看似不难,实际上却是工作量比较大,因为需要改写整个中断处理程序。
在实验室只试着修改了题目二既是时钟的模拟,题目3则是阅读调试了电脑中的示例程序。
心得体会:
我在做这个实验的同时加强了对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,所以在这次实验过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。
在实验过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。
虽然对8254控制字比较了解,也能够正确写出8254的初始化程序,但仅仅如此却不能融会贯通的应用于大程序中,我想主要是对中断处理的不熟悉。
实验三并行接口应用实验日志
实验目的:
1.了解8255的基本结构和工作原理
2.掌握8255的工作方式及应用编程
3.掌握8255的典型应用电路接法
实验内容:
1.【示例】基本输入/输出实验:
本实验希望实现将一组开关信号通过8255芯片传送到发光二极管上显示。
MOVDX,MY8255_MODE
MOVAL,82H;设置方式命令字,AB组工作在方式0,A组输出,B组输入
OUTDX,AL
A1:
MOVDX,MY8255_B
INAL,DX
MOVDX,MY8255_A
OUTDX,AL;将B的值通过A组输出
CALLBREAK
JMPA1
2.流水灯显示实验:
编写程序,使8255的A口、B口均为输出,实现16位数据灯的相对循环显示。
按照图重新搭建实验线路。
初始化:
MOVDX,MY8255_MODE
MOVAL,80H
OUTDX,AL;设置方式命令字,AB组工作在方式0,A组输出,B组输出
MOVDX,MY8255_A
MOVAL,7FH;使PA0-7输出高电平
OUTDX,AL
MOVLA,AL
MOVDX,MY8255_B
MOVAL,0FEH;使PB0-7输出高电平
OUTDX,AL
通过循环不断修改PA和PB的值实现流水灯显示
3.修改第一个实验,选择8255的A口为基本的输出端接发光二极管,B口为选通输入端接拨动开关。
要求当B口数据准备就绪后,通过发STBB信号请求CPU读取B口数据,才送端口A输出显示。
分别采用:
(1)查询方式编程,设计相应的实验电路及程序。
(2)中断方式编程,设计相应的实验电路及程序。
初始化:
MOVDX,MY8255_MODE
MOVAL,81H
OUTDX,AL;设置方式命令字,A组方式0输出,B组方式1输出,PC下半部输入
(1)查询方式MOVDX,MY8255_MODE
MOVAL,00000100B;PB口禁止中断
OUTDX,AL
(2)中断方式MOVDX,MY8255_MODE
MOVAL,00000101B;PB口允许中断
OUTDX,AL
运行结果:
第一题:
基本输入/输出实验,运行后,开关置位与二极管的亮灭情况一致
第二题:
16个二极管依次发出亮光,而且每次只有一个灯亮
第三题:
没有能够完整的做出第三题。
遇到的问题及解决方案:
在做第三题时,一致认为A组方式0输出,B组方式1输出,PC下半部输入,但是结果不对。
同时对查询方式编程和中断方式编程不熟悉。
看见示例程序中如此多的跳转指令,对程序流程和结构都不太清楚。
通过同学的讲解,才勉强读懂了程序。
但是又由于线路搭接的问题,没有能够运行成功。
心得体会:
通过本次实验,我系统的了解8255的各种应用的设计流程,尤其是硬、软件的设计方法,掌握了显示电路的基本功能及编程方法,掌握了显示电路的一般原理,也进一步掌握了8255接口芯片的使用和编程方法。
开拓了思路,锻炼了实践动手能力,提高了分析问题,解决问题的能力,达到了本次实验的目的。
我知道8255的几种工作方式,上电复位有哪些个方法及怎么实现、8255各个管脚的使用注意事项及实现的功能、8255编程软件再到硬件的一系列过程的操作等;
同时在老师的悉心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力。
使我们认识到课程的重要性,同时也感受理论与实践之间的差距,使我们对8255的应用和汇编语言有了更加深刻的认
实验四综合应用设计实验报告
实验目的:
1.掌握通过8254实现准确定时的方法。
2.进一步掌握并行接口芯片8255的使用方法。
3.进一步掌握8259A可编程控制器的使用方法。
实验内容:
随堂测试,规定时间了独立编写程序。
编写程序,利用8254定时/计数器,使8255的A口、B口均为输出,实现16位数据灯每隔1秒相对循环显示。
设计思路:
在本实验中要求我们用8255的A口和B口做为输出,接16个发光二极管,从而实现16位流水灯的显示效果,。
在C口的低位接开关,实现扩展功能的控制。
①基本流水灯显示电路
A和B两个端口不能同时赋值,从而在实验中我们可以用BX进行需要赋值的数据的存储,因为BX可以分从BH.BL两部分进行独立的操作,在本次实验中我们用BH对A口进行赋值,用BL对B口进行赋值,通过延时一段时间再对BH,BL进行移位和输出,实现了流水灯的效果。
流程图:
图B 主程序 图C 延时程序
详细设计:
MY8255_AEQU9C60H
MY8255_BEQU9C61H
MY8255_CEQU9C62H
MY8255_MODEEQU9C63H
MY8254_COUNT0EQU9C40H
MY8254_COUNT1EQU9C41H
MY8254_COUNT2EQU9C42H
MY8254_MODEEQU9C43H
DATASEGMENT
LADB?
LBDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,MY8254_MODE;CLK=10K
MOVAL,11H
OUTDX,AL
MOVDX,MY8255_MODE
MOVAL,81H
OUTDX,AL
MOVDX,MY8255_A
MOVAL,7FH
OUTDX,AL
MOVLA,AL
MOVDX,MY8255_B
MOVAL,0FEH
OUTDX,AL
MOVLB,AL
CALLDALLY
A1:
MOVAL,LA
RORAL,1
MOVLA,AL
MOVDX,MY8255_A
OUTDX,AL
MOVAL,LB
ROLAL,1
MOVLB,AL
MOVDX,MY8255_B
OUTDX,AL
CALLDALLY
CALLBREAK
JMPA1
DALLY:
MOVDX,MY8254_COUNT0
MOVAL,0
OUTDX,AL
D1:
CALLBREAK
MOVDX,MY8255_C
INAL,DX
ANDAL,1H
CMPAL,1
JNZD1
RET
BREAKPROCNEAR
MOVAH,06H
MOVDL,0FFH
INT21H
JERETURN
MOVAX,4C00H
INT21H
RETURN:
RET
BREAKENDP
CODEENDS
ENDSTART
遇到的问题及解决方案:
做这个综合实验对于我来说的确很难,在课堂上没有能够完成。
程序编译能通过,但只能实现最基本的流水灯显示,对于开关的控制没有反应。
最后是利用课余时间,完成的程序的设计,但是由于缺乏实验器材,没有进行验证。
心得体会:
这是本学期最后一次微机接口实验课,实验课结束,从中领悟到不少东西了. 首先,万事开头难,要勇敢的迈出第一步,不要老是给自己找接口。
从最简单的程序入手。
其次是要把知识活学活用,微机接口是注重理论和实践的,光看书不动手,是学不会的。
比如8254,8255,8259的各种初始化和使用方法,书上都是长篇累赘的叙述了,但是不自己亲手编程实现,最后还是会很快忘记。
最后就是要学会调试程序,在实验中写好代码,一运行却出问题,由于不会调试就等于白忙一场。
想单步运行,下断点,跟踪这些常用的调试方法需要熟悉。
通过这几次实验我对接口技术设计的芯片有了具体形象的认识,同时提高了汇编的编写能力。
感谢老师的悉心指导。