8259可编程中断控制器用于管理8086系列微机系统的外部中断请求,实现优先权的排队、提供中断类型码、屏蔽中断输入等功能。单片8259可以管理8级中断,如果采用级联方式。
1、8259的内部结构和引脚功能
⑴ 8259的内部结构:有8个部分组成。
① 中断请求寄存器(IRR):是一个8位的锁存寄存器,用来锁存外围设
备送来的IR0~IR7中断请求信号。当某一个IR端呈现高电平,该寄存器相应位置1
② 中断服务寄存器(ISR):是一个8位寄存器,用来存放已被CPU响应
的中断请求信号。
③ 中断屏蔽寄存器(IMR):是一个8位寄存器,用来对各中断请求设置屏蔽信息。当IMR=1时,禁止对应中断源产生中断。
④ 优先权判别电路(PR):用来识别各中断请求的优先级别。在多个中断
请求信号同时出现并经IMR允许进入系统后,先由PR选出其最高优先级的中断请求。
⑤ 读/写控制电路:接收来自CPU的读/写控制命令和片选控制信息。由片选信号和A0指定内部寄存器,CPU通过IN 和OUT指令读、写8259内部寄存器.
⑥ 数据总线缓冲器:是一个8位的双向三态缓冲器,使8259和CPU数据总线D7~D0直接挂接,完成命令和状态信息的传送,是8259与CPU交换数据的必经之路。
⑦ 控制电路:是8259内部的控制器,根据CPU对8259编程设定的工作方式产生内部控制信号,向CPU发出中断请求信号INT,请求CPU响应,同时产生与当前中断请求服务有关的控制信号,并在接收到来自CPU的中断响应信号后,将中断类型号送到数据总线。
⑧ 级联缓冲/比较器:用来实现多个8259的级联连接及数据缓冲方式。级联时,一个8259芯片为主片,最多能连接8个8259从片,因此最多可以实现对64级中断源的管理。
2、8259的引脚功能
① D7~D0: 双向数据总线,是8259与CPU的数据信息通道。
② CS:片选信号线,输入,低电平有效。
③ :写信号,输入,低电平有效。
④ :读信号,输入,低电平有效。
⑤ CAS2~CAS0:3根级联线,主8259芯片与从8259
芯片的连接线。
⑥ / :双重功能线,主片或从片的设定/缓冲器
读/写控制。缓冲方式为输出,非缓冲方式为输入⑦ :中断响应信号线,输入
⑧ INT:中断请求信号线,输出
⑨ IR7~IR0:由外设或其他8259芯片输入的中断请求信号。
3、8259的工作方式
⑴ 中断结束方式
当中断结束时,应将ISR的相应位复位,以清除正在被服务的记录。ISR的复位方式有以下几种:
① 非自动结束方式:当中断服务程序完成时,需提供一条EOI(中断结束)命令(通过配置工作命令字OCW2高3位提供EOI结束命令),使8259中ISR的相应位清除,让ISR只记录那些正在被服务而未服务完的中断。非自动中断结束有两种方式: 一般EOI方式、特殊EOI方式。
a、这种工作方式下,在任一级中断服务结束后,中断返回之前,安排一条一般EOI命令。执行该命令,则8259将ISR寄存器中级别最高的置1位清0。这种结束方式很简单,但只有在当前结束的中断总是位于未服务完的中断中级别最高的中断时,才能使用这种结束方式。
b、当中断服务程序结束,给8259发送EOI命令的同时,将当前结束的中断级别也传送给8259,使8259将ISR寄存器中指定级别的相应位清0,这种结束方式适用于在中断服务程序中改变了中断源的原有的中断优先权的场合。在这种情况下,如果用一般EOI方式,则可能产生错误的ISR复位。
② 自动EOI方式
这种方式在中断服务程序结束时,不需要提供EOI命令,而是由8259在中断响应周期的第2个中断响应信号INTA 结束时,自动执行一个EOI操作,将ISR寄存器中的相应位清0。缺点:采用这种结束方式,在任何一级中断的中断服务过程中,ISR相应位已复位,8259中没有留下任何标志,如果在此过程中出现了新的中断请求,则只要IF=1,不管新出现的中断级别如何,都将打断正在执行的中断服务程序而被优先执行,这就有可能出现低级中断打断高级中断或同级中断相互打断的现象,这种情况称为“重复嵌套”,由于重复嵌套的深度无法控制,很可能造成某些高级中断得不到及时处理的情况。
自动EOI和非自动EOI通过ICW4命令字的D1位进行设置。
⑵缓冲方式
用来指定系统总线与8259数据总线之间是否需要进行缓冲。
① 缓冲方式:可以通过对8259编程设置其工作在缓冲方式下。
② 非缓冲方式:当设置8259芯片工作在非缓冲方式下时
通过ICW4命令字的D2、D3位进行设置
⑶ 嵌套方式
嵌套方式用于8259进行优先级控制。
① 一般全嵌套方式:是指优先级高的中断可以打断低级中断服务。在这种方式下,由各个IRi 端引入的中断请求具有固定的中断优先级别,且优先级顺序由高到低依次为IR0 ~ IR7 。是8259初始化后自动进入的基本方式。
② 特殊全嵌套方式:主要用于级联方式。若不采用特殊全嵌套方式,则主8259芯片将把来自于同一个从8259芯片内的不同级别中断请求认为是同级的,而不予以响应。为了实现真正的全嵌套,在级联方式下就必须采用特殊的全嵌套方式。主8259可以响应同级或更高级的中断,即使中断发生在同一从片,也要分清从片内的各中断级别。
通过ICW4命令字的D4位进行设置
⑷ 中断屏蔽方式
对优先级的管理还可采用设置中断屏蔽寄存器IMR的方式,有选择地对某一级或几级中断请求进行屏蔽。通过中断屏蔽有如下两种实现方式:
① 一般屏蔽方式:可以通过将中断屏蔽寄存器IMR中的某一位或某几位置1,将某一级或几级中断请求屏蔽掉。OCW1命令字进行控制
② 特殊屏蔽方式:可以实现在执行高优先级的中断服务程序时,允许响应低级中断源的中断请求,在这种方式下,解除了对低级中断的屏蔽,即仅对由IMR屏蔽的中断或本级中断进行屏蔽,而允许比它高或低的中断进入系统,从而使得任一级别的中断都有机会得到响应。通过OCW3命令字的D6位进行设置
⑸ 优先级的控制
① 固定优先级:是指8259的8个中断源中,IR0优先级最高,IR1优先级次之,依次降低,直到IR7优先级最低,这个顺序固定不变。用于各中断源的工作速度或重要性有比较明显差别的场合。
② 循环优先级:当8259引入的各中断源的重要性差别不是很明显时,希望中断级别不是固定不变的。8259将中断源IR0~IR7按下标序号顺序构成一个环(即中断源顺序环),优先级顺序依此环规定,有两种规定方式:
自动优先循环级: 刚被服务过的中断源,其优先级别被改为最低级,而将最高优先级赋给原来比它低一级的中断源,其他中断源的优先顺序依中断源顺序环确定。
指定优先循环级:在OCW2(工作命令字)中指定的中断源,其优先级别被设为最低级,其他中断源的优先顺序依中断源顺序环确定。
通过OCW2命令字的高三位位进行设置
4、8259命令字
⑴初始化命令字ICW1
用于规定8259的连接方式(单片或级联)和中断源请求信号的有效形式(电平触发或边沿触发)。当CS =0、A0=0、D4=1时,表示当前写入8259的是ICW1命令字,其格式如图所示。
⑵初始化命令字ICW2
用于设置中断类型码基值。所谓中断类型码基值,是指0级中断源IR0所对应的中断类型码,它是一个可被8整除的正整数。ICW2的格式如图所示。低三位根据当前CPU响应的中断是IR0~IR7中哪一个而自动确定的。
⑶ 初始化命令字ICW3。
此命令字仅用于8259级联方式。它指明从8259芯片的INT引脚与主8259芯片的哪一个中断源请求信号(IR0~IR7中的哪一个)相连。
主8259芯片的ICW3格式如图所示。
从8259 从芯片的ICW3格式如图所示。
初始化⑷命令字ICW4。
只有当ICW1中的IC4(D0)=1时,才需设置ICW4命令字。对于8086系统, ICW4是必须设置的初始化命令字。D7~ D5特征标志,总为0
工作
8259的初始化从ICW1开始,然后顺序写入ICW2、ICW3、ICW4。
命令字OCW1
用来设置中断源的屏蔽状态并写入IMR中,其格式如图所示。为1表示屏蔽
工作命令字OCW2
用于控制中断结束方式及修改优先权管理方式。命令字格式如图所示。
工作命令字OCW3
用于设定特殊的屏蔽方式和查询方式,及读取IRR/ISR寄存器等。命令字格式如图所示。
CPU先用OUT指令将OCW3中D2位置了,然后用in指令进行查询,查询字与OCW3同一个地址,各位意义如下图所示
总结
这是本人对8259的理解和总结,欢迎给位大佬批评指正。文章来源地址https://www.toymoban.com/news/detail-487929.html
文章来源:https://www.toymoban.com/news/detail-487929.html
到了这里,关于8259内部结构、引脚功能、工作方式和命令字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!