微机接口技术实验书.doc

上传人:啊飒飒 文档编号:11594673 上传时间:2021-08-25 格式:DOC 页数:36 大小:645KB
返回 下载 相关 举报
微机接口技术实验书.doc_第1页
第1页 / 共36页
微机接口技术实验书.doc_第2页
第2页 / 共36页
微机接口技术实验书.doc_第3页
第3页 / 共36页
微机接口技术实验书.doc_第4页
第4页 / 共36页
微机接口技术实验书.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《微机接口技术实验书.doc》由会员分享,可在线阅读,更多相关《微机接口技术实验书.doc(36页珍藏版)》请在三一文库上搜索。

1、微机原理及接口技术实验指导书微机原理及接口技术实验指导书 姚宣霞 田军峰 编 目录一 8259中断控制器应用实验 1二 8254定时计数器应用实验 10三 8255并口控制器应用实验 18四 16550串口控制器应用实验 20五 A/D转换实验 26六 键盘扫描及显示设计实验 2934一 8259中断控制器应用实验1 实验目的 (1)学习中断控制器8259的工作原理。 (2)掌握可编程控制器8259的应用编程方法。2实验设备 PC微机一台、TD-PIT实验系统一套。3 实验内容 (1)利用系统总线上中断请求信号INTR,设计一个单中断应用。使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏

2、幕上显示一个字符。 (3)利用实验平台上8259控制器对系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IRI中断请求进行处理。4实验原理(1) PC微机系统中的8289 在80x86系列PC微机系统中,系统中包含了两片8259中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表1-1示。两片8259的端口地址为:主片8259使用020H和021H两个端口;从片使用0AOH和0AlH两个端口。系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为:0级最高,依次为1级、8级一15级,然后是3级一7

3、级。 在实验平台上系统总线单元的INTR信号对应的中断线就是PC机保留中断其中的一个。对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。表1-1 PC微机系统中的硬件中断中断号功能中断向量号中断向量地址主8259 IRQ0日时钟/计数器008H0020H0023H主8259 IRQ1键盘09H0024H0027H主8259 IRQ2接从片82590AH0028H002BH主8259 IRQ3串行口20BH002CH002FH主8259 IRQ4串行口10CH0030H0033H主8259 IRQ5并行口20DH0034H0037H主8259 IRQ6软盘0EH

4、0038H003BH主8259 IRQ7并行口10FH003CH003FH从8259 IRQ8实时钟70H01C0H01C3H从8259 IRQ9保留71H01C4H01C7H从8259 IRQ10保留72H01C8H01CBH从8259 IRQ11保留73H01CCH01CFH从8259 IRQ12保留74H01D0H01D3H从8259 IRQ13协处理器中断75H01D4H01D7H从8259 IRQ14硬盘控制器76H01D8H01DBH从8259 IRQ15保留77H01DCH01DFH5实验说明及步骤 (1) INTR单中断应用实验在前面已经介绍了实验平台上系统总线单元的INTR中

5、断请求信号已经是对应到PC机内部的某一级中断。INTR产生一个上升沿的中断请求,PC机内部相应的那级中断就会得到响应。所以,使用INTR中断请求信号,就相当在使用PC机内部相应的那一级中断。 INTR中断请求之所以能有效,是通过PCI卡上INTCSR寄存器的相应设置实现的。所以,在程序设计时需要对该寄存器进行一些操作。在此处主要是学习8259中断原理,以及微机中断的编程应用方法。关于INTCSR寄存器设置属于PCI接口技术范畴。编程时直接加入相关语句即可。有关INTCSR寄存器在后面PCI接口技术中断处理实验中会做详细讲述。 还需要注意的是,使用INTR中断的程序必须在纯DOS环境下运行。因为

