使用8259A的单级中断控制实验

  • 格式:doc
  • 大小:289.00 KB
  • 文档页数:27

下载文档原格式

  / 56
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五使用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