8259A芯片使用方法Word格式文档下载.docx
- 文档编号:5803051
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:27
- 大小:500.99KB
8259A芯片使用方法Word格式文档下载.docx
《8259A芯片使用方法Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《8259A芯片使用方法Word格式文档下载.docx(27页珍藏版)》请在冰点文库上搜索。
=0的8259A为从片。
●INT:
中断请求信号,输出,与CPU的中断请求信号线INT相连。
在级联方式下,从片的INT与主片的IR7~IR0中的某一根连接在一起。
中断响应信号,输入,与CPU的中断响应信号线
●CAS2~CAS0:
级联控制线,主片的CAS2~CAS0与从片的CAS2~CAS0对应相连。
对于主片,CAS2~CAS0为输出信号;
对于从片,CAS2~CAS0为输入信号。
当从片发起的中断请求被响应时,主片通过CAS2~CAS0送出相应的编码给从片,告诉从片该中断请求被允许。
●IR7~IR0:
中断请求输入信号,由外设输入。
上升沿(边沿触发方式)或高电平(电平触发方式)表示有中断请求到达。
●VCC:
+5V电源输入信号。
●GND:
电源地
2、内部结构
8259A的内部结构如下图所示:
8259A的内部结构图
●数据总线缓冲器
数据总线缓冲器为三态、双向、8位寄存器。
数据线D7~D0与CPU系统数据总线连接,构成CPU与8259A之间信息传送的通道。
●读/写控制逻辑
读/写控制逻辑用来接收来自系统总线的读/写控制信号和端口地址寻址信号,用于控制8259A内部寄存器的读/写操作。
●级联缓冲/比较器
8259A既可以工作于单片方式,也可以工作于多片级联方式。
级联缓冲/比较器提供多片8259A的管理和选择功能,其中一片为主片,其余为从片。
●中断控制逻辑
中断控制逻辑按照编程设定的工作方式管理中断,负责向片内各部件发送控制信号,向CPU发送中断请求信号INT和接收CPU回送的中断响应信号
,控制8259A进入中断管理状态。
●中断请求寄存器(interruptrequestregister,IRR)
IRR是一个8位(D0~D7)寄存器,它接受并锁存来自IR0~IR7的中断请求信号,也就是说它记录着当前的中断请求。
D0~D7与中断请求信号IR0~IR7对应,当IRi(i=0~7)上出现中断请求信号时,对应的Di置1。
因为同一时刻可能有多个中断请求到达,因此IRR可能有多个位置1。
第一个中断响应信号
到达后(CPU在对8259A的中断请求INT进行响应时,会连续返回两个中断响应信号
,产生两个中断响应总线周期),如果8259A决定使IRi得到响应,则会将对应的Di清除。
第一个中断响应脉冲
到达后,IRR锁存功能失效,不接受IR0~IR7上的中断请求信号;
直到第二个中断响应脉冲
结束后,IRR锁存功能才得以恢复。
●中断服务寄存器(interruptserviceregister,ISR)
ISR是一个8位(IS0~IS7)寄存器,用于记录CPU当前正在服务的中断。
IS0~IS7与中断请求信号IR0~IR7对应。
达到后,如果8259A决定使IRi得到响应,则会将对应的ISi(i=0~7)置1,表示IRi正在被服务。
ISi的复位则由8259A中断结束方式决定。
若8259A被设置为自动结束方式,ISi会在第二个中断响应脉冲
的后沿被自动复位为0;
若8259A被设置为非自动结束方式,则Di应由其对应的中断服务程序发送来的中断结束命令(EOI)复位。
ISi置1可阻止与其同级或更低优先级的中断请求被响应,但不能阻止比其优先级高的中断请求被响应,即允许中断嵌套。
因此,ISR中可能不止一位被置1。
●中断屏蔽寄存器(interruptmaskregister,IMR)
IMR是一个8位(IM0~IM7)寄存器,用来存放IR0~IR7的中断屏蔽标志。
IM0~IM7与中断请求信号IR0~IR7对应,用于屏蔽IRi。
当IMi=1时,对应的IRi中断请求被禁止;
IMi=0时,对应IRi中断被开放。
●优先权判决器(priorityregister,PR)
优先权判决器将IRR中记录的当前中断请求与ISR中记录的CPU正在服务的中断按中断优先级排队并进行比较,如果IRR中优先级最高者的优先级高于ISR中优先级最高者,则由中断控制逻辑向CPU发出中断请求信号INT,使CPU暂停当前的中断服务,转而响应IRR中优先级最高者,即进行中断嵌套;
否则8259A不向CPU发起中断请求INT,CPU继续当前的工作。
二、8259A的工作过程
1、接受来自IR0~IR7的中断请求,使IRR的对应位置1。
2、PR对IRR中记录的且未被屏蔽的中断和IRS中记录的中断进行优先权判决,并决定是否向CPU发起中断请求INT。
如果IRR中优先级最高者的优先级高于ISR中优先级最高者,则向CPU发出中断请求信号INT,否则不发出。
3、CPU收到INT,如果IF=1,则待当前执行的指令结束后连续返回给8295A两个中断响应信号
。
4、8295A收到第一个中断响应信号
后
(1)使IRR的锁存功能失效,不再接受中断请求,直到第二个中断响应信号
结束后恢复。
(2)对IRR中记录的优先级最高的中断请求进行响应:
使其对应的ISR位置1,并使其对应的IRR位复位。
5、8295A收到第二个中断响应信号
(1)将被响应中断的中断类型码送CPU。
CPU用中断类型码乘以4就得到了该中断的中断向量的地址,然后从该地址中取出中断向量,转而执行该中断的中断服务程序,即对该中断进行服务。
(2)如果8295A工作在自动结束方式,在第二个中断响应脉冲
的后沿,会使被响应中断对应的ISR位复位。
如果8295A工作在非自动结束方式,则中断服务程序在结束之前,应通过中断结束命令(EOI)使中断对应的ISR位复位。
三、8259A的工作方式
8259A的中断管理功能很强,单片可以管理8级外部中断,在多片级联方式下最多可以管理64级外部中断,并且具有中断优先权判优、中断嵌套、中断屏蔽和中断结束等多种中断管理方式。
1、中断优先方式
一般情况下,8259A总是响应优先级最高的中断请求,而且使CPU暂停对低优先级中断的服务,转而服务高优先级的中断,即中断嵌套。
8259A的中断优先方式分为两种:
●固定优先级方式
在固定优先级方式中,IR0~IR7的中断优先级是固定不变的,除非通过编程重新设置优先级别。
8259A在加电后就工作在固定优先级方式,刚加电时,IR0~IR7默认的优先级顺序是:
IR0,IR1,IR2,…,IR7,其中,IR0的优先级最高,IR7的优先级最低。
●自动循环优先级方式
在自动循环优先级方式中,IR0~IR0优先级是可以改变的。
其变化规律是:
当某个中断请求的服务结束后,它的优先级自动降为最低,原来比它低一级的中断则变为最高级,IR0~IR7的优先级按右循环方式改变。
例如,若初始优先级从高到底依次为IR0,IR1,IR2,…,IR7,此时如果IR4和IR6有中断请求,则先服务IR4。
在IR4被服务之后,它自动降为最低级,IR5变为最高级,这时中断优先级顺序变为:
IR5,IR6,IR7,IR0,IR1,IR2,IR3,IR4。
这种优先级管理方式,可以使8个中断请求都可享受同等优先服务的权利。
自动循环优先级方式分为普通自动循环方式和特殊自动循环方式两种:
普通自动循环方式的特点是:
IR7~IR0的初始优先级顺序由系统指定,即优先级从IR0到IR7依次降低。
以后随着中断的产生,它们的优先级顺序将按右循环方式自动改变。
而特殊自动循环方式的特点是:
通过编程人为地将某个中断请求降为最低级,而其它中断请求的优先级也随之改变,以后随着中断的产生,它们的优先级顺序将按右循环方式自动改变。
例如,通过编程将IR4降为最低级后,IR7~IR0的优先级顺序则变为:
2、中断嵌套方式
无论是固定优先级方式而是自动循环优先级方式,它们都允许中断嵌套,即允许更高优先级的中断打断CPU当前的中断服务过程,使CPU转而为更高优先级的中断进行服务。
8259A允许两种嵌套方式:
●普通全嵌套方式
普通全嵌套方式是8259A最常用的工作方式,简称为全嵌套方式,它是8259A初始化后默认的工作方式。
其特点是:
在CPU进行中断服务时(即执行中断服务程序过程中),若有新的中断请求到来,8259A只允许比当前服务的中断请求的优先级“高”的中断请求进入(也就是为比当前服务的中断请求的优先级“高”的中断请求向CPU发出INT信号),而不允许“同级”或“低级”的中断请求进入。
●特殊全嵌套方式
特殊全嵌套方式是8259A在多片级联方式下使用的一种嵌套方式。
在CPU进行中断服务时,8259A除了允许更高优先级的中断请求进入外,还允许同级中断请求进入,从而实现了对同级中断请求的特殊嵌套。
在级联方式下,主片通常设置为特殊全嵌套方式,从片设置为普通全嵌套方式。
这样设置的好处在于:
当从片的某个中断请求得到响应并进入中断服务期间后,来自该从片的“更高级”的中断请求仍能被主片响应。
这是因为从片的所有中断请求都是通过同一个IRi引入主片,对于主片来说,来自从片的所有中断请求都属于同级,而特殊全嵌套方式允许同级的中断请求进入,因此主片能响应来自从片的“更高级”的中断请求。
3、中断屏蔽方式
中断屏蔽方式是对8259A的中断请求IR0~IR7进行屏蔽的一种中断管理方式,有普通屏蔽方式和特殊屏蔽方式两种。
●普通屏蔽方式
普通屏蔽方式是通过8259A的中断屏蔽寄存器(IMR)来实现对中断请求IRi的屏蔽。
通过编程写入操作命令字OCW1,将IMR中的IMi位置1,以达到对相应的IRi(i=0~7)中断请求的屏蔽。
一旦IRi被屏蔽,它就不可能被8259A响应。
●特殊屏蔽方式
在某些应用场合,我们希望正在被CPU服务的中断能够被更低优先级的中断请求打断。
为达到这个目的,自然会想到使IMR中的相应位置1,使本级中断受到屏蔽,从而为更低优先级的中断请求进入提供可能,但是这样做有一个问题:
每当一个中断请求被响应时,8259A会使该中断对应的ISR位置1,只要CPU没有对该中断发出中断结束命令(EOI),8259A就会禁止所有比它优先级低的中断请求进入。
如果8259A工作在特殊屏蔽方式,使IMR的某位置1,就会同时使ISR的对应位自动复位。
这样就可以使更低优先级的中断请求进入,当然未被屏蔽的更高优先级的中断请求也可以进入。
可以通过编程写入操作命令字OCW3来设置或取消特殊屏蔽方式。
4、中断结束方式
当一个中断请求IRi得到响应时,8259A会将其对应的ISR位置1,CPU服务完该中断后,应及时清除其对应ISR位,否则就意味着CPU仍在为该中断服务,致使比它优先级低的中断请求无法进入。
8259A提供了以下三种中断结束方式:
●自动结束方式
如采用自动结束方式,则刚被响应的中断请求对应的ISR位会在第二个中断响应脉冲
的后沿被复位。
这种中断服务结束方式是由硬件自动完成的。
需要注意的是:
尽管中断请求对应的ISR位被清除,但其中断服务程序并不一定真正结束,若在中断服务程序的执行过程中有另外一个比其优先级低的请求信号到来,因8259A并没有保存任何标志来表示当前中断服务尚未结束,致使低优先级中断请求进入,打断当前中断服务程序的执行。
因此这种方式只适合用在没有中断嵌套的场合。
●普通结束方式
如采用普通结束方式,则中断服务程序在结束之前应向8259A写入一个包含了普通EOI命令的操作命令字OCW2,该命令不指定需复位的ISR位。
收到该命令后,8259A会清除ISR中已置1的优先级最高的那一位。
在普通全嵌套方式下,因为CPU正在服务的中断只会被优先级更高的中断请求打断,因此当前结束的中断必定是所有正在服务的中断中优先级最高的,它对应着ISR中已置1的优先级最高的那一位,因此普通结束方式适用于普通全嵌套方式下的中断结束。
●特殊结束方式
特殊结束方式要求中断服务程序在结束之前向8259A写入一个包含了特殊EOI命令的操作命令字OCW2,该命令要指定需复位的ISR位。
由于在特殊EOI命令中明确指出了复位ISR中的哪一位,因此,它可以用于普通全嵌套方式下的中断结束,更适用于优先级嵌套结构有可能遭到破坏时(CPU正在服务的高优先级中断被低优先级/同级的中断请求打断)的中断结束。
在此,对级联系统中的从片的中断结束处理做一些说明。
在主片设置为特殊全嵌套方式,从片设置为全嵌套方式的情况下,从片可能出现中断嵌套。
来自从片的任意中断的中断服务程序在结束之前,都应先向从片发出一个普通EOI命令,使其本身对应的ISR位复位,然后读出ISR的内容,如果为0,则向主片发出一个特殊EOI命令,清除主片中与引入从片的IRi对应的ISR位;
如果从片ISR的内容不为0,则说明从片中仍有中断服务尚未完成,此时,则不需要向主片发出特殊EOI命令。
5、中断触发方式
中断请求输入端IR0~IR7可采用的中断触发方式有电平触发和边沿触发两种,由初始化命令字ICW1中的LTIM位来设定。
当LTIM设置为1时,为电平触发方式。
8259A检测到IRi(i=0~7)端有高电平时产生中断。
如采用这种触发方式,中断请求信号在被响应后应及时撤除,否则可能引起不该有的第二次中断。
当LTIM设置为0时,为边沿触发方式。
8259A检测到IRi端有由低到高的跳变信号时产生中断。
无论采用哪种中断触发方式,中断请求信号都应维持足够的宽度,即在第一个中断响应信号
到达之前,都必须保持高电平。
6、级联工作方式
当中断源超过8个时,就无法用一片8259A来管理,这时可采用8259A的级联工作方式。
指定一片8259A为主控芯片(主片),它的INT输出端接到CPU的INT输入端,而其余的8259A芯片均作为从属芯片(从片),其INT输出端分别接到主片的不同IR输入端。
由于8259A有8个IR输入端,故一个主片可连接8个从片,最多允许有64个IR中断请求输入。
由一片主片和两片从片构成的级联中断系统如下图所示,其中省略了用于产生片选信号的译码器。
8259A多片级联方式的硬件连接图
在级联系统中,主片和从片都有独立的地址,而且需分别进行初始化编程来设置各自的初始工作方式。
若中断请求来自于从片,该请求将通过从片的INT输出端传给主片,一旦该请求被主片响应,主片会通过CAS0~CAS02来通知相应的从片,而从片即可把该中断请求对应的中断类型码放到数据总线上,使该中断请求得到CPU的服务。
7、总线连接方式
8259A数据线与系统数据总线的连接有缓冲和非缓冲两种方式。
●缓冲方式
如果8259A通过总线驱动器和系统数据总线连接,8259A应选择缓冲方式。
当设置为缓冲方式后,
即为输出引脚。
在8259A向CPU传送中断类型码的时候,
输出一个低电平,用此信号作为总线驱动器的启动信号。
●非缓冲方式
如果8259A的数据线与系统数据总线直接相连,那么8259A工作在非缓冲方式。
四、8259A的编程
8259A是可编程中断控制器,在其工作之前,必须采用写入控制命令的方法来对其进行初始化;
在其工作时,还可以采用相同的方式来改变其工作状态,这就是8259A的编程。
控制命令分为初始化命令字ICW和操作命令字OCW。
ICW有4个,分别是ICW1~ICW4;
OCW有3个,分别是OCW1~OCW3,它们被写入8259A后,分别保存在相应的寄存器中,例如,ICW1保存在ICW1寄存器中,OCW1保存在OCW1寄存器中。
8259A的编程分为初始化编程和操作方式编程。
●初始化编程
在8259A工作之前,通过软件向其写入初始化命令字ICW1~ICW4,设置其初始工作方式。
●操作方式编程
在8259A工作的过程中,通过软件向其写入操作命令字OCW1~OCW3,改变其工作方式。
OCW可在8259A初始化后的任何时刻写入。
1、8259A内部寄存器的寻址方法
8259A有多个内部寄存器,单靠
和A0无法满足寄存器寻址的需要,因此还要在
、
和数据线D3、D4的配合下,才能完成对多个内部寄存器的访问。
内部寄存器的访问方法如下图所示:
8259A的端口分配及读/写操作功能表
2、8259A的初始化顺序
8259A中的寄存器端口地址有两个,一个是奇地址(A0=1),一个是偶地址(A0=0)。
通过上表可以看出,在往8259A写入控制命令时,若A0=1,则写入的对象包括4个寄存器ICW2、ICW3、ICW4和OCW1,这说明四个寄存器端口共用同一个I/O地址,为了区分写入的到底是哪个寄存器,8259A规定了严格的写入顺序,即按照ICW2→ICW3→ICW4→OCW1的顺序写入。
同样在初始化时,ICW1~ICW4的写入也必须遵循ICW1→ICW2→ICW3→ICW4这样的顺序。
3、8259A的初始化命令字ICW
通过初始化编程,可将ICW写入8259A,设置其初始工作方式。
(1)ICW1
写ICW1的条件为:
A0=0,D4=1,这时,写入的数据被当成是ICW1。
写ICW1意味着对8259A进行初始化,同时8259A还会完成以下工作:
●清除ISR和IMR。
●将中断优先级顺序设为初始状态:
IR0(最高)~IR(最低)。
●采用普通屏蔽方式。
●采用非自动中断结束方式。
ICW1的格式如下图所示:
图ICW的格式
●IC4:
指示在初始化时是否需要写入命令字ICW4。
在80x86CPU系统中需要定义ICW4,即设IC4=1。
●SNGL:
指示8259A在系统中使用单片还是多片级联。
SNGL=1为单片,SNGL=0为多片级联。
●ADI:
设置调用时间间隔,在80486CPU中无效。
●LTIM:
定义IRi的中断请求触发方式。
LTIM=1为电平触发,LTIM=0为边沿触发。
●D4:
ICW1的标志位,恒为1。
●D5~D7:
未用,通常设置为0。
(2)ICW2
ICW2的写入条件为:
A0=1,它只能在ICW1写入之后写入。
ICW2用于设置中断类型码,其格式如下图所示:
图ICW2的格式
IR0~IR7各有一个中断类型码,它们是连续的,例如IR0的中断类型码为08H,IR7的中断类型码为0FH。
中断类型码可用8位二进制数来表示,对于8259A的8个中断类型码而言,它们的高5位都是相同的,不同的是低3位。
因此在初始化时只需设置ICW2的高5位,低3位可任意。
8259A决定响应某个中断时,它会将该中断请求的序号放入ICW2的低3位,并将该寄存器的内容放到数据总线供CPU读取。
例如:
向ICW2写入40H时,则IR0~IR7对应的中断类型号为40H~47H。
(3)ICW3
ICW3的写入条件为:
A0=1,它只能在ICW2写入之后写入。
ICW3仅在级联方式下才需要写入,也就是当ICW1的SNGl位设为0时才需要写入。
主片和从片的ICW3的格式不同,如下图所示:
图主片的ICW3格式
图从片的ICW3格式
●S0~S7与IR0~IR7相对应,若主片IRi(i=0~7)引脚上连接从片,则Si=1,否则Si=0。
●ID2~ID0是从片标识码,它必须与本从片所连接之主片IR线的序号一致。
例如,当从片的中断请求信号线INT与主片的IR2连接时,ID2~ID0应设置为010。
●D7~D3未用,通常设置为0。
在主片响应来自从片的中断请求时,它通过级联信号线CAS2~CAS0送出被响应中断的从片标识码,各从片用自己的ICW3和CAS2~CAS0进行比较,二者一致的从片被确定为当前中断源,该从片可以将中断的中断类型码送到数据总线供CPU读取。
(4)ICW4
ICW4的写入条件为A0=1,它只能在ICW3写入之后才能写入。
ICW4用于设定8259A的工作方式,其格式下图所示:
图ICW4的格式
●mP:
设置CPU模式。
mP=1为80x86模式,mP=0为8080/8085模式。
●AEOI:
设置8259A的中断结束方式。
AEOI=1为自动结束方式,AEOI=0为非自动结束方式。
●M/
选择缓冲级联方式下的主片与从片。
M/
=1为主片,M/
=0为从片。
●BUF:
设置缓冲方式。
BUF=1为缓冲方式,BUF=0为非缓冲方式。
●SFNM:
设置特殊全嵌套方式。
SFNM=1为特殊全嵌套方式,SFNM=0为普通全嵌套方式
●D7~D5:
未定义,通常设置为0。
需要注意:
当多片8259A级联时,若在8259A的数据线与系统总线之间加入总线驱动器,
则作为总线驱动器的控制信号使用,此时D3位BUF应设置为1。
主片和从片的区分不能再依靠
引脚,而是由M/
来选择,当M/
=0时为从片;
当M/
=1时为主片。
如果BUF=0,则M/
定义无意义。
4、8259A的操作命令字OCW
在8259A工作时,可通过写入OCW,改变其工作方式。
OCW1~OCW3的写入没有固定顺序。
(1)OCW1
OWC1的写入条件为:
A0=1。
通过它可控制哪些中断请求被屏蔽。
其格式下图所示:
图OCW1的格式
当Mi=1时,对应的IRi请求被禁止;
当Mi=0时,对应的IRi请求被允许。
(2)OCW2
OW2的写入条件为:
A0=0。
OWC2用于设置中断优先方式和中断结束方式。
其格式如下图所示:
图OCW2的格式
●R:
设置中断优先方式。
R=1为自动循环优先级方式;
R=0为固定优先级方式。
●D4、D3为OCW2标志位,必须都设为0。
●SL:
设置特殊自动循环方式。
当SL=1时,若EOI=0且R=1,L2~L0对应的IRi的优先级被设为最低;
若EOI=1,L2~L0对应的ISR位被复位。
SL=0时,L2~L0的编码无效。
●L2~L0:
对应着IR7~IR0和IS7~IS0。
当SL=1时,它有两个作用:
若EOI=0且R=1,L2~L0对应的IRi的优先级被设为最低;
●EOI:
中断结束命令。
当EOI=1时,若SL=1,则使L2~L0对应的ISR位复位,这种结束中断的方式称为特殊中断结束方式;
若SL=0,则使ISR中置1的优先权最高位复位,这种结束中断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8259 芯片 使用方法