资源描述
实验六 中断系统实验
----8259A中断控制
一、实验目的
1.掌握中断控制器8259A与微机接口的原理和方法。
2.掌握中断控制器8259A的应用编程。
3.认识掌握DVCC_ZHC3实验装置中与实验有关硬件内容和使用方法。
4.认识掌握DVCC_ZHC3实验装置配套的软件系统使用方法。
5.进一步巩固8086/8088的指令。
6.进一步掌握程序中各种错误的检查排除方法。
二、预备知识
1、 8259A的内部结构
8259A是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。
如图5-13所示,它由中断请求寄存器(IRR)、优先级分析器、 中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。
数据
总线
缓冲器
读写
电路
级联缓冲器 /
比较器
控 制 逻 辑
服
务
寄
存
器
I SR
优
先
级
分
析
器
中断请求寄存器
I RR
中断屏蔽寄存器IMR
-INTA INT
-CS
D0~D7
-RD
-WR
A0
CAS0
CAS1
CAS2
SP/-EN
IR0
内部总线
IR1
IR2
IR3
IR4
IR5
IR6
IR7
图5-13
中断请求寄存器:寄存所有要求服务的请求IR0~IR7。
中断服务寄存器:寄存正在被服务的中断请求。
中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号, 该位为1,屏蔽该号中断,否则开放该号中断。
数据总线缓冲器:是双向三态的,用以连接系统总线和8259A内部总线, 通过它可以由CPU对8259A写入状态字和控制字。
读写控制电路:用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。
级联缓冲器/比较器:用于多片8259A的连接,能构成多达64级的矢量中断系统。
2、 8259A编程及初始化
(1) 写初始化命令字
* 写初始化命令字ICW1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。
A7
A6
A5
1
7 6 5 4 3 2 1 0
0=不需写ICW4;1=需要写ICW4
0=多片8259级连;1=只一片8259
0=中断向量地址间距8;1=地址间距4(8088模式下为0)
0=上升沿触发;1=高电平触发
为1,ICW1标志位
中断向量A7,A6,A5位(8088模式下为000)
* 写初始化命令字ICW2,以定义中断向量的高五位类型码。
A15/T7
A14/T6
A13/T5
A12/T4
A11/T3
A10
A9
A8
7 6 5 4 3 2 1 0
A15-A8: 8080/8085方式下的中断向量高8位,8088方式下A8-A0不用,设为000
T7-T3: 8086/8088方式下的中断向量
* 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。
IR7
···
IR0
主片
7 6 5 4 3 2 1 0
第i位=0,表明IRi引脚上无从片
第i位=1,表明IRi引脚上有从片
从片
……
7 6 5 4 3 2 1 0
000:从片连在主片的IR0上
001:从片连在主片的IR1上
111:从片连在主片的IR7上
* 写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中
7 6 5 4 3 2 1 0
1=工作于8086/8088方式
0=工作于8080/8085方式
0=中断服务寄存器不自动复位,用EOI 命令复位
1=中断服务寄存器自动复位
0=从片
1=主片
0=8259与数据总线无缓冲器连接
1=8259与数据总线有缓冲器连接
0=单片8259,一般嵌套方式
1=多片8259,特殊嵌套方式
断服务寄存器复位方式等。
(2) 写控制命令字
* 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。
IR7 … IR0
7 6 5 4 3 2 1 0
第i位=0,对应的中断请求IRi开放
第i位=1,对应的中断请求IRi屏蔽
注: OCW1如不写,则在初始化命令写入后,OCW1为全开放状态。
* 操作命令字OCW2,设置优先级是否进行循环、循环方式及中断结束方式。
R
SL
EOI
0
0
L2
L1
L0
7 6 5 4 3 2 1 0
识别码 000~111, 用户规定IR0-IR7的最低优先级编码
1=中断服务结束命令(EOI命令)
0=L2 L1 L0 编码无效
1=L2 L1 L0 编码有效
0=固定优先权
1=循环优先权
注: 8259A复位时自动设置IR0优先权最高,IR7优先权最低。
* 操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。
7 6 5 4 3 2 1 0
00,01=无用
10=下一个RD读中断请求寄存器IRR
11=下一个RD读中断服务寄存器ISR
1=查询命令;0=不是查询命令
00,01=无用
10=特殊屏蔽方式清除
11=特殊屏蔽方式设置
0
0
1
(3) 8259A查询字
通过OCW3命令字的设置,可使CPU处于查询方式,随时查询8259A有否中断请求, 有则转入相应的中断服务程序。
I
W2
W1
W0
…
7 6 5 4 3 2 1 0
1=有中断发生 000=IR0有中断请求
0=无中断发生 001=IR1有中断请求
111=IR7有中断请求
三、实验内容
本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量表关系如下表5-3所示。
表5-3
8259中断源
中断类型号
中断矢量表地址
IR0
8
20H~23H
IR1
9
24H~27H
IR2
A
28H~2BH
IR3
B
2CH~2FH
IR4
C
30H~33H
IR5
D
34H~37H
IR6
E
38H~3BH
IR7
F
3CH~3FH
根据实验原理图5-14,8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址, 本系统中为20H、21H。 20H 用来写ICW1, 21H 用来写ICW2、ICW3、ICW4,初始化命令字写好后, 再写操作命令字。OCW2、OCW3 用口地址20H,OCW1用口地址21H。
8259A初始化为:
a) 设置ICW1边沿触发,单片8259,使用ICW4;
b) 设置通过8259A的IRQ3向8088送出的中断类型号是十进制的11,即要求ICW2为08H,再加上8259A的IRQ3的类型为3,所以正好是11。因此IRQ3的中断入口的地址在中断矢量表中2CH~2FH的4个字节。
c) 完全嵌套,非缓冲方式,不自动复位,用EOI方式复位 ,8088工作方式
d) 开放三号中断
图5-14中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。
CPU响应中断后,在中断服务中, 对中断次数进行计数并显示,(通过8255A送到发光二极管进行显示。 )
图5-14
四、实验线路连接
8259A的IRQ3插孔和脉冲发生器单元SP插孔相连(图中IR3=IRQ3)。SP插孔初始电平置为低电平。
五、实验软件框图
累计显示进入中断的次数
发中断结束命令并返回
开始
调用显示“8259——1”子程序
填8259中断向量表
8259初始化(8255初始化)
开中断
等待中断
关中断
累计显示中断次数
判中断次数满5次否?
调用显示“8259good”
结束
次数加1
中断返回
N
Y
中断服务程序:
主程序:
六、实验步骤
1、 按图5-14连好实验线路
2、 打开实验装置电源开关,查看数码管是否显示“DVCC-86”
3、 运行DV88程序
4、 编写编译完成上述要求的程序:
5、 装入实验装置中,运行检查结果正确与否(按AN按键,每按一次产生一次中断,在LED发光二极管上显示中断次数)。
展开阅读全文