东南大学微机原理实验报告三四_第1页
东南大学微机原理实验报告三四_第2页
东南大学微机原理实验报告三四_第3页
东南大学微机原理实验报告三四_第4页
东南大学微机原理实验报告三四_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机实验及课程设计实验报告 学号 080121 东南大学微机实验及课程设计实验报告实验三 I/O与存储器实验四(一)简单输入输出实验四(二)中断姓 名: 学 号: 080121 专 业: 自动化 实 验 室: 计算机硬件技术 实验时间:2014年04月15日 报告时间: 2014年04月20日评定成绩: 审阅教师: 一. 实验目的与内容实验三实验目的:1)了解掌握TPC实验系统的基本原理和组成结构,学会测试检查TPC-PCI总线转接卡地址;2)正确掌握I/O地址译码电路的工作原理,学会动态调试程序DEBUG/TD的直接I/O操作方法;3)学会利用I/O指令单步调试检查硬件接口功能,学会利用示波

2、器检测I/O指令执行时总线情况;4)进一步熟悉8086/8088及PC机的分段存储特性,了解存储器扩展原理,完成编程及测试。实验内容:1)观察了解TPC-2003A实验系统的基本原理和组成结构,测试基本单元电路功能,熟悉各部分辅助电路的使用;2)通过Win/XP控制台硬件信息或测试程序检查TPC-PCI总线转接卡地址,并记录;3)按图3.3-5的I/O地址译码测试参考电路连线,分析电路原理,分别利用动态调试程序直接I/O操作功能和单步功能测试;4)编程利用片选负脉冲控制指示灯(如L7)闪烁发光(亮、灭、亮、灭、),时间间隔通过软件延时实现;5)修改延时参数,使亮(约1秒)与灭的时间间隔分别为1

3、秒、5秒和8秒,记录延时程序对应参数BX,CX。实验四(一)实验目的:1)进一步掌握TPC实验装置的基本原理和组成结构;2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况;3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能和使用。实验内容:1)按图3.4-1简单并行输出接口参考电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0D7,8个Q输出端接LED显示电路L0L7;2)编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根

4、据8个发光二极管发光情况验证正确性;3)按图3.4-2简单并行输入接口参考电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0K7,8个数据输出端分别接数据总线D0D7;4)用逻辑电平开关K0K7预置一字母的ASC码,编程输入这个ASC码,并将其对应字母在屏幕上显示出来。(标准ASCII码的范围为20HFFH);实验四(二)实验目的:1)掌握PC机中断处理系统的基本原理;2)学会编写中断服务程序;实验内容:实验电路如图所示,直接用手动单脉冲作为中断请求信号(只需连一根导线),要求没按一次开关产生一次中断

5、,在屏幕上显示一次“TPC pci card Interrupt”,中断8次后退出程序。二. 基本实验原理实验三(一)基本原理译码输出端Y0Y7在实验台上“I/O地址”输出端引出,每个输出端包含8个地址:Y0:280H287H,Y1:288H28FH,当CPU执行I/O指令且地址在280H2BFH范围内,译码器选中,必有一根译码线输出负脉冲。利用译码器输出负脉冲,利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、),时间间隔通过软件延时实现。(二)实验接线图(三)流程图实验四(一)(一) 实验接线图(二)流程图实验四(二)(一) 基本原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控

6、制管理器。中断控制器用于接收外部中断请求信号,经过优先级别判断等处理后向CPU发出可屏蔽中断请求。IBMPC、PC/XT机内有一片8259中断控制器对外可提供8个中断源:中断源 中断类型号 中断功能IRQ0 08H 时钟IRQ1 09H 键盘IRQ2 0AH 保留IRQ3 0BH 串行口2IRQ4 0CH 串行口1IRQ5 0DH 硬盘IRQ6 0EH 软盘IRQ7 0FH 并型打印机三. 方案实现与测试实验三(一)查看并替换TPC扩展卡I/O和存储基地址1)参照实验指导书安装接口卡及其驱动程序;2)启动微机并打开“控制面板”-“系统”-“设备管理器”,找到“微机原理教学实验系统”;打开“TP

