1、82598259 中断控制器实验中断控制器实验的实验报告的实验报告 实验六 8259 中断控制器实验 实验目的 (1) 学习中断控制器 8259 的工作原理。 (2) 掌握可编程控制器 8259 的应用编程方法。 实验设备 PC 微机一台、TD-PIT+实验系统一套。 实验内容 1. 单中断应用实验 (1) 编写中断处理程序,利用 PC 机给实验系统分配的 中断线,使用单次脉冲单元的 KK1+按键模拟中断源,每次 PC 机响应中断请求,在显示器上显示一个字符。 (2) 编写中断处理程序,利用 PC 机给实验系统分配的 中断线,使用单次脉冲单元的 KK1+按键模拟中断源,每次 PC 机响应中断请
2、求,在显示器上显示“Hello”,中断 5 次 后退出。 2扩展多中断源实验 利用实验平台上 8259 控制器对扩展系统总线上的中断 线 INTR 进行扩展。编写程序对 8259 控制器的 IR0 和 IR1 中断请求进行处理。 实验原理 1. 8259 控制器的介绍 中断控制器 8259A 是 Intel 公司专为控制优先级中断 而设计开发的芯片。它将中断源优先级排队、辨别中断源 以及提供中断矢量的电路集于一片中,因此无需附加任何 电路,只需对 8259A 进行编程,就可以管理 8 级中断,并 选择优先模式和中断请求方式,即中断结构可以用户编程 来设定。同时,在不需增加其他电路的情况下,通过
3、多片 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 用
4、于设置中断屏蔽操作字,OCW2 用于设置优先级循 环方式和中断结束方式的操作命令字,OCW3 用于设置和撤 销特殊屏蔽 方式、设置中断查询方式以及设置对 8259 内部寄存器 的读出命令。 图 6-1 8259 内部结构和引脚图 图 6-2 ICW1 格式 图 6-2 ICW2 格式 图 6-2 ICW3 格式 图 6-2 ICW4 格式 图 6-3 OCW 命令字格式 28259 寄存器及命令的控制访问 在硬件系统中,8259 仅占用两个外设接口地址,在片 选有效的情况下,利用 A0 来寻址不同的寄存器和命令字。 对寄存器和命令的访问控制如表 6-1 所示。 表 6-1 8259 寄存器及命
5、令的访问控制 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 使用 0
6、20H 和 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 主 8
7、259A 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 实时钟 保留 保留 保留 保留 协处理器中断 硬 盘控制器 保留 实验说明及步骤 1. 单中断应用实验 本实验要求使用总线上 INTR 中断请求线完成一次单中 断应用实验。中断处理程序完成在屏幕上显示
8、字符“9”。 实验前先运行 CHECK 程序,得到 INTR 所对应的中断号、相 应的初始化命令字寄存器 ICW 及操作命令字寄存器 OCW 的 地址、开屏蔽的命令字、中断矢量地址和 PCI 卡中断控制 寄存器 INTCSR 的地址。得到这些信息后就可以开始设计实 验了。参考程序流程如图 6-5 所示。 实验步骤如下。 (1) 确认从 PC 机引出的两根扁平电缆已经连接在实验 平台上。 (2) 首先运行 CHECK 程序,查看 INTR 中断号及 相关信息。 (3) 参考实验流程图编写程序,然后编译链接。 (4) 将单次脉冲单元的 KK1+连接到系统总线上的 INTR。 (5) 运行程序,按动
9、 KK1+按键,观察中断是否产生。 2扩展多中断源实验 利用实验平台上的 8259 控制器,可以对总线上的 INTR 进行扩展。将 8259 的 INT 连接到 INTR,8259 的 8 路中断 请求线 IR0IR7 就成了单一 INTR 中断请求线的扩充。这 8 路中断源共用 INTR 的中断矢量,共用 INTR 的中断服务线 程。在 INTR 的中断服务线程中通过对 8259OCW3 的查询, 以确定是 IR0IR7 中哪个产生中断,然后转到相应的服务 线程进行处理。将 8259 的 OCW3 中 P 位置 1 即可执行查询, 查询字格式如图 6-6 所示。 中断向量号 08H 09H
10、0AH 0BH 0CH 0DH 0EH 0FH 70H 71H 72H 73H 74H 75H 76H 77H 中断向量地址 0020H0023H 0024H0027H 0028H002BH 002CH002FH 0030H0033H 0034H0037H 0038H003BH 003CH003FH 01C0H01C3H 01C4H01C7H 01C8H01CBH 01CCH01CFH 01D0H01D3H 01D4H01D7H 01D8H01DBH 01DCH01DFH (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+按键,观察中断响应 是否正常。