6、在Windows下,INTR中断产生后会被Windows底层的实验系统驱动程序捕获,实验程序中的中断处理程序无法得到响应。在纯DOS下运行提供的CHECK程序,可以查看PC分配给实验系统的中断号及其它一些中断编程需要的信息,通过这些信息编写中断应用程序。本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。用单次脉冲上升沿模拟中断源,中断处理程序完成在屏幕上的显示字符“9”。实验前先运行CHECK程序,得到INTR所对应的中断号、相应的初始化命令字寄存器ICW及操作命令字寄存器OCW的地址、打开屏蔽的命令宇、中断矢量地址和PCI卡中断控制寄存器INTCSR的地址。得到这些信息后就可以开

7、始设计实验了。参考程序流程如图1-1所示。;T8259-1.asm;单一中断应用实验;*根据CHECK配置信息修改下列符号值*INTR_IVADD EQU 034H ;INTR对应的中断矢量地址INTR_OCW1 EQU 021H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 020H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0DFH ;INTR对应的中断屏蔽字PCI_INTCSR EQU 0CC38H ;PCI卡中断控制寄存器地址;* STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA

8、SEGMENT CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CLI MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX MOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器 MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00H OUT DX,A

9、X ADD DX,2 MOV AX,003FH OUT DX,AX MOV AX,0000H ;替换INTR的中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;设置当前中断处理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址 MOV AX,SEG MYISR MOV ES:DI,AX ;设置当前中断处理程序入口段地址 MOV DX,INT

10、R_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL,DX MOV IM_BAK,AL ;保存INTR原中断屏蔽字 AND AL,INTR_IM OUT DX,AL STIWAIT1: MOV AH,1 ;判断是否有按键按下 INT 16H JZ WAIT1 ;无按键则跳回继续等待,有则退出 QUIT: CLI MOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器 MOV AX,0000H OUT DX,AX MOV AX,0000H ;恢复INTR原中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,IP_BAK ;恢复INTR原中断处

11、理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址 MOV ES:DI,AX MOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字 MOV AL,IM_BAK OUT DX,AL STI MOV AX,4C00H ;返回到DOS INT 21HMYISR PROC NEAR ;中断处理程序MYISR MOV AL,39H MOV AH,0EH INT 10H MOV AL,20H INT 10HOVER: MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX MOV DX,

12、PCI_INTCSR ;清PCI卡中断控制寄存器标志位 ADD DX,2 MOV AX,003FH OUT DX,AX MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令 MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL IRETMYISR ENDP CODE ENDS END START图1-1 8259单一中断实验参考程序XD7XD6XD5XD4XD3XD2XD1XD0XA2XIOWXIORIOY0INTR 系 统 总 线 单次KK1+ 脉冲单元 图1-2 8259单一中断实验参考接钱图实验步骤如下。 (1)确认从PC机引出的两根扁

13、平电缆已经连接在实验平台上。 (2)启动纯DOS环境,进入Tddebug软件所在的安装目录。执行CHECK程序,查看INTR中断号及相关信息并记录。 (3)运行Tddebug集成操作软件。操作Alt+E进入程序编辑环境。利用查出的中断号及相关信息,按实验要求参考实验程序,然后编译链接。 (4)将单次脉冲单元的KKl+连接到系统总线上的INTR。 (5)操作Alt+R进入RmRun菜单项,通过Run命令运行程序。按动KKl+按键,观察中断是否产生。(2)INTR扩充多中断源实验 利用实验单元中的8259控制器,可以对总线上的INTR进行中断源的扩充。将8259的INT连接到INTR,8259的8

14、路中断请求线IR0IR7就成了单一INTR中断请求线的扩充。这8路中断源共用INTR的中断矢量,共用INTR的中断服务程序。在INTR的中断服务程序中通过对82590CW3的查询,以确定是IR0一IR7中哪个产生中断,然后转到相应的服务线程进行处理。 本实验要求实现8259控制器,IR0、IRI两路中断都可以通过INTR向PC发起中断请求。用KKI和KK2+模拟两个中断源,在IR0对应的服务程序中显示字符“0”,在IRI对应的服务程中显示字符“1”。 单次KK1+ 脉KK2+ 冲单元D7D6D5D4 IR0D3 IR1D2D1D0 8259单元A1A0WRRDCSINTXD7XD6XD5XD4

