使用8259A的单级中断控制实验
- 格式:doc
- 大小:289.00 KB
- 文档页数:27
实验五使用8259A的单级中断控制实验
一、实验目的
1、掌握中断控制器8259A与微机接口的原理和方法。
2、掌握中断控制器8259A的应用编程。
二、预备知识
1、8259A的内部结构
8259A是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。
如图5-19所示,它由中断请求寄存器(IRR)、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。
图5-19
中断请求寄存器:寄存所有要求服务的请求IR0~IR7。
中断服务寄存器:寄存正在被服务的中断请求。
中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号,该位为1,屏蔽该号中断,否则开放该号中断。
数据总线缓冲器:是双向三态的,用以连接系统总线和8259A内部总线,通过它可以由CPU对8259A写入状态字和控制字。
读写控制电路:用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确定8259A的工作方式和控制方式。
级联缓冲器/比较器:用于多片8259A的连接,能构成多达64级的矢量中断系统。
2、8259A编程及初始化
(1) 写初始化命令字
优先级排队和确定系统用单片还是多片。
* 写初始化命令字ICW2,以定义中断向量的高五位类型码。
* 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A从片。
第i位=0,表明IRi引脚上无从片
第i位=1,表明IRi引脚上有从片
* 写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断
服务寄存器复位方式等。
(2) 写控制命令字
* 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。
第i位=0,对应的中断请求IRi开放
第i位=1,对应的中断请求IRi屏蔽
注:OCW1如不写,则在初始化命令写入后,OCW1为全开放状态。
* 操作命令字OCW2,设置优先级是否进行循环、循环方式及中断结束方式。
* 操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。
(3) 8259A查询字
通过OCW3命令字的设置,可使CPU处于查询方式,随时查询8259A有否中断请求,有则转入相应的中断服务程序。
三、实验内容
本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表5-3所示。
表5-3
根据实验原理图5-20(见下页),8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址,本系统中为20H、21H。20H 用来写ICW1,21H 用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。OCW2、OCW3 用口地址20H,OCW1用口地址21H。图5-14中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。CPU响应中断后,在中断服务中,对中断次数进行计数并显示,计满5次结束,显示器显示“8259Good”。
四、实验线路连接
8259A的IR3插孔和SP插孔相连。SP插孔初始电平为低电平。
图5-20
五、实验软件框图
六、实验软件清单
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0020H
INTPORT2 EQU 0021H
INTQ3 EQU INTREEUP3
INTQ7 EQU INTREEUP7
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA0 EQU 0580H
DATA1 EQU 0500H
DATA2 EQU 0508H
DATA3 EQU 0518H
DATA4 EQU 0520H
ORG 1800H
START: JMP Tint1
Tint1: CALL FORMAT
CLD
MOV DI,DATA0
MOV CX,08H
XOR AX,AX
REP STOSW
MOV SI,DATA3
MOV AX,0H
MOV DS,AX
CALL WRINTVER ;WRITE INTRRUPT MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
MOV BYTE PTR DS:[0601H],01H ;TIME=1
STI
WATING: JMP W ATING
WRINTVER:MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,CS
STOSW
MOV DI,003CH
LEA AX,INTQ7
STOSW
MOV AX,CS
STOSW
RET
INTREEUP3:CLI
MOV AL,DS:[0601H]
CALL CONVERS
MOV SI,DATA0
CALL LEDDISPD
MOV AL,20H