第七章——中断控制器(1)引脚、工作方式以及编程结构

功能:在有多个中断源的系统中,接受外部的中断请求,并进行判断,选中当前优先级最高的中断请求,再将此请求送到CPU的INTR端;当CPU响应中断并进入中断子程序后,中断控制器仍负责对外部中断请求的管理,当某个外部中断请求的优先级高于当前正在处理的中断优先级时,中断控制器会让此中断通过到达CPU的INTR端,从而实现中断的嵌套,反之,对其他级别较低的中断则禁止。

8259A的外部信号和含义

在这里插入图片描述
D7~D0:数据线,系统中和系统总线相连
INT:中断请求信号,和CPU的INTR端相连,用来向CPU发中断请求
INTA :中断应答信号,接收来自CPU的中断应答信号。如果CPU接收到中断请求信号,而此时中断允许标志位1,并且正好一条指令执行完毕,那么,在当前总线周期和下一个总线周期中,CPU将在INTA 引脚分别发出一个负脉冲作为中断响应信号,在第二个INTA 脉冲结束时,CPU读取8259A送到数据总线上的中断类型号。
RD :读出信号,有效时将8259A某个内部寄存器的内容送数据总线。
WR :写入信号,使8259A从数据线上接收数据。即CPU写入的命令字。
CS :芯片选通信号。
A0:端口选择信号。指出8259A对应的两个端口地址,其中一个为偶地址,一个为奇地址。
IR7 ~ IR0:I/O设备的中断请求信号。一片8259A可通过IR7 ~ IR0连接8个I/O设备。在含多片8259A的复杂系统中,主片的IR7 ~ IR0分别与各从片的INT端相连,以接收来自从片的中断请求信号。
CAS2 ~ CAS0:从片选择信号,这3个信号组合起来指出具体的从片。
SP/EN:主片和从片的选择和驱动信号,此引脚是双向的。输入时,决定该8259A是主片还是从片,若SP/EN为1,则为主片,SP/EN为0,则为从片。输出时,SP/EN输出的信号启动数据总线驱动器。

8259A的编程结构和工作原理

在这里插入图片描述
控制部分:
ICW1 ~ ICW4:初始化命令字,计算机系统启动时由初始化程序设置的,一般在系统工作过程中不再改变。
OCW1 ~ OCW3:操作命令字由应用程序设定,用来对中断处理过程做动态控制,一个系统运行过程中,操作命令字可被多次重置。

8259A的处理部分:
IRR:中断请求寄存器
PR:中断优先级裁决器
ISR:当前中断服务寄存器

8259A对外部中断请求的处理过程和工作原理
1.中断请求寄存器IRR接受外部的中断请求,IRR有8位,分别和IR7 ~ IR0相对应。接收到来自某一引脚的中断请求后,IRR寄存器中的对应位便置1,即对此中断请求作锁存。此后,逻辑电路根据中断屏蔽寄存器IMR(OCW1)中的对应位决定是否让此请求通过,进入中断优先级裁决器。
2.中断优先级裁决器把新进入的中断请求和当前正在处理的中断比较,从而决定哪一个优先级更高。而当前中断服务寄存器ISR存放现在正在处理的中断请求。如判断出新进入的中断请求具有足够高的优先级,那么,中断裁决器会通过响应的逻辑电路使8259A的输出端INT为1,向CPU发出一个中断请求。
3.如果CPU的中断允许标志IF为1,那么,CPU执行完当前指令后,就可以响应中断。此时,CPU从INTA 端往8259A回送两个负脉冲。
第一个负脉冲到达时:
(1)IRR的锁存功能失效。这样,就不再接受IR7 ~ IR0线上的中断请求信号,直到第二个负脉冲到达时,才又使IRR的锁存功能有效。
(2)使当前中断服务寄存器ISR中的相应位置1,以便为中断优先级裁决器以后的工作提供判断依据。
(3)使IRR寄存器中的相应位清0。
第二个负脉冲到达时:
(1)将中断类型寄存器中内容ICW2送数据总线D7~D0,CPU将此作为中断类型号。
(2)如果ICW4中的中断自动结束位为1,则将当前中断服务寄存器ISR的相应位清0。

8259A的工作方式

一、设置优先级的方式
(1)全嵌套方式:只有级别高时才会得到响应(0最高)
(2)特殊全嵌套方式:对同级的中断请求也会给予响应
(3)优先级自动循环方式:一个设备收到中断服务后,它的优先级自动降为最低(开始时最高优先级一定时IR0)。
(4)优先级特殊循环方式:一开始的最低优先级由编程决定。

二、屏蔽中断源的方式
(1)普通屏蔽方式
8259A的每个中断请求输入端都可以通过对应屏蔽位的设置而被屏蔽,通过设置操作命令字OCW1使屏蔽寄存器的某位为1,达到屏蔽的效果。
(2)特殊屏蔽方式(在中断处理程序中使用)
设置了特殊屏蔽方式后,再用OCW1对屏蔽寄存器中某位进行设置是,就会同时使当前中断服务寄存器中的对应位自动清0,这样不止屏蔽了当前正在处理的这级中断,而且开放了其他级别较低的中断。

三、结束中断的方式
无论采用哪种优先级方式工作,当一个中断请求得到响应时,8259A都会在当前中断服务寄存器中设置相应位ISn,为此后中断裁决器的工作提供了依据。当中断处理程序结束时,必须使ISn清0。
(1)中断自动结束方式
仅能用在系统中只有一片8259A并且多个中断不会嵌套的情况。
系统一进入中断,8259A就自动将当前中断服务寄存器中的对应位ISn清0。
(2)一般的中断结束方式
用于全嵌套情况下,当CPU用输出指令往8259A发出一般中断结束命令时,8259A就会把当前中断服务寄存器中的最高的非零IS位复位。因为在全嵌套方式中,最高的非零IS位对应了最后一次被响应和被处理的中断,也就是当前正在处理的中断。
(3)特殊的中断结束方式
在非全嵌套方式下,用当前中断服务寄存器无法确定当前正在处理的是哪一级中断。采用特殊中断结束方式反映在程序中就是要发一条特殊中断结束命令,指出了要清除当前中断服务寄存器中的哪个IS位。

注:在级联方式下,一般用非自动结束方式,一个中断处理程序结束时,必须发两次中断结束命令,一次是对主片发的,另一次是对从片发的。

四、连接系统总线的方式
(1)缓冲方式
多片8259A级联的系统中,8259A通过总线驱动器连接数据总线,这就是缓冲方式
(2)非缓冲方式
当系统中只有单片8259A时,一般将它直接与数据总线相连

五、引入中断请求的方法
(1)边沿触发方式
中断请求输入端出现的上升沿
(2)电平触发方式
中断请求输入端的高电平
(3)中断查询方式
特点:
1.设备仍然通过往8259A发中断请求信号要求CPU服务,但8259A不使用INT信号向CPU发中断请求信号
2.CPU内部的中断允许触发器复位,所以整个中断过程并不是按常规进行
3.CPU要使用软件查询来确认中断源,从而实现对设备的中断服务
CPU往8259A的偶地址端口发查询性质的OCW3时,如果此前正好有外设发出过中断请求,那么8259A就会在当前中断服务寄存器中设置好对应的IS位,CPU可以在查询命令之后的下一个读操作时,从当前中断服务寄存器中读取优先级。
过程:关中断->输出指令OCW3送到偶地址端口,接着用输入指令从偶地址读取8259A的查询字

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值