功能
①单片825能管理8级中断,并且可级联管理64级
②可对任一级中断单独屏蔽或允许
③中断被响应后,可直接提供中断类型号
④可通过编程选择其工作方式
IRR中断请求寄存器:
8位寄存器,用来保存外来中断请求
。
可用上升沿
或者电平触发
。
PR优先级判别器:
对IRR中中断的优先级进行判别,取出最高优先级的中断请求送到ISR。
如果当前有中断执行,则决定允许中断嵌套否。
ISR中断服务寄存器:
保存正在处理的中断请求。
只有已被PR确定为最高优先级,并被CPU响应的中断请求相应ISR才置位。
保持到中断处理结束。
IMR中断屏蔽寄存器:当某位为1,则屏蔽该位的中断请求,由软件设置。
8259A的引脚
8259A的工作方式
中断管理方式是通过初始化时写入初始化命令字
和操作命令字
来设置的。初始化命令字ICW1-ICW4
,由初始化程序设置。操作命令字OCW1-OCW3
由应用程序设定,用来对中断处理过程进行控制。
中断响应顺序
(1)当有一条若干条中断请求(IR0-IR7
)变高,中断请求寄存器IRR的相应位置位。
(2)若中断请求线中至少有一条是中断允许的,则8259A由INT引脚向CPU送出中断请求信号。
(3)若CPU是处在开中断状态,则在当前指令执行完以后,用 I N T A ‾ \overline{INTA} INTA信号作为响应。
(4)8259A在接收到CPU的 I N T A ‾ \overline{INTA} INTA信号后,使最高优先权的ISR位置位,而相应的IRR位复位。
(5)8086/8088CPU启动另一个中断响应周期,输出另一个 I N T A ‾ \overline{INTA} INTA脉冲。在这个周期中,8259A向数据总线输送一个8位的中断类型码。CPU在此周期中,读取此中断类型码并把它乘以4,就可以从中断向量表中取出中断服务程序的入口地址。这样中断响应周期就完成了,CPU就可转至中断服务程序执行。
8259A的中断优先级管理
中断优先级:可以固定设置
或者循环设置
(1)完全嵌套方式(默认):
特点:固定0-7级,IR0级别最高,IR7级别最低。
(2)特殊全嵌套方式:用于8259级联时
特点:与完全嵌套方式区别在于可以嵌套响应同级中断请求。
(3)优先级自动循环方式
特点:执行完的中断,优先级变最低,最高优先级将分配给该中断的下一级中断。初始化时默认最高优先级IR0
8259A中断屏蔽管理
普通屏蔽方式
通过对中断屏蔽器(IMR)的设定,实现对中断请求的屏蔽。
在普通屏蔽方式中,将IMR某位置1,则它对应的IR就被屏蔽,从而使这个中断请求不能从8259A送到CPU。
如果该位置0,则允许该IR中断传送给CPU。
特殊屏蔽方式
总是在中断处理程序中使用。首先设置特殊屏蔽方式
再编程将IRi屏蔽掉(使IMR中的IMi位置1),这样就会使ISR的ISi位复位。这样,除了正在服务的这级中断被屏蔽外,其他各级中断全部被开放。这样,正在服务的优先级高的中断可以被优先级低的中断申请中断。
⭐8259A的中断结束管理
中断结束方式:中断结束时,对ISR中置1
的相应位清零
,说明时刻使ISR中对应位置0
就产生不同的中断结束方式。
普通EOI结束方式:CPU用输出指令往8259A发EOI命令时清零ISR
中对应位
。即设置OCW2
放在IRET指令前。设置OCW2的EOI=1,即R、SL、EOI=001
R:
1表示采用循环方式
0表示非循环方式
SL:
表示OCW2中的L2、L1、L0是否有效
1表示有效
0表示无效
EOI:
中断命令位
特殊EOI结束方式:CPU在程序中向8259A发中断结束命令。并指明要结束的中断。
设置OCW2的EOI=1,即R、SL、EOI=011;L2-L0指明中断结束的对应位
自动EOI结束方式:处理器一进入中断过程,8259A自动将ISR中对应位清零。
ICW4的AEOI=1