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