《8259中断控制器实验》的实验报告
更新时间:2024-05-12 01:37:01 阅读量: 综合文库 文档下载
实验六 8259中断控制器实验
6.1 实验目的
(1) 学习中断控制器8259的工作原理。
(2) 掌握可编程控制器8259的应用编程方法。
6.2 实验设备
PC微机一台、TD-PIT+实验系统一套。
6.3 实验内容
1. 单中断应用实验
(1) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示一个字符。
(2) 编写中断处理程序,利用PC机给实验系统分配的中断线,使用单次脉冲单元的KK1+按键模拟中断源,每次PC机响应中断请求,在显示器上显示“Hello”,中断5次后退出。
2.扩展多中断源实验
利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IR1中断请求进行处理。
6.4 实验原理
1. 8259控制器的介绍
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU传送中断类型号。8259A的内部结构和引脚如图6-1所示。
8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如图6-2所示,OCW1-OCW3各命令字格式如图6-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽
方式、设置中断查询方式以及设置对8259内部寄存器的读出命令。
图6-1 8259内部结构和引脚图
图6-2(a) ICW1格式
图6-2(b) ICW2格式
图6-2(c) ICW3格式
图6-2(d) ICW4格式
图6-3 OCW命令字格式
2.8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。对寄存器和命令的访问控制如表6-1所示。
表6-1 8259寄存器及命令的访问控制
A0 0 1 0 0 0 1 D4 0 0 1 × D3 0 1 × × 读信号 0 0 1 1 1 1 写信号 1 1 0 0 0 0 片选 0 0 0 0 0 0 操作 读出ISR,IRR的内容 读出IMR的内容 写入OCW2 写入OCW3 写入ICW1 写入OCW1,ICW2,ICW3,ICW4
3. PC微机系统中的8259
在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表6-2示。两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
表6-2 PC微机系统中的硬件中断
中断号 主8259A IRQ0 主8259A IRQ1 主8259A IRQ2 主8259A IRQ3 主8259A IRQ4 主8259A IRQ5 主8259A IRQ6 主8259A IRQ7 从8259A IRQ8 从8259A IRQ9 从8259A IRQ10 从8259A IRQ11 从8259A IRQ12 从8259A IRQ13 从8259A IRQ14 从8259A IRQ15 功能 日时钟/计数器0 键盘 接从片8259A 串行口2 串行口1 并行口2 软盘 并行口1 实时钟 保留 保留 保留 保留 协处理器中断 硬盘控制器 保留 6.5 实验说明及步骤
1. 单中断应用实验
本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。中断处理程序完成在屏幕上显示字符“9”。实验前先运行CHECK程序,得到INTR所对应的中断号、相应的初始化命令字寄存器ICW及操作命令字寄存器OCW的地址、开屏蔽的命令字、中断矢量地址和PCI卡中断控制寄存器INTCSR的地址。得到这些信息后就可以开始设计实验了。参考程序流程如图6-5所示。
实验步骤如下。
(1) 确认从PC机引出的两根扁平电缆已经连接在实验平台上。 (2) 首先运行CHECK程序,查看INTR中断号及相关信息。 (3) 参考实验流程图编写程序,然后编译链接。
(4) 将单次脉冲单元的KK1+连接到系统总线上的INTR。 (5) 运行程序,按动KK1+按键,观察中断是否产生。
2.扩展多中断源实验
利用实验平台上的8259控制器,可以对总线上的INTR进行扩展。将8259的INT连接到INTR,8259的8路中断请求线IR0~IR7就成了单一INTR中断请求线的扩充。这8路中断源共用INTR的中断矢量,共用INTR的中断服务线程。在INTR的中断服务线程中通过对8259OCW3的查询,以确定是IR0~IR7中哪个产生中断,然后转到相应的服务线程进行处理。将8259的OCW3中P位置1即可执行查询,查询字格式如图6-6所示。
中断向量号 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 70H 71H 72H 73H 74H 75H 76H 77H 中断向量地址 0020H~0023H 0024H~0027H 0028H~002BH 002CH~002FH 0030H~0033H 0034H~0037H 0038H~003BH 003CH~003FH 01C0H~01C3H 01C4H~01C7H 01C8H~01CBH 01CCH~01CFH 01D0H~01D3H 01D4H~01D7H 01D8H~01DBH 01DCH~01DFH
(a)主程序 (b)中断处理程序 图6-5 8259中断应用实验(1)参考程序流程图
图6-6 8259 OCW3查询命令字格式
本实验要求实现8259控制器IR0、IR1两路中断。用KK1+和KK2+模拟两个中断源,在IR0对应的服务程序中显示字符“0”,在IR1对应的服务程序中显示字符“1”。实验程序参考流程如图6-7所示。参考实验电路如图6-8所示。
实验步骤如下:
(1) 确认从PC机引出的两根扁平电缆已经连接在实验平台上。 (2) 首先运行CHECK程序,查看INTR中断号及相关信息。 (3) 参考实验流程图编写程序,然后编译链接。 (4) 参考实验接线图连接实验电路。
(5) 运行程序,按动KK1+、KK2+按键,观察中断响应是否正常。
(a)主程序 (b)中断处理程序 图6-7 8259中断应用实验(2)参考程序流程图
图6-8 8259中断应用实验(2)参考接线图
6.6 思考题
1. 在编程过程中,用到了哪些操作命令字?
2. 在执行中断服务程序之前,保存了哪些断点?为什么?
单一中断应用实验参考程序
;***************根据CHECK配置信息修改下列符号值******************* INTR_IVADD EQU _____H ;INTR对应的中断矢量地址
INTR_OCW1 EQU _____H ;INTR对应PC机内部8259的OCW1地址 INTR_OCW2 EQU _____H ;INTR对应PC机内部8259的OCW2地址 INTR_IM EQU _____H ;INTR对应的中断屏蔽字
PCI_INTCSR EQU _____H ;PCI卡中断控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS
DATA SEGMENT
CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量 IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 IM_BAK DB ? ;保存INTR原中断屏蔽字的变量 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: 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 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
WAIT1: 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 ; MOV ES:[DI],AX ADD DI,2
MOV AX,CS_BAK ; MOV ES:[DI],AX
MOV DX,INTR_OCW1 ; MOV AL,IM_BAK OUT DX,AL STI
MOV AX,4C00H ; INT 21H
MYISR PROC NEAR ; MOV AL,39H MOV AH,0EH INT 10H MOV AL,20H INT 10H
OVER: MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX
MOV DX,PCI_INTCSR ; ADD DX,2 MOV AX,003FH OUT DX,AX
MOV DX,INTR_OCW2 ; MOV AL,20H OUT DX,AL MOV AL,20H
OUT 20H,AL IRET
MYISR ENDP CODE ENDS
END START
恢复INTR原中断处理程序入口偏移地址 恢复INTR原中断处理程序入口段地址 恢复INTR原中断屏蔽寄存器的屏蔽字 返回到DOS 中断处理程序MYISR 清PCI卡中断控制寄存器标志位 向PC机内部8259发送中断结束命令
正在阅读:
《8259中断控制器实验》的实验报告05-12
各地毕业生落户政策大盘点06-04
UML系统建模与分析设计(3)-需求分析与用例建模06-08
水产动物疾病学复习题09-23
对某电厂600MW机组凝结水溶氧高的分析与检查具体实例 -11-30
2016年度人感染H7N9禽流感疫情知识考试 答案06-04
网络检测脚本命令05-31
2011级第一学期期末试题06-29
18《将相和》第二课时教学设计04-12
教槽料(血浆,非血浆)对比实验报告04-21
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 控制器
- 中断
- 报告
- 8259
- 度米文库汇编之13-14学年度学期高三班主任工作计划
- VIEW LOGIC hspice 使用说明
- 回转轴承选型维护
- 结构裂缝事故案例
- 构建成长舞台 谱写精彩人生
- 建筑机械基础知识试题答案
- 用运放实现U0=4U1-5U2+2U3的运算电路
- 格力电器财务管理作业
- 法规检测卷
- 2018-2019年上海市南洋模范中学初升高自主招生考试数
- 生本教育五年级数学第一单元教案 - 图文
- 2015年青海中小学校教师招聘海南州双语测试考生名单
- 小学六年级教案-小学数学毕业班复习小数的四则运算 精品
- 言语交际
- 基于压电陶瓷材料的换能器可靠性研究
- 拖挂式混凝土泵的设计
- 温州中学新课程教学实践的回顾与反思
- 2015-2020年中国特曲市场发展现状及市场评估报告
- 百问不倒(第二期续)
- 马克思基本原理考试试题