内部结构
 
  
- IRR — 中断请求寄存器,保存 8个输入端IR0~IR7的中断申请状态,输入可高电平有效,也可上升沿有效 
- ISR — 中断服务寄存器,保存CPU正在处理的中断请求 
- IMR — 中断屏蔽寄存器,对中断申请进行屏蔽控制 
- 中断优先级分析器决定中断申请的优先级 
 把初始化命令字和操作命令字结合进行设置,可以有四种优先级管理方式- 全嵌套方式(中断请求按优先级0-7进行处理,0级中断的优先级最高)
- 自动循环方式(优先级相等。这种方式下,优先级队列是在变化的,一个设备受到中断服务后,它的优先级自动降为最低)
- 特殊循环方式(设置最低优先级)
- 特殊的全嵌套方式(可在级联时使用,与全嵌套方式基本相同,不过允许同级中断)
 
- 控制逻辑 - 初始化命令寄存器组:ICW1~ICW4
- 操作命令寄存器组: OCW1~OCW3
- INT 中断申请输出,高电平有效,可连接8086 INTR引脚
- $\overline{INTA}$ 中断响应输入,接收8086发出的中断响应信号,有效时8259应输出中断类型码
- D7~D0 双向三态数据线,传送数据
- $\overline{RD}$ 读信号,低电平有效
- $\overline{WR}$ 写信号,低电平有效
- $\overline{CS}$ 片选信号,低有效,给8259分配地址
- A0 用于选择8259内部不同的寄存器。
- CAS2~CAS0 级联信号线,当8259为主片时为输出,从片时为输入
- $\overline{SP}/\overline{EN}$ 在非缓冲工作方式时,用作输入,决定8259A为主片还是从片,主片接+5V,从片接地;在缓冲工作方式时,用作输出,由它打开总线缓冲器
 
初始化命令字
初始化命令字一般在初始化8259时才写入,而且写入有严格的顺序,先写ICW1,最后写ICW4
- ICW1(芯片控制)  
| A0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | LTIM | 0 | SNGL | IC4 | |
| A0=0,D4=1 表示对ICW1编程 | 
- D0(IC4)
 D0=1 需要ICW4
 D0=0 不需要ICW4
- D1(SNGL)
 D1=1 为单片8259工作方式
 D1=0 为级联工作方式,此时要用ICW3指明级联端
- D2(ADI)
 指明8080/8085系统中地址间距,
 8086系统不用
- D3(LTIM)
 D3=1 中断请求是电平触发方式
 D3=0 上升沿触发方式
- D5D7(A5A7)
 8080/8085系统中断服务程序页面地址,
 8086系统不用
- ICW2(类型)  
| A0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | T7 | T6 | T5 | T4 | T3 | T2 | T1 | T0 | |
| A0=1,跟在ICW1后表示对ICW2编程 | 
- A15A8 为8080/8085系统中页面地址高8位~~
- T7~T3 为8086系统中的中断类型码的高5位,低3位根据申请端自动填充
- ICW3(主/从)  
A0||D7|D6|D5|D4|D3|D2|D1|D0
-|-|-|-|-|-|-|-|-|-|-
1|主片|S7|S6|S5|S4|S3|S2|S1|S0
1|从片|0|0|0|0|0|ID2|ID1|ID0
A0=1,且ICW1的D1(SNGL)=0,跟在ICW2后表示对ICW3编程  
- 主片 Si=1 表示第IRi引脚上连接有从片
- 从片   ID2ID0对应从片的识别码,即表明从片连接到主片的第几个输入引脚上。CPU发出第一个中断响应负脉冲$\overline{INTA}$时,主片通过CAS2 ~CAS0送出识别码通知有中断请求的从片,每个从片将CAS2CAS0上信号与自己内部的识别码(ID2~ID0)相比较,若相同,则在第二个$\overline{INTA}$信号到来时送出自己的中断类型码。
- ICW4(方式控制)  
| A0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | SFNM | BUF | $M/\overline{S}$ | AEOI | 1 | |
| A0=1,且ICW1的D0=1,跟在其他初始化字后表示对ICW4编程 | 
- D0(μpm)
 D0=1 为非8位处理器体系
 D0=0 为8位处理器体系
- D1(AEOI)
 D1=1 自动结束中断方式,在第二个$\overline{INTA}$清ISR(中断服务寄存器)中的对应位
 D1=0 非自动结束中断方式,中断结束时发EOI命令清ISR中的对应位
- D2($M/\overline{S}$)
 在缓冲方式下(BUF=1),选择主片和从片,$M/\overline{S}$=1为主片,$M/\overline{S}$=0为从片。
 在非缓冲方式下,则$M/\overline{S}$不起作用,可为1,也可为0. 由$\overline{SP}/\overline{EN}$引脚设定主片和从片(接高电平为主片,接低电平为从片)。
- D3(BUF)
 D3=1 为缓冲工作方式,$\overline{SP}/\overline{EN}$为缓冲选通信号。
 D3=0 为非缓冲工作方式。
- D4(SFNM)
 D4=1 为特殊全嵌套方式,此时允许同级中断再次进入,一般用于多片级联方式
 D4=0 为普通全嵌套方式,禁止同级中断再次进入。
操作命令字
- OCW1(IMR)  
 A0=1 表示设置OCW1- Mi=1 表示屏蔽IRi输入中断请求
 
- OCW2  
 A0=0,且D4D3 = 00,表示对OCW2编程- R  优先权循环状态
 R=1 优先权自动循环
 R=0 优先权不循环
- SL 设定标志
 SL=1 L2、L1、L0有效
 SL=0 L2、L1、L0无效
- EOI 中断结束命令标志
 EOI=1,非自动结束方式时清ISR中对应位
 一般EOI指令(普通结束指令)为
 MOV AL, 20H
 OUT 20H, AL
- L2 L1 L0 指明中断号或最低优先权  
 
- R  优先权循环状态
- OCW3  
 A0=0,且D4D3 = 01,表示对OCW3编程
| ESMM | SMM | |
|---|---|---|
| 1 | 1 | 设置特殊屏蔽,无优先级,未屏蔽中断申请均可进入 | 
| 1 | 0 | 取消特殊屏蔽 | 
| 0 | × | 无操作 | 
- P=1 ,设置8259A为查询工作方式,此时8259A不发INT信号,CPU通过查询指令决定服务程序 
 查询得到格式如下表所示 
 I=1 表示有中断请求
 W2 W1 W0为当前最高优先级的中断请求中断号
- P=0,由RR和RIS设置下一个读取的寄存器 
| RR | RIS | |
|---|---|---|
| 1 | 0 | 在下一个A0=0端口读IRR(中断请求寄存器) | 
| 1 | 1 | 在下一个A0=0端口读ISR(中断服务寄存器) |