微机原理与接口技术实验报告.doc
《微机原理与接口技术实验报告.doc》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告.doc(41页珍藏版)》请在三一文库上搜索。
1、微机原理与接口技术实验报告实验一 I/O地址译码与交通灯控制实验一、 实验目的1、 掌握并行接口8253的基本原理2、 掌握8253的编程方法二、 实验内容如图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通变化规律燃灭。三、 编程分析1、8255地址分析:控制寄存器地址: 0C40BH A口地址: 04C408H C口地址: 04C40AH2、十字路口交通灯的变化规律要求(1) 南北路口的绿灯、东西路口的红灯同时亮三秒;(2) 南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;(3)
2、南北路口的红灯、东西路口的绿灯同时亮三秒;(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;(5) 转(1)重复。3、 C口置数分析由于发光二极管是共阴极相连,所以若要其发亮应给高电平;黄灯闪烁是让其不断交替亮灭来实现;同时分析可知只要有绿灯亮,灯就会持续亮三秒,黄灯亮就会闪烁三次。4、程序设计流程图开始返回DOS设置8255C口输出南北路口的绿灯、东西路口的红灯亮长延时南北路口的黄灯闪烁,东西路口红灯亮南北路口的红灯、东西路口的绿灯亮长延时南北路口红灯亮、东西路口黄灯亮闪烁有键按下吗?YN四、汇编语言程序STACK1 SEGMENT STACK DB 100 DUP(0) STAC
3、K ENDSCODE SEGMENT ASSUME CS:CODE, SS:STACK1 DY PROC NEAR PUSH AX PUSH CX MOV AX, 0FFFFH ;延时程序 MOV CX, 02FFFH L0:DEC AX JNZ L0 LOOP L0 POP CX POP AX RET DY ENDPSTART: MOV DX, 0C40BH MOV AL, 10000000B OUT DX, AL MOV DX, 0C40AH MOV BL, 6H ;设置延迟3秒 L1:MOV AL, 00100100B ;南北绿灯亮,东西红灯亮 OUT DX, AL CALL DY ;调
4、用延迟子程序 DEC BL JNZ L1 MOV BL, 4H ;设置第二次闪烁3次 L2:MOV DX, 0C40AH MOV AL, 01000100B ;南北黄灯亮,东西红灯亮 OUT DX, AL CALL DY MOV AL, 00000100B ;南北黄灯灭,东西红灯亮,实现要求闪的功能 OUT DX,AL CALL DY DEC BL JNZ L2 MOV BL,6H ;第三次设置亮灭时间为3秒 L3:MOV AL,10000001B ; 南北黄灯亮,东西红灯亮 OUT DX,AL CALL DY DEC BL JNZ L3 MOV BL,4H L4:MOV AL,1000001
5、0B ;南北红灯亮,东西黄灯亮 OUT DX,AL CALL DY MOV AL,10000000B ;南北红灯亮,东西黄灯灭,实现闪的功能OUT DX,AL CALL DY DEC BL JNZ L4 MOV DL,0FFH ;判断是否有键按下,结束程序 MOV AH,06H INT 21H JZ START ;没有键按下,进入下一次循环 MOV AH,4CH INT 21H CODE ENDS END START五、实验现象:红黄绿灯变化规律如下:南北路口的绿灯、东西路口的红灯同时亮3秒左右;南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮;南北路口的红灯、东西路口的绿灯同时亮3秒左右;
6、南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次;依次重复。六、实验感想这是第一次微机实验,总体感觉挺难的。虽然课前进行了预习准备,但在调试时还是遇到了灯不亮的情况。仔细检查程序后没有发现什么问题,所以就换了一个实验箱,并得到了理想的效果。我觉得这个实验的关键是设置延时子程序DY,在每一次灯亮后,都要调用这个延时程序,并跳转到下一次灯亮。实验二 可编程定时器/计数器(8253)一、 实验目的1、 掌握并行接口8253的基本工作原理;2、 掌握8253的编程方法。二、 实验内容1、 按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏
7、幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。 2、 按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。三、 编程分析1、8253控制寄存器地址: 0C403H 计数器0地址: 0C400H 计数器1地址: 0C401HCLK0连接时钟:1MHz。2、程序参考流程图开始设置计数器0为工作方式0送计数器初值读计数器值显示计数值结束结束开始设计数器1为工作方式3向计数器1送初值1000先送低字节后送高字节向计数器0送初值1000先送低字节后送高字节计数器0位工作方式3有键按下吗?调用延
8、时子程序YN(1)(2)四、汇编语言程序(1):CODE SEGMENTASSUME CS:CODESTART: MOV DX,0C403H;计数器0,方式0 MOV AL,010H OUT DX,AL MOV DX,0C400H MOV AL,06H ;送初值6 OUT DX,AL MOV CL,1READ: INC CL;自加1 CMP CL,0 JZ START MOV DX,0C400H ;读计数器0口 IN AL,DX MOV DL,AL MOV CL,AL CMP AL,9 JG BIG ADD DL,30H ; 0到9,数字ASCII偏移30H MOV AH,02H INT 21
9、H ;显示ASCII数字 MOV DL,0DH INT 21H JMP RETURNBIG: ADD DL,37H; 大于9,转换大写字母ASCII码 MOV AH,02H INT 21H;显示ASCII字母 MOV DL,0DH INT 21H JMP RETURNRETURN: MOV DL, 0FFH MOV AH, 06H INT 21H JZ READ;有键按下回DOS,没有则继续执行 MOV AH,4CH INT 21HCODE ENDSEND START(2): CODE SEGMENTASSUME CS:CODESTART: MOV DX,0C403H ;计数器0方式3控制字写
10、入 MOV AL,00110110B OUT DX,AL MOV AX,1000 ;计数器0置入初值1000,先送低字节后送高字节 MOV DX,0C400H OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,0C403H;计数器1初始化方式3控制字写入 MOV AL,01110110B OUT DX,AL MOV AX,1000 ;计数器1置入初值1000,先送低字节后送高字节 MOV DX,0C401H OUT DX,AL MOV AL,AH OUT DX,AL MOV AH,4CH INT 21H;返回操作系统CODE ENDS END START五、实验现象实验
11、1,用手动逐个输入单脉冲,在屏幕上从计数器初值开始显示,此时逻辑笔显示为低电平,单脉冲每输入一个,计数器值将会减1,进行自减计数。同时在屏幕上显示,当计数器值减到0时,逻辑笔显示为高电平,红灯亮。因为方式0计数不会重新装入计数值,所以如果要重新计数,需要重新启动程序。实验2,红灯绿灯交替变化,表示输出是矩形脉冲。六、实验感想这次实验做得挺不顺畅的,一开始我做第一个小实验时,没有实现最后判断是否有健按下,并跳出程序的功能。后来问了同学以后,在RETURN返回子程序里加了一个DOS 6号功能调用,并加入一个控制转移指令JZ READ,就实现了有键按下返回操作系统,无键按下继续执行的功能。总之在这次
12、实验中我收获了很多。实验三 中断实验(纯DOS)一、 实验目的1、掌握PC机中断处理系统的基本原理2、学会编写中断服务程序二、 实验原理与内容1、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理,中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。IBM PC/XT机内有一片8259中断控制器对外可以提供8个中断源,如表6-1所示。表6-1 中断源中断源中断类型号中断功能IRQ008H时钟IRQ109H键盘IRQ20AH保留IRQ30BH串行口2IRQ40CH串行口1IRQ50DH硬盘IRQ60EH软盘IRQ70FH并行打印机8个中
13、断源的中断请求信号线IRQ0IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为边沿触发、普通结束方式,对于IBM PC/AT及80286以上微机,系统又扩展了一片8259中断控制器,主片的IRQ2用于两片8259之间级连,对外可以提供16个中断源,如表6-2所示。表6-2 中断源中断源中断类型号中断功能IRQ8070H实时时钟IRQ9071H用户中断IRQ10072H保留IRQ11073H保留IRQ12074H保留IRQ13075H协处理器IRQ14076H硬盘IRQ15077H保留PCI总线中的中断线只有四根:INTA#,INTB#,INTC#,INTD#。它们需要通过
14、P&P的设置来和某一根中断相连接才能进行中断申请。如图6-1所示,虚线为实验中需要连的线。图6-1 实验电路图2、实验内容实验电路如图6-1所示直接用手动产生单脉冲作为中断请求信号,只需连接一根导线,要求每按一次开关产生一次中断,在屏幕上显示一次“TPC pci card Interrupt”,中断10次后程序退出。三、 编程分析1、由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。2、由于TPC卡使用PCI总线,所以分配的中断号在每台微机可能都不同,编程时需要了解当前的微机使用哪个中断号并进行设置。获取方法是在纯DOS环境中,运行一个读PCI
15、配置空间的程序“PORTR.EXE”,该程序能够获得本机TPC板卡或所有PCI板卡的硬件资源,如IO、内存、中断占用情况。然后根据获得的中断请求号码来修改程序中的中断向量、中断掩码的参数,并重新编译链接后即可。图6-2 PCI卡的结构3、由于TPC卡使用9054芯片连接微机,如图6-2所示,9054通过中断控制/状态寄存器(INTCSR)激活/禁用中断源,所以在编程时,使用微机中断前需要使用9054的中断功能,所以要先对中断控制/状态寄存器(INTCSR)设置,代码如下:MOV DX,IOPORT_CENT+68H;设置tpc卡中9054芯片io口,使能中断IN AX,DXOR AX,0900
16、HOUT DX,AX其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看汇编程序使用方法的介绍。中断使能寄存器(INTCSR)的偏移地址是+68H,设置含义如表6-3所示:表6-3 BITS功能81:使能产生PCI中断0:禁止产生PCI中断111:使能LOCAL端输入的中断送到PCI端0:禁止LOCAL端输入的中断送到PCI端其它位为零即可,更多内容参考9054芯片数据手册程序退出前还要关闭9054的中断,代码如下:MOV DX,IOPORT_CENT+68H;设置TPC卡中9054芯片IO口,关闭中断
17、IN AX,DXAND AX,0F7FFHOUT DX,AX4、PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令:MOV AL,20HOUT 20H,AL中断结束返回DOS时应将IMR对应位置1,以关闭中断。四、 参考流程图五、 汇编语言程序;接1根线,单脉冲-IRQ,输入一个脉冲中断一次,输入10次结束.DATA SEGMENT INT_VECT EQU 0BH ;中断0-7的向量为:08H-0FH,中断8-15的向量为:70H-77H.中断类型号:73是在本微机设备
18、管理器中查出的. IRQ_MASK_2_7 EQU 011110111B ;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零 IRQ_MASK_9_15 EQU 011111111B ;中断0-7时全一,中断8-15时从低至高相应位为零 IOPORT_CENT EQU 0C000H ;TPC 卡中9054芯片的IO地址,地址0E000H是在本微机设备管理器中查出的. CSREG DW ? IPREG DW ? ;旧中断向量保存空间 IRQ_TIMES DW 00H ;中断计数 MSG1 DB 0DH,0AH,TPC PCI CARD INTERRUPT,0DH,0AH,$ M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 实验 报告
链接地址:https://www.31doc.com/p-3268066.html