8086中断控制器8259A

关于8259A的介绍

可编程中断控制器,用于可屏蔽中断管理。
单片8259A可管理8个外边中断源,通过级联,最多可以管理64个外部中断源。
在这里插入图片描述

  • 中断请求寄存器IRR
    保存8条外界中断请求信号IR0~IR7的请求状态,Di位为1表示IRi引脚有中断请求;为0表示无请求,中断处理后,及时撤销。
  • 中断服务寄存器ISR
    保存正在被8259A服务着的中断状态,ISi为1表示IRi中断正在服务中;为0表示没有被服务,收到EOI命令相应位被清除
  • 中断屏蔽寄存器IMR
    保存对中断请求信号IR的屏蔽状态,Di位为1表示IRi中断被屏蔽(禁止);为0表示允许

工作方式

(1)中断优先级
可以通过软件命令的方式设定各中断源的中断优先级

  • 固定优先级,默认IR0优先级最高,IR7优先级最低
    可通过程序改变。如:
    IR3→IR4 →IR5 →IR6 →IR7 →IR0 →IR1 →IR2
  • 循环优先级
    当某中断源被响应后,其优先级自动降为最低,原来比它低一级的中断则为最高级,依次排列。
    (2)中断嵌套
    高优先级打断低优先级
    在这里插入图片描述
    (3)中断结束处理
    当中断服务程序结束时,将中断服务寄存器ISR中相应( ISi )清零。
    在这里插入图片描述
    (4)中断源屏蔽方式
    通过编程使得中断屏蔽寄存器IMR相应位置0或置l,从而允许或禁止该位所对应的中断
    在这里插入图片描述
    (5)中断触发方式
    需要维持到中断信号结束
    边沿触发
    电平触发
    (6)8295A级联
    一个系统中,8259A可以级联,有一个主8259A,若干个(最多8个)从8259A级联时,主8259A的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2
    每个从8259A的中断请求信号INT,连至主8259A的一个中断请求输入端IR
    主8259A的INT线连至CPU的中断请求输入端
    SP*/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP*=0)

在这里插入图片描述
设置一片作为主片,把主片的IR端街道从片的INT段,实现最多64个中断源的中断控制
(6)数据线连接方式

  • 缓冲方式
    在多片8259A级连的大系统中,8259A通过外部总线驱动器和数据总线相连,这就是缓冲方式。
    8259A把SP*/EN*引脚作为输出端,输出允许信号,用以锁存或开启缓冲器
  • 非缓冲方式
    当系统中只有一片或几片8259A芯片时,可以将数据总线直接与系统数据总线相连
    SP*/EN*引脚为输入端
    若8259A级联,由其确定是主片或从片

8295A的初始化

(1)通过软件向其写入控制命令的方法控制其工作状态。

  • 写入初始化命令字ICW
    向8259A送2~4个字节的初始化命令字ICW,写入各ICW寄存器,使其处于准备就绪状态。
  • 写入操作命令字OCW
    向8259A送3个字节的操作命令字OCW,以规定8259A的操作方式(中断控制方式、屏蔽某些中断源、读出8259A工作状态信息)。

一个字节有八个字
(2)过程

  • 确定中断类型号
    应用程序可使用的中断类型号为60H~66H和68H~6FH
  • 保存原中断向量
    在将自己的中断程序入口地址置入中断向量表之前,应先保存该地址中原来的内容。
  • 将自己的中断向量放入向量表;
  • 设置中断屏蔽字(可选)。
  • 若编写的是硬件中断程序,应将所使用的硬件中断对应的8259A的中断屏蔽位开放;
  • CPU开中断;
  • 恢复原中断向量。

(3)8259A的两种命令字
初始化命令字: ICW1~ICW4
操作命令字: OCW1~OCW3

8259A的启动:必须先通过编程写入初始化命令字,使它处于工作起始状态;
初始化过程:按照固定的顺序进行。ICW1、ICW2必须写,ICW3、ICW4视具体情况而定。
在这里插入图片描述
(4)预留命令字

  • ICM1 A0=0
    在这里插入图片描述

  • ICM2 A0=1
    在这里插入图片描述
    在这里插入图片描述

  • ICM3 A0=1
    在这里插入图片描述

  • ICM4 A0=1
    在这里插入图片描述
    (5)操作命令字

  • OCW1 A0=1 实现中断屏蔽
    在这里插入图片描述

  • OCW2 A0=0 中断结束和优先级循环控制
    在这里插入图片描述

  • OCW3
    特殊屏蔽设置,中断查询,读IRR,ISR
    在这里插入图片描述

初始化的举例

只有主片的代码参考:

(1)要求:IBM PC/XT 8259A ,单片,边缘触发,全嵌套方式,设定0级中断类型码为08H。
端口地址 :20H,21H。
(2)硬件连接:CAS2~CAS0不用,SP/EN接+5V。
(3)初始化命令字:
ICW1=0001 0011B ; 边缘触发,单片,需ICW4
ICW2=0000 1000B ;设置类型码的高5位
ICW4=0000 0001B ;全嵌套,非缓冲,非自动EOI,16位机

MOV     AL,   13H          ;ICW1:边沿触发.单片.要ICW4
OUT      20H,AL
MOV      AL , 08H         ;ICW2:IRQ0中断类型为08H
OUT      21H,AL   
MOV     AL,  01H           ;ICW4全嵌套.8086系统
OUT      21H,AL             ;普通EOI方式

主从片一起的代码参考

;主片8259A的初始化
              MOV  AL,11H 	 ;写入ICW1,设定边沿触发,级联方式
              OUT  20H,AL
              JMP  INTR1      	 ;延时,等待8259A操作结束,下同
INTR1:MOV  AL,08H    	  ;写入ICW2,设定IRQ0的中断类型号为08H
              OUT  21H,AL  
              JMP  INTR2
INTR2:MOV  AL,04H      	   ;写入ICW3,设定主片IRQ2级联方式
              OUT  21H,AL
              JMP  INTR3
INTR3:MOV  AL,11H       	  ;写入ICW4,设定特殊全嵌套方式,一般EOI方式
              OUT  21H,AL
                    ┇
;从片8259A的初始化
              MOV  AL,11H 	  ;写入ICW1,设定边沿触发,级联方式
              OUT  0A0H,AL
              JMP  INTR5
INTR5:MOV  AL,70H        	;写入ICW2,设定从片IR0,即IRQ8的中断类型号为70H
              OUT  0A1H,AL
              JMP  INTR6
INTR6:MOV  AL,02H      	;写入ICW3,设定从片级联到主片的IRQ2
              OUT  0A1H,AL
              JMP  INTR7
INTR7:MOV  AL,01H        	  ;写入ICW4,设定普通全嵌套方式,一般EOI方式
              OUT  0A1H,AL

在这里插入图片描述

在这里插入图片描述

  • 7
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值