7、C”,点击“资源”看到占用的存储和中断资源,找到两个输入/输出范围,其中一个范围大小是0ffH的是PCI接口芯片上的设置寄存器组占用的I/O地址空间,另一个范围大小是7fH的是TPC设备的I/O地址; 3)用记录下的实际基址值替换每个汇编程序头中的定义行中的值,并重新编译链接代码为:Ioport equ0EC00h-0280houtport1 equioport+2a0houtport2equioport+2a8h(二)I/0译码测试实验电路1)将试验箱安装好,并按原理图搭接译码电路。2)执行下面两条指令:MOVDX, 0EC20HOUTDX, ALY4输出一个负脉冲,灯亮执行下面两条指令:M

8、OVDX, 0EC28HOUTDX, ALY5输出一个负脉冲,灯灭3)动态调试程序DEBUG/TD的直接I/O操作方法(OUTPUT):n1.命令行方式比较简单,启动debug,在命令符-后键入-oEC20 20回车,其中20H为输出量,EC20H为端口地址。执行完第一句灯亮,执行第二句灯灭2.TD模式下,启动TD,将光标置于代码区右击可得到代码区的局部菜单,选中I/O选项将出现菜单,选择Outbyte,在编辑菜单中输入要输出的地址以及输出内容,格式为:输出地址,内容。例如要使译码电路Y5输出一个负脉冲,可键入相应内容如下图所示:3.通过让Y4,Y5交替输出负脉冲,观察L7的亮灭变化,总结I/

9、O地址译码电路原理,尝试编写程序利用这个负脉冲控制L7闪烁发光,时间间隔通过软件延时实现。程序主要算法:利用delay子程序进行延时操作,控制LED的亮灭。delayprocnearmovbx,2000K1:movcx, 0K2: LoopK2Dec bxjneK1retdelayendp实验四(一)(一) 动态调试程序DEBUG/TD的直接I/O操作方法(Input)(按图3.4-2接线)。1.TD模式下,启动TD(全屏模式),将光标置于代码区右击后可得到代码区局部菜单,选中I/O选项将出现菜单:2.选择in byte,在编辑菜单中输入所要读入数据的地址,确认后即可得到该地址的数据的内容,要

10、读74ls244的当前输出端的数据,可在编辑菜单中输入:0C800-280+2A0H 如下图所示3.确认后即可得到74Ls244输入端的数据(二)实验电路中并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要三条指令:MOV AL,数据字节MOV DX,0C428 ;C400-280H+2A8HOUT DX,AL通过上述并行接口输入数据需要2条指令:MOV DX,0C420 ;C400-280H+2A0HIN AL, DX(三)编写程序让其显示开关电平所输入的ASCII码对应的数据值编写程序如下:ioportequ0EC00h-0280htpc卡中设备的

11、io地址ls244equioport+2a0h;译码地址Y4片选ls244stackssegmentstackdb100dup(?)stacksendscodesegmentassumecs:code,ss:stacksmainprocfarstart:movax,stacksmovss,axmovdx,ls244;从2A0输入一个数据inal,dxmovdl,al;将所读数据保存在DL中movah,02int21hmovdl,0dh;显示回车符int21hmovdl,0ah;显示换行符int21hmovah,06;是否有键按下movdl,0ffhint21hjnzexitjestart;若无

12、,则转startexit:movah,4ch;返回DOSint21hmainendpcodeendsendstart实验四(二 )实验现象:实验源程序:;386以上微机适用;纯dos下才能使用;tasm4.1或以上编译;*;* 中断 *;*;data segment int_vect EQU 071H;中断0-7的向量为:08h-0fh,中断8-15的向量为:70h-77h irq_mask_2_7 equ 011111011b;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零 irq_mask_9_15 equ 011111101b;中断0-7时全一,中断8-15时从低至高

