1、微机系统与接口技术课程实 验 报 告学 院: 计算机学院 班级学号: 学生姓名: 指导老师: 成绩评定: 1 实验目的1. 掌握 8259 中断控制器的工作原理。2. 学习 8259 的应用编程方法。3. 掌握 8259 级联方式的使用方法。2 实验设备PC 机一台,TD-PITE 实验装置或 TD-PITC 实验装置一套。3 实验内容及步骤1. 中断控制器 8259 简介在 Intel 386EX 芯片中集成有中断控制单元( ICU) ,该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A 是一致的,操作方法也相同。从片的 INT
2、 连接到主片的 IR2 信号上构成两片8259 的级联。在 TD-PITE 实验系统中,将主控制器的 IR6、IR7 以及从控制器的 IR1 开放出来供实验使用,主片 8259 的 IR4 供系统串口使用。8259 的内部连接及外部管脚引出如图 4-1: 主 片 8259A从 片 8259AINTINTCAS2:0CAS2:0IR2I4IR6I7IR1INTR( 内 核 ) 串 口 0MIR6I7SIR1图 4-1 8259 内部连续及外部管脚引出图表 4-1 列出了中断控制单元的寄存器相关信息。表 4-1 ICU 寄存器列表寄存器 口地址 功能描述ICW1(主)ICW1(从)(只写)0020
3、H00A0H初始化命令字 1:决定中断请求信号为电平触发还是边沿触发。ICW2(主)ICW2(从)(只写)0021H00A1H初始化命令字 2:包含了 8259 的基址中断向量号,基址中断向量是 IR0 的向量号,基址加 1 就是IR1 的向量号,依此类推。ICW3(主)(只写)0021H 初始化命令字 3:用于识别从 8259 设备连接到主控制器的 IR 信号,内部的从 8259 连接到主 8259的 IR2 信号上。ICW3(从)(只写)00A1H 初始化命令字 3:表明内部从控制器级联到主片的 IR2 信号上。ICW4(主)ICW4(从)0021H00A1H初始化命令字 4:选择特殊全嵌
4、套或全嵌套模式,使能中断自动结束方式。(只写)OCW1(主)OCW1(从)(读/写)0021H00A1H操作命令字 1:中断屏蔽操作寄存器,可屏蔽相应的中断信号。OCW2(主)OCW2(从)(只写)0020H00A0H操作命令字 2:改变中断优先级和发送中断结束命令。OCW3(主)OCW3(从)(只写)0020H00A0H操作命令字 3:使能特殊屏蔽方式,设置中断查询方式,允许读出中断请求寄存器和当前中断服务寄存器。IRR(主)IRR(从)(只读)0020H00A0H中断请求:指出挂起的中断请求。ISR(主)ISR(从)(只读)0020H00A0H当前中断服务:指出当前正在被服务的中断请求。P
5、OLL(主)POLL(从)(只读)0020H0021H00A0H00A1H查询状态字:表明连接到 8259 上的设备是否需要服务,如果有中断请求,该字表明当前优先级最高的中断请求。初始化命令字 1 寄存器(ICW1)说明见图 4-2 所示。0001LS0017 00:边 沿 触 发1:电 平 触 发ICW1图 4-2 初始化命令字 1 寄存器初始化命令字 2 寄存器(ICW2)说明见图 4-3 所示。T7T6T5T4T30007 0ICW2 中 断 向 量 地 址图 4-3 初始化命令字 2 寄存器初始化命令字 3 寄存器(ICW3)说明,主片见图 4-4,从片见图 4-5。S7S6S5S4S
6、3S2S107 0 S7 3: 0表 示 无 8259被 连 接 到 主 片 上 1表 示 有 被 连 接 到 主 片 上S2: 0表 示 内 部 从 片 没 被 使 用 1表 示 内 部 从 片 被 级 联 到 主 片 的 IR2上 S: 0表 示 无 8259通 过 IR1连 接 到 主 片 上 1表 示 有 通 过 I连 接 到 主 片 上ICW3( 主 片 )图 4-4 主片初始化命令字 3 寄存器000000107 0ICW3( 从 片 )图 4-5 从片初始化命令字 3 寄存器初始化命令字 4 寄存器(ICW4)说明见图 4-5。000SNFM00AEOI17 0ICW4SNFM:
7、 0 选 择 全 嵌 套 模 式 1 选 择 特 殊 全 嵌 套 模 式 , 仅 主 8259能 够 工 作 在 特 殊 全 嵌 套 模 式AEOI: 0 禁 止 中 断 自 动 结 束 1 使 能 中 断 自 动 结 束 , 仅 主 8259能 够 工 作 在 中 断 自 动 结 束 方 式图 4-5 初始化命令字 4 寄存器操作命令字 1 寄存器(OCW1)说明见图 4-6。M7M6M5M4M3M2M1M07 0OCW17-0: 对 应 IR信 号 上 的 中 断 请 求 得 到 允 许 1 对 应 信 号 上 的 中 断 请 求 被 屏 蔽注 意 : 设 置 屏 蔽 位 不 影 响 各
8、自 中 断 挂 起 位图 4-6 操作命令字 1 寄存器操作命令字 2 寄存器(OCW2)说明如图 4-7 所示。7 0OCW2RSLEOI 00L2L1L0R SL EOI 命 令0 0 取 消 优 先 级 自 动 循 环 * 1 一 般 的 中 断 结 束 命 令0 1 0 无 操 作 1 特 殊 的 中 断 结 束 命 令 *1 0 0 中 断 优 先 级 自 动 循 环 1 在 一 般 中 断 结 束 方 式 中 优 先 级 循 环1 0 优 先 级 特 殊 循 环 方 式 * 1 在 特 殊 中 断 结 束 方 式 中 优 先 级 循 环 * 当 8259工 作 在 中 断 自 动
9、结 束 方 式 下 时 , 这 些 情 况 可 以 改 变 优 先 级 结 构 。 在 这 些 情 况 下 优 先 级 由 L2:0指 定 。L2、 1、 L0: 在 给 出 特 殊 的 中 断 结 束 命 令 时 , L2、 1、 L0指 出 了 具 体 要 清 除 当前 中 断 服 务 寄 存 器 的 哪 一 位 ; 当 给 出 特 殊 的 优 先 级 循 环 方 式 命 令 时 , L2、 1、L0指 出 了 循 环 开 始 时 哪 个 中 断 的 优 先 级 最 低 。图 4-7 操作命令字 2 寄存器操作命令字 3 寄存器(OCW3)说明如图 4-8 所示。0ESMSM01PRRIS
10、7 0OCW3ESM S0 0 无 影 响 1 无 影 响1 0 禁 止 特 殊 屏 蔽 模 式 1 使 能 特 殊 屏 蔽 模 式P: 设 置 该 位 使 8259工 作 在 中 断 查 询 方 式R IS0 0 无 影 响 1 无 影 响1 0 读 中 断 请 求 寄 存 器 IR 1 读 当 前 中 断 服 务 寄 存 器 ISR图 4-8 操作命令字 3 寄存器查询状态字(POLL)说明如图 4-9 所示。INT- - - - L2L1L07 0POLINT: 0 无 请 求 1 连 接 在 8259上 的 设 备 请 求 服 务L2、 、 L0: 当 INT为 1时 , 这 些 位
11、指 出 了 需 要 服 务 的 最 高 优 先 级 的 IR; 当 INT为 0时 这 些 位 不 确 定 。图 4-9 程序状态字寄存器在对 8259 进行编程时,首先必须进行初始化。一般先使用 CLI 指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259 有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片 8259 时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是 ICW4,初始化从片 8259 的顺序与初始化主片 8259 的顺序是相同的。系统启动时,主片 8259 已被初始化,且 4 号中断源(IR4)提供给与 PC 联机的串口通信
12、使用,其它中断源被屏蔽。中断矢量地址与中断号之间的关系如下表所示:主片中断序号 0 1 2 3 4 5 6 7功能调用 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH矢量地址 20H23H 24H27H 28H2BH 2CH2FH 30H33H 34H37H 38H3BH 3CH3FH说明 未开放 未开放 未开放 未开放 串口 未开放 可用 可用从片中断序号 0 1 2 3 4 5 6 7功能调用 30H 31H 32H 33H 34H 35H 36H 37H矢量地址 C0HC3H C4HC7H C8HCBH CCHCFH D0HD3H D4HD7H D8HDBH DCHDFH
13、说明 未开放 可用 未开放 未开放 未开放 未开放 未开放 未开放2. 8259 单中断实验实验接线图如图 4-10 所示,单次脉冲输出与主片 8259 的 IR7 相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7” 。MIR7 KK1+8259图 4-10 8259 单中断实验接线图实验程序清单(INT1.ASM)STACKS SEGMENT STACK ;堆栈段DW 128 DUP(?) ;注意这里只有 128 个字节STACKS ENDSDATAS SEGMENT ;数据段;请在这里定义您的数据V_WORD DW 3434HDATAS ENDSCODES SEGME
14、NT ;代码段ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS ;初始化MOV DS,AX;请在这里添加您的代码PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7 ;取中断入口地址MOV SI, 003CH ;中断矢量地址MOV SI, AX ;填 IRQ7 的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX ;填 IRQ7 的段地址矢量CLIPOP DS;初始化主片 8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, A
15、L ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1 216OUT 21H, ALSTIAA1: NOPJMP AA1MIR7: STICALL DELAYPUSH DXMOV DX,OFFSET V_WORDMOV AH,9INT 21HMOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中断结束命令IRETPOP DXDELAY: PUSH CXMOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETMOV
16、AX,4C00H ;退出程序INT 21HCODES ENDSEND START实验步骤(1)按图 4.15 连接实验线路。(2)编写实验程序,经编译、链接无误后装入系统。(3)运行程序,重复按单次脉冲开关 KK1,显示屏会显示字符“7” ,说明响应了中断。3. 8259 级联实验实验接线图如图 4-11 所示, KK1连接到主片8259 的 IR7 上,KK2连接到从片 8259 的 IR1 上,当按一次 KK1时,显示屏上显示字符“M7” ,按一次 KK2时,显示字符 “S1”。编写程序。图 4-11 8259 级联实验 实验程序清单(INTCAS1.ASM)STACKS SEGMENT
17、STACK ;堆栈段DW 128 DUP(?) ;注意这里只有 128 个字节STACKS ENDSDATAS SEGMENT ;数据段;请在这里定义您的数据V_WORD DW 3434HV_SPEAK DW 5461H,6C65H,6E65HDATAS ENDSCODES SEGMENT ;代码段ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS ;初始化MOV DS,AX;请在这里添加您的代码PUSH DSMOV AX, 0000HMOV DS, AXMIR7 KK1+8259SIR18259 KK2+MOV AX, OFFSET MIR7 ;取中断入口
18、地址MOV SI, 003CH ;中断矢量地址MOV SI, AX ;填 IRQ7 的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX ;填 IRQ7 的段地址矢量MOV AX, OFFSET SIR1MOV SI, 00C4HMOV SI, AXMOV AX, CSMOV SI, 00C6HMOV SI, AXCLIPOP DS;初始化主片 8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, A
19、L ;ICW4;初始化从片 8259MOV AL, 11HOUT 0A0H, AL ;ICW1MOV AL, 30HOUT 0A1H, AL ;ICW2MOV AL, 02HOUT 0A1H, AL ;ICW3MOV AL, 01HOUT 0A1H, AL ;ICW4MOV AL, 0FDHOUT 0A1H,AL ;OCW1 = 1111 1101MOV AL, 6BHOUT 21H, AL ;主 8259 OCW1STIAA1: NOPJMP AA1MIR7: CALL DELAYPUSH DXMOV DX,OFFSET V_WORDMOV AH,9INT 21HMOV AX, 0120HI
20、NT 10HMOV AL, 20HOUT 20H, ALPOP DX ;中断结束命令IRETSIR1: CALL DELAYPUSH DXMOV DX,OFFSET V_SPEAKMOV AH,9INT 21HMOV AX, 0120HINT 10HMOV AL, 20HOUT 0A0H, ALOUT 20H, ALPOP DXIRETDELAY: PUSH CXMOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETMOV AX,4C00H ;退出程序INT 21HCODES ENDSEND START实验步骤(1)按图 4.16 连接实验线路。(2)输入程序,编译、链接无误后装入系统。(3)运行程序,按动 KK1或 KK2,观察实验结果,验证实验程序的正确性。(4)若同时按下 KK1和 KK2,观察实验结果,解释实验现象。七、心得经过本次实验,初步了解了8259的工作原理,使自己对8259的各种工作方式比较熟练的应用,对8259有了更深的认识。