8259 中断控制应用实验

一、实验目的

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中断控制器的工作原理和配置方法。我逐渐掌握了如何设置中断向量、优先级和屏蔽位等关键参数。这些配置操作对于确保中断控制器能够正确响应和处理中断请求至关重要。我深刻体会到了计算机中断控制机制的重要性和复杂性。这次实验不仅加深了我对中断控制理论知识的理解,还锻炼了我的实践能力和解决问题的能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Φρουρ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值