13、相应位为零 ioport_cent equ 0d800h;tpc 卡中9054芯片的io地址 csregdw? ipregdw?;旧中断向量保存空间 irq_timesdw00h;中断计数 msg1 db 0dh,0ah,TPC pci card Interrupt,0dh,0ah,$ msg2 db 0dh,0ah,Press any key to exit!,0dh,0ah,$ msg3 db 0dh,0ah,Press DMC to interrupt 10 times and exit!,0dh,0ah,$data endsstacks segmentdb 100 dup (?)sta

14、cks endscode segment assume cs:code,ds:data,ss:stacks,es:datastart:;Enable Local Interrupt Input.386 cli mov ax,data mov ds,ax mov es,ax mov ax,stacks mov ss,ax mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,使能中断 in ax,dx or ax,0900h out dx,ax mov al,int_vect ;保存原中断向量mov ah,35h int 21hmov ax,esmov csreg

15、,axmov ipreg,bx mov ax,cs ;设置新中断向量mov ds,axmov dx,offset int_procmov al,int_vectmov ah,25h int 21h in al, 21h ;设置中断掩码 and al, irq_mask_2_7 out 21h, al in al, 0a1h and al, irq_mask_9_15 out 0a1h, al mov ax,data mov ds,ax mov dx,offset msg2mov ah,09hint 21h mov dx,offset msg3mov ah,09hint 21hmov irq_t

16、imes,0ahstiloop1: cmp irq_times,0;等待中断并判断中断10次后退出 jz exitmov ah,1int 16h jnz exit;按任意键退出 jmp loop1exit: cli mov bl, irq_mask_2_7 ;恢复中断掩码notblinal, 21horal, blout21h, almovbl, irq_mask_9_15notblinal, 0a1horal, blout0a1h, al mov dx,ipreg ;恢复原中断向量mov ax,csregmov ds,axmov ah,25hmov al,int_vect int 21h m

17、ov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,关闭中断in ax,dx and ax,0f7ffhout dx,axmov ax,4c00hint 21hint_proc proc far cli push ax push dx push ds dec irq_times mov ax,data ;Interrupt to do mov ds,axmov dx,offset msg1mov ah,09hint 21h mov al,20h ;Send EOI out 0a0h,al out 20h,al pop ds pop dx pop ax sti i

18、retint_proc endpcode endsend start四提高与创新研究实验三:(1)如果用只访问一个I/O地址(而不是二个I/O地址)的方法来实现发光二极管闪烁发光,电路应怎样连接?画出电路图。(提示:将D触发器连接成1位的计数器)。编写相应的程序使发光二极管闪烁发光,并上机验证。答:电路修改:将D触发器的Q非段与D端相连接,CD端接+5V。程序:Ioport equ0ec00h-0280htpc卡中设备的io地址outport1equioport+2a0h译码输出端地址Y4stackssegmentstackdb100dup(?)stacksendscodesegmentcs:

19、 code, ss: stacksmain procfarstart:mov ax, stacksmov ss, axmovdx,outport1out dx, alcalldelay调延时子程序movah,1int16hjestartmovah,4chint21hmain endpdelayprocnear 延时子程序movbx,2000ZZZ:movcx,0ZZ:loopZZdec bxjneZZZretdelay endpcodeendsendstart实验四(一):(1)利用基本实验(1)中输出锁存电路将L0L7制成流水灯,流水方向由键盘控制,可随时切换,流水间隔时间也由键盘控制设计思路:选择两个按键如“1”“2”分别控制流水灯的方向,至于控制流水间隔,我的想法是通过按一次键灯移位一次,这样由两个键控制了流水灯的方向和间隔,具体程序在之前的输出地程序中进行改动编写程序:ioportequ0b800h-0280htpc卡中设备的io地址ls273equioport+2a8h;译码输出端地址Y5片选ls273stackssegmentstackdb100dup(?)stacksendscodesegmentassume cs: code, ss: stacksmain procfarstart:movax, stacksm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论