实验报告四 中断系统实验.docx
《实验报告四 中断系统实验.docx》由会员分享,可在线阅读,更多相关《实验报告四 中断系统实验.docx(15页珍藏版)》请在冰豆网上搜索。
实验报告四中断系统实验
信息工程学院实验报告
成绩:
指导老师(签名):
课程名称:
微机原理与接口技术
实验项目名称:
中断系统实验实验时间:
2016.11.24
班级:
姓名:
学号:
一、实验目的
1.掌握8259中断控制器的工作原理。
2.掌握系统总线上中断请求的应用编程方法。
二、实验设备
PC微机一台、TD-PITD+实验系统一套。
3、实验原理
1.中断控制器8259简介
中断控制器8259是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。
8259的内部结构和引脚如图4-1所示。
8259的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
ICW1-ICW4各命令字格式如图4-2所示,OCW1-OCW3各命令字格式如图4-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
2.8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表4-1所示。
图4-18259内部结构和引脚图
图4-2(a)ICW1格式
图4-2(b)ICW2格式
图4-2(c)ICW3格式
图4-2(d)ICW4格式
图4-3OCW命令字格式
表4-18259寄存器及命令的访问控制
A0
D4
D3
读信号
写信号
片选
操作
0
0
1
0
读出ISR,IRR的内容
1
0
1
0
读出IMR的内容
0
0
0
1
0
0
写入OCW2
0
0
1
1
0
0
写入OCW3
0
1
×
1
0
0
写入ICW1
1
×
×
1
0
0
写入OCW1,ICW2,ICW3,ICW4
3.PC微机系统中的8259
在80x86系列PC微机系统中,系统中包含了两片8259中断控制器,通过级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表4-2示。
两片8259的端口地址为:
主片8259使用20H和21H两个端口;从片使用A0H和A1H两个端口。
系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在实验平台上系统总线单元的INTR1和INTR2两个信号对应的是两路中断请求线。
在Tdpit集成操作环境中,INTR1对应的是PC机内部主片8259中断的IRQ7,INTR2对应的是IRQ6。
PC机内部8259已经在PC启动时初始化好,在使用时主要是将其中断屏蔽位打开,修改中断向量,程序结束时还原中断向量。
表4-2PC微机系统中的硬件中断
中断号
功能
中断向量号
中断向量地址
主8259IRQ0
日时钟/计数器0
08H
0020H~0023H
主8259IRQ1
键盘
09H
0024H~0027H
主8259IRQ2
接从片8259
0AH
0028H~002BH
主8259IRQ3
串行口2
0BH
002CH~002FH
主8259IRQ4
串行口1
0CH
0030H~0033H
主8259IRQ5
并行口2
0DH
0034H~0037H
主8259IRQ6
软盘
0EH
0038H~003BH
主8259IRQ7
并行口1
0FH
003CH~003FH
从8259IRQ8
实时钟
70H
01C0H~01C3H
从8259IRQ9
保留
71H
01C4H~01C7H
从8259IRQ10
保留
72H
01C8H~01CBH
从8259IRQ11
保留
73H
01CCH~01CFH
从8259IRQ12
保留
74H
01D0H~01D3H
从8259IRQ13
协处理器中断
75H
01D4H~01D7H
从8259IRQ14
硬盘控制器
76H
01D8H~01DBH
从8259IRQ15
保留
77H
01DCH~01DFH
四、实验内容与步骤
1.单中断应用实验
在前面已经介绍了实验平台上系统总线单元的INTR1中断请求信号已经是对应到PC机内部主片8259的IRQ7。
INTR1产生一个上升沿的中断请求,PC机内部相应的IRQ7中断处理就会得到响应。
所以,使用INTR1中断请求信号,就相当在使用PC机内部IRQ7中断。
本实验要求使用总线上INTR1(IRQ7)中断请求线完成一次单中断应用实验。
用单次脉冲上升沿模拟中断源,中断处理程序完成在屏幕上的显示字符“7”。
参考程序流程如图4-4所示。
实验步骤如下。
(a)主程序(b)中断处理程序
图4-48259单中断应用实验参考程序流程图
(1)实验接线图如图4-5所示,按图接线。
图4-5(a)8259单中断实验参考接线图
图4-5(b)8259单中断实验实物接线图
(2)运行Tdpit集成操作软件,进入编辑调试集成环境。
(3)根据程序设计使用语言不同,在“语言设置”菜单项中设置所使用的语言。
如图4-6所示。
该项一经设置,会再下次启动后仍保持不变。
图4-6设置语言环境
(4)开始新建文件进行编程。
点击“文件”菜单项中的“新建”,可以新建一个空白文档。
默认名为Td-pit1。
如图4-7所示。
图4-7新建空白文档
(5)编写程序,如图4-8所示,并保存,此时软件会提示输入新的文件名,输入文件名后点击保存。
图4-88259单中断实验程序编辑界面
(6)点击
,编译文件,若程序编译无误,然后再点击
,连接程序。
编译连接成功会在输出信息栏显示输出信息,如图4-9所示。
图4-9编译连接输出信息
(7)编译连接成功后可以点击
,运行程序,查看运行结果。
五、实验结果及分析:
(1)编译连接成功后,使用运行命令运行程序,重复按单次脉冲开关KK1+,查看结果。
图4-10结果显示窗口
分析:
重复按单次脉冲开关KK1+,显示屏会显示字符“7”,说明响应了中断。
(2)编译连接成功后,在程序编辑界面点击
,调试程序,进入调试界面,进行程序的调试,如图4-11所示。
图4-11调试界面
分析:
通过设置断点并运行,查看对应寄存器情况。
六、实验总结:
通过本实验,我初步了解了存储器扩展的方法和存储器的读/写,以及学会了如何检查硬件连线是否出错。
初步掌握CPU对32位和8位存储器的访问方法。
同时对实验系统配套操作软件的使用也更加熟练。
通过本次实验加深了对理论编程的知识的理解,巩固了我的理论知识。
附录:
;T8259-1.asm
;8259单中断应用实验
;查看端口资源分配情况,记录实验系统I/O端口始地址
INTR_IVADDEQU003CH;INTR对应的中断矢量地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
MESDB'Pressanykeytoexit!
',0AH,0DH,0AH,0DH,'$'
CS_BAKDW?
;保存INTR原中断处理程序入口段地址的变量
IP_BAKDW?
;保存INTR原中断处理程序入口偏移地址的变量
IM_BAKDB?
;保存INTR原中断屏蔽字的变量
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES;显示退出提示
MOVAH,09H
INT21H
CLI
MOVAX,0000H;替换INTR的中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,ES:
[DI]
MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址
MOVAX,OFFSETMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口偏移地址
ADDDI,2
MOVAX,ES:
[DI]
MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址
MOVAX,SEGMYISR
MOVES:
[DI],AX;设置当前中断处理程序入口段地址
INAL,21H
MOVIM_BAK,AL;保存INTR原中断屏蔽字
ANDAL,7FH
OUT21H,AL
STI
WAIT1:
MOVAH,1;判断是否有按键按下
INT16H
JZWAIT1;无按键则跳回继续等待,有则退出
QUIT:
CLI
MOVAX,0000H;恢复INTR原中断矢量
MOVES,AX
MOVDI,INTR_IVADD
MOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址
MOVES:
[DI],AX
ADDDI,2
MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址
MOVES:
[DI],AX
MOVAL,IM_BAK;恢复INTR原中断屏蔽寄存器的屏蔽字
OUT21H,AL
STI
MOVAX,4C00H;返回到DOS
INT21H
MYISRPROCNEAR;中断处理程序MYISR
PUSHAX
MOVAL,37H
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
OVER:
MOVAL,20H
OUT20H,AL
POPAX
IRET
MYISRENDP
CODEENDS
ENDSTART