15、XD3XD2XD1XD0XA3XA2XIOWXIORIOY0INTR;T8259-2.asm;扩充中断源实验 图1-3 电路连接图;*根据CHECK配置信息修改下列符号值*INTR_IVADD EQU 034H ;INTR对应的中断矢量地址INTR_OCW1 EQU 021H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 020H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0D7H ;INTR对应的中断屏蔽字PCI_INTCSR EQU 0CC38H ;PCI卡中断控制寄存器地址IOY0 EQU 0C400H ;片选IOY0对应的端口始地

16、址;*MY8259_ICW1 EQU IOY0+00H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU IOY0+04H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU IOY0+04H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU IOY0+04H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU IOY0+04H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU IOY0+00H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU IOY0+00H ;实验系统中82

17、59的OCW3端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENT CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CLI MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX MOV DX,PCI_INTCSR ;

18、初始化PCI卡中断控制寄存器 MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00H OUT DX,AX ADD DX,2 MOV AX,003FH OUT DX,AX MOV AX,0000H ;替换INTR的中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;设置当前中断处理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_BAK,AX ;保存INTR原中断处理程序入口

19、段地址 MOV AX,SEG MYISR MOV ES:DI,AX ;设置当前中断处理程序入口段地址 MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL,DX MOV IM_BAK,AL ;保存INTR原中断屏蔽字 AND AL,INTR_IM OUT DX,AL MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4 OUT DX,AL MOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2 MOV AL,05H OUT DX,AL MOV DX,MY8

20、259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,01H ;非自动结束EOI OUT DX,AL MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FCH ;打开IR0和IR1的屏蔽位 OUT DX,AL STIWAIT1: MOV AH,1 ;判断是否有按键按下 INT 16H JZ WAIT1 ;无按键则跳回继续等待,有则退出QUIT: CLI MOV DX,PCI_INTCSR ;恢复PCI卡中断控制寄存器 MOV AX,0000H OUT DX,AX MOV AX,0000H ;恢复INTR原中断矢量 MOV ES,AX M

21、OV DI,INTR_IVADD MOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址 MOV ES:DI,AX MOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字 MOV AL,IM_BAK OUT DX,AL STI MOV AX,4C00H ;返回到DOS INT 21HMYISR PROC NEAR ;中断处理程序MYISRQUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令 MOV AL,0CH OUT

22、 DX,AL IN AL,DX ;读出查询字 TEST AL,80H ;判断中断是否已响应 JZ QUERY ;没有响应则继续查询 AND AL,03H CMP AL,00H JE IR0ISR ;若为IR0请求,跳到IR0处理程序 JNE IR1ISR ;若为IR1请求,跳到IR1处理程序 JMP EOIIR0ISR:MOV AL,30H ;IR0处理,显示字符串STR0 MOV AH,0EH INT 10H MOV AL,20H INT 10H JMP EOIIR1ISR:MOV AL,31H ;IR1处理,显示字符串STR1 MOV AH,0EH INT 10H MOV AL,20H I

23、NT 10H JMP EOIEOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令 MOV AL,20H OUT DX,ALOVER: MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX MOV DX,PCI_INTCSR ;清PCI卡中断控制寄存器标志位 ADD DX,2 MOV AX,003FH OUT DX,AX MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令 MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL IRETMYISR ENDP CODE ENDS END ST

24、ART 图1-4 参考程序二 8254定时计数器应用实验1 实验目的 (1)掌握8254的工作方式及应用编程。 (2)掌握8254的典型应用电路接法。2 实验设备 PC微机一台、TD-PIT实验系统一套。3 实验内容 (1)计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KKI+五次后,产生一次计数中断,并在屏幕上显示一个字符5。 (2) 计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KKI+五次后,观察LED的变化。4 实验原理 8254是Intel公司生产的可编程定时器。是8253的改进型,它的操作方式以及引脚和8253完全相同,比82

