8259 中断控制实验

本文详细介绍了8259中断控制器的三个实验,包括单中断实验、双中断优先级实验和级联中断实验,通过实验步骤和代码设计展示了8259如何处理中断请求,以及中断优先级的控制方法。实验结果显示了中断响应的正确性和优先级顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实验目的:

1、掌握8259中断控制器的工作原理。

2、学习8259的应用编程方法。

3、掌握8259级联方式的使用方法。

二、实验内容与要求:

1.利用系统总线上中断请求信号MIR7,设计一个单一中断请求实验。

2.利用系统总线上中断请求信号MIR6和MIR7,设计一个双中断优先级应用实验,观察8259对中断优先级的控制。

3.利用系统总线上中断请求信号MIR7和SIR1,设计一个级连中断应用实验。

四、实验步骤

1.8259单中断实验

实验接线图如图4.2.11所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7” (代码修改成“9)。

d8f5eba529f2497a98b43b8fd0f05394.png

图1 8259单中断实验接线图

(1)按图1连接实验线路。

(2)编写实验程序,经编译、链接无误后装入系统。

(3)单击RUN按钮,运行实验程序,重复按单次脉冲开关KK1+,在界面的输出区会显示字符“9”,说明响应了中断。

2.8259双中断优先级实验

实验接线图如图2所示,KK1+和KK2+分别连接到主片8259的IR7和IR6上,当按一次KK1+时,显示屏上显示字符“7” (代码修改成“8),按一次KK2+时,显示字符“6” (代码修改成“3)。编写程序。

8d3ff9d889044e188fbe87660ddd50e7.png

图2 8259单中断实验接线图

(1)按图2连接实验线路。

(2)编写实验程序,经编译、链接无误后装入系统。

(3)单击RUN按钮,运行实验程序,重复按单次脉冲开关KK1+和KK2+,在界面的输出区会显示字符“8”和“3”,说明响应了中断。

(4)尝试先按KK1+,再快速按KK2+,观察MIR7和MIR6两个中断请求的优先级,分析实验结果。

3.8259级连中断实验

实验接线图如图3所示,KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR1上,当按一次KK1+时,显示屏上显示字符“L2”,按一次KK2+时,显示字符“S1”。编写程序。

3d8a1c1feb474406bdbff900b7dd5135.png

图3 8259级联实验接线图

(1)按图3连接实验线路。

(2)输入程序,编译、链接无误后装入系统。

(3)单击凹按钮,运行实验程序,重复按单次脉冲开关KK1+和KK2+,在界面的输出区会显示字符“L2”和“S1”,说明响应了中断,验证实验程序的正确性。

(4)尝试先按KK1+,再快速按KK2+,观察MIR7和SIR1两个级连中断请求的优先级,分析实验结果。

五、电路连接

1.8259单中断实验电路连接

157c9d4b6d1e4510a6dddc51f8ea6d34.png

图4 8259单中断实验电路连接

2.8259双中断优先级实验电路连接

cda78c39f66d4ac2b70a47fa043fb8eb.png

图5 8259双中断优先级实验电路连接

3.8259级连中断实验电路连接

f7cbce2456ea4d29ae373fb321ef0067.png

图6 8259级连中断实验电路连接

六、代码设计与分析

1.关于显示字符

MOV AX, 0137H
INT 10H ;显示字符 7

这里AH=01,AL=37=‘7’,会显示AL对应的字符。

2.关于中断矢量地址

IR7为例:

MOV AX, OFFSET MIR7     ;取中断入口地址

MOV SI, 003CH           ;中断矢量地址

MOV [SI], AX            ;填IRQ7的偏移矢量

MOV AX, CS              ;段地址

MOV SI, 003EH

MOV [SI], AX            ;填IRQ7的段地址矢量

子程序入口是中断类型号*4,从下图可以看出,IR7的中断类型号是F(0F),0F×4=003C,003E=0F×4+2

af07d68e708a49479c06a05e70697035.png

IRQ6SIR1(即IR1,丛片1)同上分析。

3.关于初始化ICWOCW

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号中断实验用

ef18964c88b340b89c5fb1cbe7fa5948.png

1)送ICW1命令到20H端口地址,用于定义触发方式,单片/多片使用,是否需要写ICW4,具体命令格式如下图。

 b853c0abf29f47088648fc1aeab1652b.png

2)送ICW2命令到21H端口地址,确定中断号的高五位,具体命令格式如下图。

b6d549478f7c47b5af6c86ead2a42e5e.png

3)如果采用多片级联方式,则定义主片和从片的IR引脚编号,送到20H端口地址,具体命令格式如下图。如果没有级联直接进入第四步。(ICW3命令只有系统存在2片以上中断控制器芯片时才启用,否则,不用ICW3命令。)

 cd4dfa2358904faba962880570329c04.png

4)如果需要ICW4,则定义中断方式,嵌套方式缓冲方式和系统位数,具体命令格式如下图。如果不需要,则跳到第五步。

3e338d2bb1914739ad8c8c4e1ecf5e89.png

5)准备接收中断  

七、实验现象

1.8259单中断实验结果

重复按单次脉冲开关KK1+,在界面的输出区会显示字符“9”),说明响应了中断。

a98a99b5e0ad45c6bedb1b0ec15277a1.png

图7 8259单中断实验结果

2.8259双中断优先级实验结果

先按KK1+,显示字符3,再快速按KK2+,因为MIR7的中断请求优先级高于MIR6,所以会显示字符8,当MIR7的中断响应的结束后执行MIR6的中断响应,所以可以看到字符3和字符8如图10所示。

1bf2c1334d95429fa1206600f1ac2bb3.png

图8 8259双中断优先级实验结果

3.8259级连中断实验结果

先按KK1+,显示字符L2,再快速按KK2+,因为MIR7的中断请求优先级高于SIR1,所以会显示字符S1,当MIR7的中断响应的结束后执行SIR1的中断响应,所以可以看到字符L2和字符S1如图11所示。

5ed2c881c8b34fa6bff11bc248ec0d9c.png

图9 8259级连中断实验结果

八、实验代码

1.A82591.ASM
功能描述: 8259中断实验,中断源为主片8259的IRQ7;每产生一次中断输出显示一个字符7


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. A82592.ASM
功能描述: 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.A82593.ASM
功能描述: 8259级联中断实验,中断源为主片8259的IR7,从片8259的IR1。从片8259通过主片8259的IR2;进行级联;主片每产生一次中断输出显示一个字符M7,从片每产生一次中断输出显示一个字符


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

S1。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

钻仰弥坚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值