一、实验目的 1. 掌握 8259 中断控制器的工作原理。 2. 学习 8259 的应用编程方法。 3. 掌握 8259 级联方式的使用方法。 |
二、实验内容 1.利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验。 2.利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优先级应用实验,观察8259对中断优先级的控制。 3.利用系统总线上中断请求信号MIR7和SIR1,设计一个级联中断应用实验。 |
三、实验步骤
1.8259单中断实验
实验接线图如图1所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
(1)按图1连接实验线路。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)单击RUN按钮,运行实验程序,重复按单次脉冲开关KK1+,不在界面的输出区会显示字符“7”,说明响应了中断。
2.8259双中断优先级实验
实验接线图如图2所示,KK1+和KK2+分别连接到主片8259的IR7和IR6上,当按一次KK1+时,显示屏上显示字符“7”,按一次KK2+时显示字符“6”。编写程序。
(1)按图2连接实验线路。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)单击RUN按钮,运行实验程序,重复按单次脉冲开关KK1+和KK2+,在界面的输出区会显示字符“7“和“6”,说明响应了中断。
(4)尝试先按KK1+,再快速按KK2+,观察MIR7和MIR6两个中断请求的优先级,分析实验结果。
3.8259级联中断实验(选做)
实验接线图如图3所示,KK1+连接到主片8259的IR7上KK2+连接到从片8259的IR1上,当按一次KK1+时显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1“。编写程序。
(1)按图3连接实验线路。
(2)输入程序,编译、链接无误后装入系统。
(3)单击凹按钮,运行实验程序,重复按单次脉冲开关KK1+和KK2+,在界面的输出区会显示字符“M2“和“S1”,说明响应了中断,验证实验程序的正确性。
(4)尝试先按KK1+,再快速按KK2+,观察MIR7和SR1两个级联中断请求的优先级,分析实验结果.
四、实验程序 1.8259单中断实验程序: SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET MIR7 ;取中断入口地址 MOV SI, 003CH ;中断矢量地址 MOV [SI], AX ;填IRQ7的偏移矢量 MOV AX, CS ;段地址 MOV SI, 003EH MOV [SI], AX ;填IRQ7的段地址矢量 CLI POP DS ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 MOV AL, 6FH ;OCW1 0110 1111 开放4号中断串口用,7号中断实验用 OUT 21H, AL STI AA1: NOP JMP AA1 MIR7: STI CALL DELAY MOV AX, 0137H INT 10H ;显示字符7 MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL ;中断结束命令 IRET DELAY: PUSH CX MOV CX, 0F00H AA0: PUSH AX POP AX LOOP AA0 POP CX RET CODE ENDS END START 2.8259双中断优先级实验程序: SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET MIR7 ;取中断入口地址 MOV SI, 003CH ;中断矢量地址 MOV [SI], AX ;填IRQ7的偏移矢量 MOV AX, CS ;段地址 MOV SI, 003EH MOV [SI], AX ;填IRQ7的段地址矢量 MOV AX, OFFSET MIR6 MOV SI, 0038H MOV [SI], AX MOV AX, CS MOV SI, 003AH MOV [SI], AX CLI POP DS ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 MOV AL, 2FH OUT 21H, AL ;主8259 OCW1 STI AA1: NOP JMP AA1 MIR7: STI CALL DELAY MOV AX, 0137H INT 10H ;显示字符7 MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL ;中断结束命令 IRET MIR6: STI CALL DELAY MOV AX, 0136H INT 10H ;显示字符6 MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL IRET DELAY: PUSH CX MOV CX, 0F000H AA0: PUSH AX POP AX LOOP AA0 POP CX RET CODE ENDS END START 3.8259级联中断实验程序(选做): SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX, 0000H MOV DS, AX MOV AX, OFFSET MIR7 ;取中断入口地址 MOV SI, 003CH ;中断矢量地址 MOV [SI], AX ;填IRQ7的偏移矢量 MOV AX, CS ;段地址 MOV SI, 003EH MOV [SI], AX ;填IRQ7的段地址矢量 MOV AX, OFFSET SIR1 MOV SI, 00C4H MOV [SI], AX MOV AX, CS MOV SI, 00C6H MOV [SI], AX CLI POP DS ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 ;初始化从片8259 MOV AL, 11H OUT 0A0H, AL ;ICW1 MOV AL, 30H OUT 0A1H, AL ;ICW2 MOV AL, 02H OUT 0A1H, AL ;ICW3 MOV AL, 01H OUT 0A1H, AL ;ICW4 MOV AL, 0FDH OUT 0A1H,AL ;OCW1 = 1111 1101 MOV AL, 6BH OUT 21H, AL ;主8259 OCW1 STI AA1: NOP JMP AA1 MIR7: STI CALL DELAY MOV AX, 014DH INT 10H ;显示字符M MOV AX, 0137H INT 10H ;显示字符7 MOV AX, 0120H INT 10H MOV AL, 20H OUT 20H, AL ;中断结束命令 IRET SIR1: STI CALL DELAY MOV AX, 0153H INT 10H ;显示字符S MOV AX, 0131H INT 10H ;显示字符1 MOV AX, 0120H INT 10H MOV AL, 20H OUT 0A0H, AL OUT 20H, AL IRET DELAY: PUSH CX MOV CX, 0F00H AA0: PUSH AX POP AX LOOP AA0 POP CX RET CODE ENDS END START 五、实验结果 1.8259单中断实验结果 重复按单次脉冲开关KK1+,在界面的输出区会显示字符“7”),说明响应了中断。 图4 8259单中断实验结果 2.8259双中断优先级实验结果 先按KK1+,显示字符7,再快速按KK2+,显示字符6,同时按下KK1+和KK2+,会先显示6后显示7,可以看出MIR6的中断请求优先级高于MIR7,当MIR6的中断响应的结束后执行MIR7的中断响应,所以可以看到字符6和字符7如图5所示. 图5 8259双中断优先级实验结果 3.8259级联中断实验结果(选做) 先按KK1+,显示字符M7,再快速按KK2+,显示字符S1,同时按下KK1+和KK2+,会先显示S1后显示M1,说明SIR1的中断请求优先级高于MIR7,当SIR1的中断响应的结束后执行MIR7的中断响应,所以可以看到字符S1和字符M7如图6所示 图6 8259级联中断实验结果 六、思考题 1解释初始化程序中命令字的含义: ;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1边沿触发,级联 MOV AL, 08H OUT 21H, AL ;ICW2中断类型号08H~0FH MOV AL, 04H OUT 21H, AL ;ICW3 IR2连有从片 MOV AL, 01H OUT 21H, AL ;ICW4一般全嵌套,非缓冲,中断正常结束 MOV AL, 6FH ;OCW1 0110 1111 开放4号中断串口用,7号中断实验用 OUT 21H, AL STI 2分别画出主程序及子程序的流程图。 3选做:8259级联实验。 见上实验内容3 七、实验心得 通过本次8259中断控制应用实验,我复习了8259A的初始化命令字ICW1,ICW2,ICW3,ICW4和操作命令字OCW1,OCW2,OCW3的格式和用法,学习了8259中断控制器的工作原理和配置方法。我逐渐掌握了如何设置中断向量、优先级和屏蔽位等关键参数。这些配置操作对于确保中断控制器能够正确响应和处理中断请求至关重要。我深刻体会到了计算机中断控制机制的重要性和复杂性。这次实验不仅加深了我对中断控制理论知识的理解,还锻炼了我的实践能力和解决问题的能力。 |