25、53具有更优良的性能。8254具有以下基本功能: (1)有3个独立的16位计数器; (2)每个计数器可按二进制或十进制(BCD)计数; (3)每个计数器可编程工作于6种不同工作方式; (4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz); (5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。 (6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为n=fclkifouti。其中fclki是输入时钟脉冲的频率,fouti是输出波形的频率。 图2-1是8254的内部结构框图和图2-2是8254的引脚图,它是由

26、与CPU的接口、内部控制电路和三个计数器组成5实验报告内容要求 参考实验一和二的程序, 编写程序,将8254的计数器2设置为方式3,用18432MHz作为CLK2时钟。计数初值为l00,相当对CLK2进行100分频。在OUT2输出频率为18432KHz的时钟。将OUT2连接到计数器0的CLK0,设置计数器0也工作在方式3,计数初值为18432,相当是进行18432分频。则在OUT0得到lHz的输出。画出电路接线图,给出实现上述功能的程序。 图2-1 8254内部结构框图 图2-2 8254引脚图8254的工作方式如下述: (1)方式0:计数到0结束输出正跃变信号方式。 (2)方式1:硬件可重触

27、发单稳方式。 (3)方式2:频率发生器方式。 (4)方式3:方波发生器。 (5)方式4:软件触发选通方式。 (6)方式5:硬件触发选通方式。 8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表2-1所示。读回控制字格式如表2-2所示。当读回控制字的D4位为0时,由该读回控制字D1一D2位指定的计数器的状态寄存器内容将被锁存到状态寄存器中。状态字格式如表2-3表2-1 8254的方式控制字格式D7D6D5D4D3D2D1D0计数器选择读写格式选择工作方式选择计效码制选择00-计数器

28、001一计数器110-计数器211一读出控制字标志00 锁存汁数值01一读写低8位10-读写高8位11一先读写低8位再读写高8位000一方式0001一方式1010-方式2011一方式3100-方式4101一方式50-二进制数1一十进制数表2-2 8254读出控制字格式D7D6D5D4D3D2D1D0110锁存计数值0一锁存状态信息计数器选择(同方式控制字)0表2-3 8254状态字格式D7D6D5D4D3D2D1D0OUT引脚现行状态1一高电子0一低电子计数初值是否装入1一无效计数0一计数有效计数器方式(同方式控制字)5实验说明及步骤1)计数应用实验1 编写程序,将8254的计数器0设置为方式

29、0,计数值为5,用微动开关KKl+作为CLK0时钟,OUT0连接INTR,每当KKl+按动5次后产生中断请求,在屏幕上显示字符“5”。参考程序如下所示。;T8254-1.asm;8254计数应用实验;*根据CHECK配置信息修改下列符号值*INTR_IVADD EQU 034H ;INTR对应的中断矢量地址INTR_OCW1 EQU 021H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 020H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0D7H ;INTR对应的中断屏蔽字PCI_INTCSR EQU 0CC38H ;PCI卡中断控制寄

30、存器地址IOY0 EQU 0C400H;*MY8254_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENT CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR

31、原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量STR1 DB COUNT: $ ;显示的字符串DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CLI MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX MOV DX,PCI_INTCSR ;初始化PCI卡中断控制寄存器 MOV AX,1F00H ;向PCI_INTCSR中写入003F1F00H OUT DX,AX ADD DX,2 MOV AX,003FH OUT DX,AX MOV

32、 AX,0000H ;替换INTR的中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;设置当前中断处理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_BAK,AX ;保存INTR原中断处理程序入口段地址 MOV AX,SEG MYISR MOV ES:DI,AX ;设置当前中断处理程序入口段地址 MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL,DX MOV IM_BAK,AL ;保存INTR原中断屏蔽字 AND AL,INTR_IM OUT DX,AL STI MOV DX,OFFSET STR1 ;显示字符串 MOV AH,9 INT 21H MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,10H ;计数器0,方式0 OUT DX,AL MO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1