微机原理与接口技术第七章guyu_第1页
微机原理与接口技术第七章guyu_第2页
微机原理与接口技术第七章guyu_第3页
微机原理与接口技术第七章guyu_第4页
微机原理与接口技术第七章guyu_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微型计算机原理与接口技术第七章杭州电子科技大学自动化学院2/4/2023第七章微型计算机中断系统概述中断处理过程中断优先级和中断向量可编程中断控制器内容提要2/4/20232 当CPU正常运行程序时,由于微处理器内部事件或外设请求,引起CPU中断正在运行的程序,转去执行请求中断的外设(或内部事件)的中断服务子程序,中断服务程序执行完毕,再返回被中止的程序,这一过程称为中断。

1.中断源内部中断,外部中断

一、中断概念

2.中断响应中断请求何时发生是随机的。CPU在每条指令的最后一个T周期去检测INTR引脚,CPU一旦检测到有中断请求,在满足中断响应的条件下(IF=1),CPU响应中断,向外设发出INTA中断响应信号。并保护断点(当前CS,IP和PSW值入栈),然后转向中断服务程序。中断服务程序执行完毕,CPU返回原执行程序的中断处,继续向下执行,称为中断返回。§7-1概述2/4/20233

3.中断向量表

CPU响应中断后,必须由中断源提供地址信息,引导程序进入中断服务子程序,这些中断服务程序的入口地址存放在中断向量表中。内存中专门开辟一个区域,存放中断向量表(也称中断矢量表)。

4.中断优先级当有多个中断源请求中断时,中断系统判别中断申请的优先级,CPU响应优先级高的中断,挂起优先级低的中断。当CPU在运行中断服务子程序时,又有新的更高优先级的中断申请进入,CPU要挂起原中断进入更高级的中断服务子程序,实现中断嵌套功能。§7-1概述——中断概念2/4/20234

5.中断屏蔽当中断源申请中断时,CPU可以由软件设置,使之不能响应,称为中断屏蔽。对于各种计算机系统,中断系统的构成差别很大,但都具有基本功能:⑴能实现中断响应、中断服务、中断返回、中断屏蔽;⑵能实现中断优先级排队;⑶能实现中断嵌套。§7-1概述——中断概念2/4/20235

二、中断分类

8086/8088有一个强有力的中断系统,可以处理256种不同的中断。以产生中断的方法来分类,256种中断可以分为两大类:外部中断和内部中断。外部中断也称硬件中断,是由外部的硬件产生的,硬件中断又分成不可屏蔽中断和可屏蔽中断。

§7-1概述——中断分类2/4/20236§7-1概述——中断分类外部中断(硬件中断)内部中断:(引起中断的原因)中断源引脚NMI引入(马上响应)(处理如系统掉电等重大故障)引脚INTR引入IF=1(允许响应)IF=0(不允许响应)意外情况如除法运算出错、溢出错误等;调试;中断指令INTn;2/4/20237

NMIINTR可屏蔽中断请求图7-18086/8088中断源§7-1概述——中断分类2/4/20238

1.CPU响应可屏蔽中断的四个条件

外设向CPU发出中断请求的时间是随机的,而CPU在每条指令的最后一个机器周期的最后一个T状态去采样中断请求输入线INTR,当CPU在INTR引脚上接收到一个有效的中断请求信号,而CPU内部中断允许触发器是开放的(开中断可用指令STI来实现),且中断接口电路中的中断屏蔽触发器未被屏蔽,则在当前指令执行完后CPU响应中断。

外设提出中断申请本中断位未被屏蔽中断允许中断优先级最高

可屏蔽中断处理的过程一般分成以下几步:中断请求;中断响应;保护现场;转入执行中断服务子程序;恢复现场和中断返回。

§7-2中断处理过程——CPU响应中断过程2/4/20239

2.CPU响应可屏蔽中断的过程从数据总线上读取中断类型号,将其存入内部暂存器。将标志寄存器PSW的值入钱。将PSW中的中断允许标志IF和单步标志TF清0,以屏蔽外部其它中断请求,避免CPU以单步方式执行中断处理子程字。

保护断点,将当前指令下面一条指令的段地址CS和指令指针IP的值入栈,中断处理完毕后,能正确返回到主程序继续执行。根据中断类型号到中断向量表中找到中断向量,转入相应中断服务子程序。中断处理程序结束以后,从堆栈中依次弹出IP、CS和PSW,然后返回主程序断点处,继续执行原来的程序。

§7-2中断处理过程——CPU响应中断过程2/4/202310可屏蔽CPU响应中断过程取下一条指令有中断请求指令结束响应中断关中断保护断点寻找中断源执行指令转中断服务程序保护现场中断服务恢复现场开中断返回否是是否图7-2可屏蔽中断处理流程图§7-2中断处理过程——CPU响应中断过程2/4/202311

3.CPU须执行完下一条指令才响应可屏蔽中断的情况发出中断请求时,CPU正在执行封锁指令

。执行向段寄存器传送数据的指令(MOV和POP指令)

。遇STI和IRET指令。注意:当遇到等待指令或串操作指令时,允许在指令执行过程中进入中断,但在一个基本操作完成后响应中断。

4.CPU响应不可屏蔽中断的过程不必判断IF是否为1,也不是由外设接口给出中断类型号,从NMI引脚进入的中断请求规定为类型2。在运行中断子程序过程中,若NMI上有不可屏蔽中断请求进入,CPU仍能响应。

§7-2中断处理过程——CPU响应中断过程2/4/202312

5.软件中断响应过程软件中断由程序设定,没有随机性,它不受中断允许标志位IF的影响,中断类型号由指令INTn中的n决定。正在执行软件中断时,如果有不可屏蔽中断请求,就会在当前指令执行完后立即予以响应。如果有可屏蔽中断请求,并且IF=1,也会在当前指令执行完后予以响应。§7-2中断处理过程——CPU响应中断过程2/4/202313

二、中断向量表

中断向量表又称中断服务程序入口地址表。8086/8088系统允许处理256种类型的中断,对应类型号为0~FFH。在存储器的00000H~003FFH,占1K字节空间,用作存放中断向量。每个类型号占4个字节,高2个字节存放中断入口地址的段地址,低2个字节存放段内偏移地址。各个中断处理程序的段地址和段内偏移地址按中断类型号顺序存放在中断向量表中。因此由中断类型号n×4即可得到相应中断向量的地址,取4n和4n十1单元中的内容(中断入口段内偏移地址)装入指令指针寄存器IP,取4n十2和4n十3单元中内容(中断入口段地址)装入代码段寄存器CS,即可转入中断处理程序。1.中断向量表§7-2中断处理过程——中断向量表2/4/202314类型255中断入口……类型32中断入口类型31中断入口……类型5中断入口类型4中断入口(溢出中断)类型3中断入口(断点中断)类型2中断入口(NMI)类型1中断入口(单步中断)类型0中断入口(除法出错)IPCSIPCSIPCS03F07C08000000400800C010014专用中断系统使用供用户使用(224个)(5个)(27个)图7-48086/8088中断向量表§7-2中断处理过程——中断向量表2/4/202315

2.中断向量(中断入口地址)的设置有两种方法可为中断类型号n设置中断向量,即将中断服务程序的入口地址置入中断类型号n所对应的中断向量表中。一种方法用指令来设置,另一种方法利用DOS功能调用来设置。

用指令来设置中断服务程序的入口地址表

利用DOS功能调用来设置中断服务程序的入口地表§7-2中断处理过程——中断向量表2/4/202316方法一:MOVAX,0;主程序中设置MOVES,AXMOVDI,N×4;中断类型号×4MOVAX,

OFFSETINTRAD;送中断子程序的偏移地址至AXCLDSTOSW;偏移地址送到[4n],[4n+1]单元MOVAX,

SEGINTRADSTOSW;段地址送到[4n+2],[4n+3]单元STI;开中断……INTRAD:……;中断服务子程序IRET用指令来设置中断服务程序的入口地址表§7-2中断处理过程——中断向量表2/4/202317方法二:MOVAX,0;主程序中设置MOVES,AXMOVBX,N×4;中断类型号×4MOVAX,OFFSET

INTRAD;置偏移地址MOVES:WORDPTR[BX],AXMOVAX,SEGINTRAD;置段地址送MOVES:WORDPTR[BX+2],AXSTI;开中断……INTRAD:……;中断服务子程序IRET§7-2中断处理过程——中断向量表2/4/202318设置中断向量:把由AL中指定中断类型号的中断向量DS:DX,放置在中断向量表中。预置:AL=中断类型号DS:DX=中断服务程序入口地址

AH=25H执行:INT21H

利用DOS功能调用来设置中断服务程序的入口地址表取中断向量:把由AL中指定书断类型号的中断向量.预置:AL=中断类型号

AH=35H执行:INT21H返回:

ES:BX=中断服务程序入口地址§7-2中断处理过程——中断向量表2/4/202319MOVAL,N;取中断向量到ES:BXMOVAH,35HINT21HPUSHES;存原中断向量PUSHBXPUSHDS;下面要用到DSMOVAX,SEGINTRAD;设置中断向量段地址在DSMOVDS,AXMOVDX,OFFSETINTRADMOVAL,N;中断类型号nMOVAH,25H;设置中断向量INT21H

§7-2中断处理过程——中断向量表2/4/202320 POPDS ……;中断在此段程序内产生并响应

POPDX;恢复原中断向量 POPDS

MOVAL,N MOVAH,25H INT 21H RETINTRAD: …… IRET

§7-2中断处理过程——中断向量表2/4/202321中断类型号的获取对于除法出错,单步中断,不可屏蔽中断NMI,断点中断和溢出中断,CPU分别自动提供中断类型号0~4。对于用户自己确定的软件中断INTn,类型号由n决定。对外部可屏蔽中断INTR,可以用可编程中断控制器8259A获得中断类型号。

§7-2中断处理过程——中断向量表2/4/202322三、中断程序相关

3.1主程序中的初始化(1)设置中断向量。(2)设置8259A的寄存器。(3)设置CPU中断允许位标志IF(开中断STI)§7-2中断处理过程——中断服务子程序2/4/2023233.2中断服务子程序1.程序开始必须保护中断现场,可以通过一系列PUSH指令将CPU各寄存器的值入栈保护。2.若允许中断嵌套,则用STI指令来设置开中断,使中断允许标志IF为1。3.执行中断处理程序。4.用CLI指令来设置关中断,使中断允许标志IF=0,禁止其他中断请求进入。§7-2中断处理过程——中断服务子程序2/4/2023245.给中断命令寄存器送中断结束命令EOI,使当前正在处理的中断请求标志位被清除,否则同级中断或低级中断的请求仍会被屏蔽掉。6.恢复中断时的现场,通过一系列POP指令将CPU各寄存器的值恢复。7.用STI指令来设置开中断,允许其他中断请求进入。8.用中断返回指令IRET返回主程序,此时堆栈中保存的断点和标志值分别装入IP、CS和PSW。§7-2中断处理过程——中断服务子程序2/4/202325说明:中断服务程序中两次开中断,第一次开中断是为了允许中断嵌套而设置的。第二次开中断是因为恢复寄存器内容时,为了防止有中断进入破坏其内容,先执行了关中断,然后在中断返回前再开中断,这样返回主程序后,中断请求能得到允许。中断结束命令EOI一般在中断处理结束前发出,使一次中断处理的过程是完整的。§7-2中断处理过程——中断服务子程序2/4/202326四、中断响应时序§7-2中断处理过程——中断响应时序2/4/202327CPU对可屏蔽中断请求的响应过程要执行两个连续的中断响应INTA总线周期,每个总线周期包括4个时钟周期Tl~T4。第一个中断响应总线周期,CPU通知外设准备响应中断,外设应该准备好中断类型号,第二个中断响应总线周期,CPU接收外设接口发来的中断类型号。CPU将地址/数据总线置于浮动状态,在T2~T4期间发出中断响应信号INTA给8259A,表示CPU响应此中断请求,禁止来自其它总线控制器的总线请求。在最大模式时,CPU启动LOCK信号,通知系统中总线仲裁器8289,使系统中其它处理器不能访问总线。1.第一个INTA周期§7-2中断处理过程——中断响应时序2/4/202328

CPU向8259A发出第二个INTA信号,8259A响应第二个INTA,在T2和T3时钟周期将一个字节的中断类型号N送到数据总线低8位。CPU读取中断类型号N,乘以4,得到中断向量表的地址继而查得中断服务程序入口地址。CPU保护PSW,清标志位IF和TF,将断点返回地址CS和IP入栈,转向中断服务程序入口。

2.第二个INTA周期注意:8086执行中断响应时,在两个中断响应周期之间要插入2~3个空闲状态,8088系统并没有在两个中断响应总线周期中插入空闲状态。

§7-2中断处理过程——中断响应时序2/4/202329

8086要求中断请求信号INTR是一个电平信号,必须维持2个时钟周期的高电平。否则CPU执行完一条指令后,如果总线接口部件正在执行总线周期,则会使中断请求得不到响应而执行其他的总线周期。8086工作在最大模式时,不从INTA引脚上发中断响应脉冲,而是由S2S1S0组合为000,通过总线控制器8288发出INTA中断响应信号。8086不允许在两个INTA周期之间响应总线保持请求(通过HOLD或RQ/GT线请求),但如果同时出现中断请求和总线保持请求,则CPU先对总线保持请求服务。

3.说明§7-2中断处理过程——中断响应时序2/4/202330

外设的中断类型号一般通过16位数据总线的低8位传送给8086,所以提供中断向量的外设接口应该接在数据总线的低8位上。在两个中断响应总线周期中,地址/数据/状态总线是浮空的,但是M/IO为低电平,而ALE在每个总线周期的T1状态输出一个高电平脉冲,作为地址锁存信号。软件中断和非屏蔽中断不按照这种时序来响应中断。§7-2中断处理过程——中断响应时序2/4/202331

多个中断源同时向CPU请求中断,CPU响应哪个中断由中断优先级排队决定,CPU先响应优先级高的中断请求。当CPU正在处理中断时,有更高优先级别的中断请求,并且IF=1,CPU能响应更高级别的中断请求,而屏蔽掉低级的中断请求,形成了中断嵌套,或称为多重中断。多个中断源的中断流程如图7-7所示,与单级中断流程图7-2相比,流程图中增加了屏蔽本级与较低级中断请求;中断服务前要开中断,以允许中断嵌套;恢复现场前要关中断,使恢复现场不受干扰;返回前要开中断,以允许其它中断能被CPU响应。§7-2中断优先级和中断嵌套——中断优先级一、中断优先级2/4/202332中断服务子程序关中断开中断恢复现场返回开中断执行一条指令关中断取下一条指令保护现场屏蔽本级和低级中断中断?是否图7-7多个中断源中断流程图§7-2中断优先级和中断嵌套——中断优先级2/4/202333

1.软件查询中断优先级软件查询中断方式,是将各个外设的中断请求信号通过或门相“或”后,送到CPU的INTR端,同时把几个外设的中断请求状态位组成一个端口,赋以端口号。任一外设有中断请求,CPU响应中断后进入中断处理子程序,用软件读取端口内容,逐位查询端口的每位状态,查到哪个外设有请求中断,就转入哪个外设的中断服务程序。查询程序的次序,决定了外设优先级别的高低,先测试的中断源优先级别最高。

IBMPC机中规定优先级从高到低的次序为:内中断(除法错,INTO,INTn)不可屏蔽中断(NMI)可屏蔽中断(INTR)单步中断§7-2中断优先级和中断嵌套——中断优先级2/4/202334

2.硬件查询中断优先级——菊花链法§7-2中断优先级和中断嵌套——中断优先级2/4/202335

3.矢量中断优先级IR0中断类型寄存器由中断请求决定图7-9矢量中断优先权控制器的原理图IR1IR7……§7-2中断优先级和中断嵌套——中断优先级2/4/202336二、中断嵌套

§7-2中断优先级和中断嵌套——中断嵌套2/4/202337

从上图中可以看到:主程序必须有开中断指令,使IF=1,才能响应中断。进入中断处理程序时,系统自动关中断,在中断服务程序中必须有STI开中断指令,这样才可以允许其它中断进入实现中断嵌套。中断结束返回前要有EOI中断结束命令,用来清除中断服务寄存器中的对应位,允许低级中断进入。最后有中断返回指令IRET,使程序返回到被中断的程序的断点处。中断处理程序中如果没有EOI指令,中断处理中不会受其它中断影响,在执行IRET指令后,因为自动返回中断断点及中断标志寄存器PSW的内容,当IF的值为1,系统便能开放中断。§7-2中断优先级和中断嵌套——中断嵌套2/4/202338

一个正在执行的中断处理程序,中断服务寄存器相应位置“1”,在开中断(IF=1)的情况下,能够被优先级高于它的中断源中断。但如果中断处理中提前发出了EOI命令,则清除了正在执行的中断服务,中断服务寄存器置“1”位被清0,允许响应同级或低级的中断申请。从上图中可以看到在IR2处理程序中,由于发出了EOI命令,清除了IR2的中断服务寄存器,所以较低优先级的IR4请求到达后,转去处理IR4中断请求。但这种情况要尽量避免,防止重复嵌套,使优先级高的中断不能及时服务,因此一般EOI结束命令放在中断返回指令IRET前面。§7-2中断优先级和中断嵌套——中断嵌套2/4/202339一、功能和引脚

图7-11a8259A芯片引脚8259A14131615121110171819202122232425262728943215678SP/ENCAS2INTIR0VCC(+5V)INTAGNDCAS1CAS0IR1IR2IR3IR4IR5IR6IR7A0D7D6D5D4D3D2D1D0CSWRRD§7-4可编程中断控制器8259A——功能和引脚2/4/2023401.主要功能

具有8级优先级控制,通过级联可以扩展到64级优先级控制。每一级中断可由程序单独屏蔽或允许。可提供中断类型号传送给CPU。可以通过编程选择多种不同工作方式。2.引脚D7~D0:双向数据线,三态,它直接或通过总线驱动器与系统的数据总线相连。IR7~IR0:外设的中断请求信号输入端,输入,中断请求信号可以是电平触发或边沿触发。中断级联时,连接8259A从片INT端。§7-4可编程中断控制器8259A——功能和引脚2/4/202341RD:读命令信号,输入,低电平有效,用来控制数据由8259A读到CPU。WR:写命令信号,输入,低电平有效,原来控制数据由CPU写到8259A。CS:片选信号,输入,通过译码电路与高位地址总线相连。A0:选择8259A的两个端口,输入,连低位地址线。INT:向CPU发出的中断请求信号,输出,与CPU的INTR端相连。INTA:CPU给8259A的中断响应信号,输入。8259A要求两个负脉冲的中断响应信号,第一个是CPU响应中断的信号,第二个INTA结束后,CPU读取8259A送去的中断类型号。CAS2~CAS0:双向级联信号线。8259A作主片时,为输出线,作从片时,为输入线。与SP/EN配合实现8259A级联。§7-4可编程中断控制器8259A——功能和引脚2/4/202342SP/EN:从片编程/允许缓冲信号作为输入使用时,用来决定本片8259A是主片还是从片:若SP/EN=l,则为主片;若SP/EN=0,则为从片。作为输出使用时,启动8259A到CPU之间的数据总线驱动器。SP/EN作为输入还是输出,决定于8259A是否采用缓冲方式工作,若采用缓冲方式工作,则SP/EN作为输出,若采用非缓冲方式,SP/EN作为输入。§7-4可编程中断控制器8259A——功能和引脚2/4/202343

二、内部结构

§7-4可编程中断控制器8259A——内部结构2/4/202344

数据总线缓冲器是8位双向三态缓冲器,是8259A与系统数据总线接口,通常连接低8位数据总线D7~D0。CPU编程控制字写入8259A、8259A的状态信息读出、及中断响应时8259A送出的中断类型号,都经过它传送。

1.数据总线缓冲器

§7-4可编程中断控制器8259A——内部结构2/4/202345

2.读写控制电路读写控制电路接收CPU送来的读/写命令RD、WR,片选信号CS及端口选择信号A0。高阻高阻

1××××11×INIRR/ISR至CPUIMR至CPU

00100011OUTCPU至ICW1CPU至ICW2,ICW3,ICW4,OCW1CPU至OCW2CPU至OCW3

01001×0101××010000010001指令读写操作CSRDWRA0

D4D38259A的读写功能§7-4可编程中断控制器8259A——内部结构2/4/202346

高位地址译码后送CS作片选信号。A0连地址总线A0或A1,用来选择8259A的两个I/O端口,一个为奇地址,另一个偶地址。读写操作由这4个信号控制来实现的,使8259A接收CPU送来的初始化命令字(ICW)和操作命令字(OCW),或将内部状态信息送给CPU。

实际设计时,8259A的D7~D0与CPU数据总线低8位相连。为了保证CPU与8259A用低8位传输数据,CPU的A1连8259A的A0。这样对CPU来说A0=0,A1可以为1或为0,给8259A的端口分配了两个地址,一个奇地址,一个偶地址,符合了8259A的编程要求。

注意:8086系统中数据总线为16位,CPU传送数据时,低8位数据总线传送到偶地址端口,高8位数据总线传送到奇地址端口。当8位I/O接口芯片与8086CPU16位数据总线相连接时,既可以连到低8位数据总线,也可以连到高8位数据总线。§7-4可编程中断控制器8259A——内部结构2/4/2023473.级联缓冲/比较器

缓冲方式:在多片8259A级联的系统中,8259A通过总线驱动器8286和数据总线相连,这就是缓冲方式。在缓冲方式下,8259A的SP/EN端与总线驱动器8286的T脚相连,控制总线驱动器的方向,SP/EN作为输出端。

§7-4可编程中断控制器8259A——内部结构当EN=0时,8259A控制数据从8259A送到CPU;当EN=1时,控制数据从CPU送到8259A。

2/4/202348

非缓冲方式:单片8259A或少量8259A级联时,可以将8259A直接与数据总线相连,称为非缓冲方式。非缓冲方式下,8259A的SP/EN端作输入端,控制8259A作为主片还是从片。SP=1,表示此8259A为主片。SP=0,表示此8259A为从片。单片8259A时,SP/EN接高电平。由初始化命令字ICW4来设置缓冲方式或非缓冲方式。 §7-4可编程中断控制器8259A——内部结构2/4/202349

4.中断请求寄存器

中断请求寄存器是一个8位寄存器,存放外部输入的中断请求信号IR7~IR0。

当某个IR端有中断请求时,IRR相应的某位置“1”。可以允许8个中断请求信号同时进入,此时IRR寄存器被置成全“1”。当中断请求被响应时,IRR的相应位复位。

§7-4可编程中断控制器8259A——内部结构2/4/202350

5.中断屏蔽寄存器IMR中断屏蔽寄存器是一个8位寄存器,用来存放对各级中断请求的屏蔽信息。当用软件编程使IMR寄存器中某一位置“0”时,允许IRR寄存器中相应位的中断请求进入中断优先级判别器。若IMR中某位为“1”,则此位中断请求被屏蔽。各个中断屏蔽位是独立的,屏蔽了优先级高的中断,不影响其它较低优先级的中断允许。§7-4可编程中断控制器8259A——内部结构2/4/2023516.优先级判别器PR

优先级判别器对保存在IRR寄存器中的中断请求进行优先级识别,送出最高优先级的中断请求到中断服务奇存器ISR中去。当出现多重中断时,PR判定是否允许所出现的中断去打断正在处理的中断,让优先级更高的中断优先处理。

7.中断服务寄存器ISR中断服务寄存器是一个8位寄存器,保存正在处理中的中断请求信号。某个IR端的中断请求被CPU响应后,当CPU发出第一个INTA信号时,ISR寄存器中的相应位置“1”,一直保持到该级中断处理结束为止。允许多重中断时,ISR多位同时被置成“1”。

§7-4可编程中断控制器8259A——内部结构2/4/202352

8.控制电路

根据中断请求寄存器IRR的置位情况和中断屏蔽寄存器IMR的设置的情况,通过优先级判别器PR判定优先级,向8259A内部及其它部件发出控制信号。向CPU发出中断请求信号INT和接收CPU的中断响应信号INTA,使中断服务寄存器ISR的相应位置“1”,并使中断请求寄存器IRR的相应位置“0”。当CPU第二个INTA信号到来,控制8259A送出中断类型号,使CPU转入中断服务子程序。如果方式控制字ICW4的中断自动结束位为“1”,则在第二个INTA脉冲结束时,将8259A中断服务寄存器ISR的相应位清“0”。

§7-4可编程中断控制器8259A——内部结构2/4/2023531.8259A的编程结构

§7-4可编程中断控制器8259A——内部结构2/4/202354

三、8259A的中断管理方式1.8259A的编程结构

中断管理方式是通过8259A初始化时写入初始化命令字和操作命令字来设置的。初始化命令字写入寄存器ICW1~ICW4,它是由初始化程序设置的初始化命令字一经设定,在系统工作过程中就不再改变。操作命令字写入寄存器OCW1~OCW3,它是由应用程序设定的,用来对中断处理过程进行控制,在系统运行过程中,操作命令字可以重新设置。§7-4可编程中断控制器8259A——中断管理方式2/4/202355

2.优先级设置方式

若8259A初始化后没有设置其它优先级的方式,就自动进入完全嵌套方式。在这种方式下,中断优先级分配固定级别0~7级,IR0具有最高优先级,IR7优先级最低。可用初始化命令宇ICW4中SFNM=0,将8259A置成完全嵌套优先级方式。在完全嵌套工作方式下,当一个中断请求被响应后,中断服务寄存器ISR中的对应位置“1”,中断类型号被放到数据总线上,CPU转入中断服务程序。完全嵌套方式§7-4可编程中断控制器8259A——中断管理方式2/4/202356

一般情况下(除自动中断结束方式外),在CPU发出中断结束命令EOI前,ISR寄存器中此对应位一直保持“1”。当新的中断请求进入时,中断优先级裁决器将新的中断请求和当前ISR寄存器中置“1”位比较,判断哪一个优先级更高。允许打断正在处理的中断,优先处理更高级的中断,实现中断嵌套,但禁止同级与低级中断请求进入。中断嵌套时,ISR寄存器中内容发生变化,又有一个对应位置“1”,当实现8级中断嵌套时,ISR寄存器内容为0FFH。§7-4可编程中断控制器8259A——中断管理方式2/4/202357

特殊全嵌套方式与全嵌套工作方式基本相同,区别在于当处理某级中断时,有同级中断请求进入,8259A也会响应,从而实现了对同级中断请求的特殊嵌套。在级联方式中,当从片上有中断请求进入并正在处理时,同一从片上又进入更高优先级的中断请求,从片能响应更高优先级中断请求,并向主片申请中断,但对主片来说是同级中断请求。当主片处于特殊全嵌套工作方式时,主片就能允许对相同级别的中断请求开放。因此,特殊全嵌套方式通常用于级联方式中。特殊全嵌套方式§7-4可编程中断控制器8259A——中断管理方式2/4/202358

在优先级自动循环方式中,优先级别可以改变。初始优先级次序规定为IR0、IR1、…、IR7,当任何一级中断被处理完后,它的优先级别变为最低,将最高优先级赋给原来比它低一级的中断请求,其它依次类推。优先级自动循环方式适合用在多个中断源优先级相等的场合。

优先级自动循环方式例:当前IR3中断请求,则处理IR3,处理完IR3后,IR4变成最高优先级,优先级依次为IR4,IR5、IR6、…、IR2、IR3。§7-4可编程中断控制器8259A——中断管理方式2/4/202359

优先级特殊循环方式和优先级自动循环方式相比,不同之处在于优先级特殊循环方式中,初始时最低优先级由程序规定,最高优先级也就确定了。优先级特殊循环方式例:若初始时指定IR1为最低优先级,则IR2为最高优先级,其它依次类推。而优先级自动循环方式初始时最高优先级一定是IR0。§7-4可编程中断控制器8259A——中断管理方式2/4/202360

3.中断结束方式

中断结束处理实际上就是对中断服务寄存器ISR中对应位的处理。当一个中断得到响应时,8259A使ISR寄存器中对应位置“1”,表明此对应外设正在服务,并为中断优先判别器提供判别依据。中断结束时,必须使ISR寄存器中对应位置“0”,否则中断优先权判别会不正常。什么时刻使ISR中对应位置“0”,就产生不同的中断结束方式。§7-4可编程中断控制器8259A——中断管理方式

实际上8259对中断优先级的控制就是通过对中断结束EOI的控制来实现的!2/4/202361

在完全嵌套工作方式下,任何一级中断处理结束返回上一级程序前,CPU向8259A传送EOI结束命令字,8259A收到EOI结束命令后,自动将ISR寄存器中级别最高的置“1”位清“0”(此位对应当前正在处理的中断)。EOI结束命令字必须放在返回指令IRET前,没有EOI结束命令,ISR寄存器中对应位仍为“1”,继续屏蔽同级或低级的中断请求。若EOI结束命令字放在中断服务程序中其它位置,会引起同级或低级中断在本级未处理完前进入,容易产生错误。普通EOI结束方式§7-4可编程中断控制器8259A——中断管理方式2/4/202362

在非全嵌套工作方式下,中断服务寄存器无法确定哪一级中断为最后响应和处理的,这时要采用特殊SEOI结束方式。CPU向8259A发特殊EOI结束命令字,此时,8259将ISR寄存器中指定级别的对应位清“0”,它在任何情况下均可使用。

特殊EOI结束方式§7-4可编程中断控制器8259A——中断管理方式2/4/202363

在自动AEOI方式中,任何一级中断被响应后,ISR寄存器对应位置“1”,但在CPU进入中断响应周期,发第二个INTA脉冲后,8259A自动将ISR寄存器中对应位清“0”。此时,尽管对某个外设正在进行中断服务,但对8259A来说,ISR寄存器中没有指示,好象已结束了中断处理一样。这种方式虽然简单,但因为ISR寄存器中没有标志,低级中断申请时,可以打断高级中断,产生重复嵌套,嵌套深度也无法控制,容易产生错误,使用时要特别小心。自动EOI结束方式§7-4可编程中断控制器8259A——中断管理方式2/4/202364

4.循环优先级的循环方式

在主程序或中断服务程序中设置操作命令字,当任何一级中断被处理完后,使CPU给8259A回送普通EOI循环命令,8259A收到EOI循环命令后,将ISR寄存器中最高优先级的IRi置“1”位清“0”,并赋给它最低优先级,将最高优先级赋给它的下一级IRi+1,其它依次类推。普通EOI循环方式§7-4可编程中断控制器8259A——中断管理方式2/4/202365普通EOI循环方式例:

某中断系统IR0为最高优先级,IR7为最低优先级。有IR2、IR5两个中断请求。设置为普通EOI循环方式,要求给出IR2及IR5中断处理完后中断优先级的变化情况。原始状态ISR内容ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR000100100优先级7654321

0处理完IR2ISR内容00100000优先级4321

0765处理完IR5ISR内容00000000优先级1

0765432普通EOI循环方式§7-4可编程中断控制器8259A——中断管理方式2/4/202366特殊EOI循环方式特殊EOI循环方式即指定最低级循环方式,最低优先级由编程确定,最高优先级也相应而定。例:某一时刻8259A中IR2,IR6有中断嵌套服务。在IR2中断服务程序中安排了最低优先权给IR3,指令执行后,中断优先级变化情况如下表。初始状态ISR内容ISR7ISR6ISR5ISR4ISR3ISR2ISR1ISR001000100优先级76543210执行置位优先权指令后ISR内容01000100优先级32107654特殊EOI循环方式§7-4可编程中断控制器8259A——中断管理方式2/4/202367自动EOI循环方式在自动EOI循环方式中,任何一级中断被响应后,中断响应总线周期中第二个INTA信号的后沿自动将ISR寄存器中相应位清0,并立即改变各级中断的优先级别,改变方式与普通EOI循环循环方式相同。注意:使用这种方式要小心,防止重复嵌套产生。§7-4可编程中断控制器8259A——中断管理方式2/4/2023685.中断源屏蔽方式普通屏蔽方式将中断屏蔽寄存器IMR中某一位或某几位置“1”,即可将对应位的中断请求屏蔽掉。特殊屏蔽方式此方式能对本级中断进行屏蔽,而允许优先级比它高或低的中断进入。

§7-4可编程中断控制器8259A——中断管理方式2/4/2023696.中断请求引入方式边沿触发方式在边沿触发方式下,8259A将中断请求输入端出现的上升沿作为中断请求信号。中断请求输入端出现上升沿触发信号后,可以一直保持高电平。

电平触发方式在电平触发方式下,8259A将中断请求输入端出现的高电平作为中断请求信号。注意:当中断得到响应后,中断输入端必须及时撤出高电平,否则在CPU进入中断处理过程,并且开中断的情况下,原输入端的高电平会引起第二次中断的错误。§7-4可编程中断控制器8259A——中断管理方式2/4/202370中断查询方式在中断查询方式下,外部设备向8259A发中断请求信号,但8259A不通过INT信号向CPU发中断请求信号。CPU要使用软件查询来确定中断源,才能实现对外设的中断服务。CPU所执行的查询程序应包括如下过程:

系统关中断。用OUT指令使CPU向8259A端口(偶地址端口)送OCW3命令字。若外设已发出过中断请求,8259A在当前中断服务寄存器中使对应位置“1”,且立即组成查询字。CPU用IN指令从端口(偶地址)读取8259A的查询字。§7-4可编程中断控制器8259A——中断管理方式2/4/202371四、8259A的编程方法

对8259A的编程有两类命令字:初始化命令字ICW和操作命令字OCW。系统复位后,初始化程序对8259A置入初始化命令字。初始化后可通过发出操作命令字OCW来定义8259A的操作方式,实现对8259A的状态、中断方式和优先级管理的控制。初始化命令字只发一次,操作命令字允许重置,以动态改变8259A的操作与控制方式。§7-4可编程中断控制器8259A——8259A的编程方法2/4/2023721.初始化命令字初始化命令字完成的功能:设定中断请求信号触发形式,高电乎触发或上升沿触发。设定8259A工作方式,单片或级联。设定8259A中断类型号基值,即IR0对应的中断类型号。设定优先级设置方式。设定中断处理结束时的结束操作方式。注意:对8259A编程初始化命令字,共预置4个命令字:ICW1、ICW2、ICW3、ICW4。初始化命令字必须顺序填写,但并不是任何情况下都要置4个命令字,用户根据具体使用情况而定。§7-4可编程中断控制器8259A——8259A的编程方法2/4/202373⑴ICW1——芯片控制初始化命令字01:需要设置ICW4

0:不需要设置ICW41:单级使用0:级联使用1:电平触发0:边缘触发标志位8086/8088系统中不用IC4SNGL0LTIM1×××A0D7D0格式:§7-4可编程中断控制器8259A——8259A的编程方法ICW1——必须写入8259A的偶地址端口,对IBMPC/XT机而言,地址为20H2/4/202374⑵ICW2——设置中断类型号初始化命令字8259A中IR0端对应的中断类型号为中断类型号基值,它是可以被8整除的正整数,ICW2用来设置这个中断类型号基值,由此提供外部中断的中断类型号。在IBMPC/XT机由于T7~T3=00001,即基值为08H

ICW2低3位为0,高5位由用户设定。当8259A收到CPU发来的第二个INTA信号,它向CPU发送中断类型号,其中高5位为ICW2的高5位,低3位根据IR0~IR7中响应哪级中断(对应000~111)来确定。(即对应的中断号为08H~0FH)000T3T4T5T6T7D0A0D71中断类型的高5位(在IBMPC/XT机T7~T3=00001)§7-4可编程中断控制器8259A——8259A的编程方法ICW2——必须写入8259A的奇地址端口,对IBMPC/XT机而言,地址为21H2/4/202375⑶ICW3——标识主片/从片初始化命令字

0:表示IRi端上未接8259A从片1:表示IRi端上接有8259A从片S0S1S2S3S4S5S6S7D0A0D71Si=8259A主片格式:从8259A的识别地址(即主片的端口号)ID0ID1ID20

0

0

0

0D0A0D718259A从片格式:§7-4可编程中断控制器8259A——8259A的编程方法ICW3——必须写入8259A的奇地址端口,对IBMPC/XT机而言,地址为21H2/4/202376在多片8259A级联情况下,主片与从片的CAS2~CAS0相连,主片的CAS2~CAS0为输出,从片的CAS2~CAS0为输入。当CPU发第一个中断响应信号INTA时,主片通过CAS2~CAS0发一个编码ID2~ID0,从片的CAS2~CAS0收到主片发来的编码与本身ICW3中ID2~ID0相比较,如果相等,则在第二个INTA信号到来后,将自己的中断类型号送到数据总线上。

§7-4可编程中断控制器8259A——8259A的编程方法2/4/202377ICW1中IC4为1时,要求预置ICW4命令字,对8086/8088系统必须预置ICW4。⑷ICW4——方式控制初始化命令字µPMAEOIM/SBUFSFNM0001:8086/8088配置0:8080/8085配置1:自动EOI方式0:非自动EOI方式1:特殊完全嵌套方式0:非特殊完全嵌套方式0×:非缓冲方式10:缓冲方式,从8259A11:缓冲方式,主8259A1D7D0A0§7-4可编程中断控制器8259A——8259A的编程方法ICW4——必须写入8259A的奇地址端口,对IBMPC/XT机而言,地址为21H2/4/202378

BUF=1,采用缓冲方式,8259A通过总线驱动器与数据总线相连,SP/EN作输出端,控制数据总线驱动器的方向(8286的T脚),此时SP/EN线中EN有效,EN=0允许缓冲器输出(CPU←8259A),EN=1允许缓冲器输入(CPU→8259A)。此时,M/S=l,表示该片是8259A主片,M/S=0,表示该片是8259A从片。

BUF=0,采用非缓冲方式,SP/EN线中SP有效,SP=0,该片是8259A从片,SP=1,该片是8259A主片,此时,M/S信号无效。

BUF位M/S位SP/EN端0非缓冲方式无意义SP有效(输入信号)SP=1SP=0主8259A从8259A1缓从方式1主8259A0从8259AEN有效(输出信号)EN=1EN=0CPU→8259A8259A→CPUBUF、M/S、SP/EN之间关系初始化命令字必须从ICW1开始设置,依下顺序进行设置.并分别根据ICW1中的SNGL位和IC4位决定是否设置ICW3和ICW4。级联时要设置ICW3,并且主片与从片的ICW3设置不同。§7-4可编程中断控制器8259A——8259A的编程方法2/4/202379初始化命令字设置次序§7-4可编程中断控制器8259A——8259A的编程方法2/4/2023802.操作命令字操作命令字决定中断屏蔽,中断优先级次序,中断结束方式等。

⑴OCW1——中断屏蔽操作命令字M0M1M2M3M4M5M6M711:屏蔽由IRi引入的中断请求0:允许IRi端中断请求引入Mi=A0D7D0§7-4可编程中断控制器8259A——8259A的编程方法OCW1——必须写入8259A的奇地址端口,对IBMPC/XT机而言,地址为21H2/4/202381⑵OCW2——优先权循环方式和中断结束方式操作字0标志位L0L1L200EOISLR000―IR0001―IR1010―IR2011―IR3100―IR4101―IR5110―IR6111―IR7001―普通EOI方式011―特殊EOI方式101―普通EOI循环方式111―特殊EOI循环方式000―自动EOI循环(复位)100―自动EOI循环(置位)110―置位优先权命令010―无效D7D0A0

L2~L0:SL=1时,L2~L0有效。L2~L0有两个用途,一个是当OCW2设置为特殊EOI结束命令时,L2~L0指出清除中断服务寄存器中的哪1位,第二个当OCW2设置为特殊优先级循环方式时,L2~L0指出循环开始时设置的最低优先级。§7-4可编程中断控制器8259A——8259A的编程方法OCW2——必须写入8259A的偶地址端口,对IBMPC/XT机而言,地址为20H2/4/202382RSLEOIR、SL、EOI组合功能100设置自动EOI循环方式:在中断响应周期的第二个INTA信号结束时,将ISR寄存器中正在服务的相应位置0,本级赋予最低优先级,最高优先级赋给它的下一级,其他中断优先级依次循环赋给。000取消自动EOI循环101设置普通EOI循环:一旦中断结束,8259A将中断服务寄存器ISR中,当前级别最高的置1位清0,此级赋予最低优先级,最高优先级赋给它的下一级,其他中断优先级依次循环赋给。111设置特殊EOI循环:一旦中断结束,将中断服务寄存器ISR中,由L2~L0字段给定级别的相应位清0,此级赋予最低优先级,最高优先级赋给它的下一级,其他中断优先级依次循环赋给。110置位优先级循环:8259A按L2~L0字段确定一个最低优先级,最高优先级赋给它的下一级,其他中断优先级依次循环赋给,系统工作在优先级特殊循环方式。001普通EOI结束方式:一旦中断结束,CPU向8259A发出EOI结束命令,将中断服务寄存器ISR中当前级别最高的置1位清0。一般用在完全嵌套(包括特殊嵌套)工作方式。011特殊EOI结束方式:一旦中断结束,CPU向8259A发出结束命令,将中断服务寄存器ISR中,由L2~L0字段指定的中断级别的相应位清0。010OCW2无意义2/4/202383⑶OCW3——特殊屏蔽方式和查询方式操作字OCW3功能有三个:设定特殊屏蔽方式,设置对8259A寄存器的读出及设置中断查询工作方式。RISRRP10SMMESMM×0A0D7D00×:无效10:下次RD有效,读IRR11:下次RD有效,读ISR

1:查询8259A状态0:不查询0×:无效10:特殊屏蔽方式复位11:特殊屏蔽方式置位标志位§7-4可编程中断控制器8259A——8259A的编程方法OCW3——必须写入8259A的偶地址端口,对IBMPC/XT机而言,地址为20H2/4/202384在查询工作方式下,CPU不是靠接收中断请求信号来进入中断处理过程,而是靠发送查询命令,读取查询字来获得外部设备的中断请求信息。CPU先送操作命令OCW3(P=1)给8259A,再送一条输入指令将一个RD信号送给8259A,8259A收到后将中断服务寄存器的相应位置1,并将查询字送到数据总线,查询字反映了当前外设有无中断请求及中断请求的最高优先级是哪个。W0W1W2××××IR0A0D7D0§7-4可编程中断控制器8259A——8259A的编程方法2/4/202385操作控制字OCW1~OCW3的设置,安排在初始化命令字之后,用户根据需要可在程序的任何位置去设置。尽管8259A只有两个端口地址,但不会混淆命令字及控制字的,因为:ICW2、ICW3、ICW4和OCW1写入8259A奇地址端口。初始化时ICW1后面紧跟ICW2、ICW3、ICW4,而OCW1是单独写入的,不会紧跟在ICW1后面。ICW1、OCW2、OCW3写入8259A偶地址端口,但一方面ICW1在初始化时写入,另一方面可用D4位区分,D4=1为ICW1,D4=0为OCW;再用D3位区分,D3=0为OCW2,D3=1为OCW3。说明:§7-4可编程中断控制器8259A——8259A的编程方法2/4/202386

8259A的中断优先级较为复杂,总结如下:说明:§7-4可编程中断控制器8259A——8259A的编程方法自动EOI方式;非自动EOI方式;特殊完全嵌套方式;非特殊完全嵌套方式;由初始化指令ICW4控制普通EOI方式特殊EOI方式普通EOI循环方式特殊EOI循环方式自动EOI循环(复位/置位)置位优先权命令

对优先级控制,则由操作指令OCW2控制“特殊”或“置位”的可以直接指定最低级2/4/2023878259A单片使用例子8259A的IR1、IR5端引入两个中断请求,中断类型号为41H、45H。中断采用电平触发方式,完全嵌套工作方式,普通EOI结束方式,只允许IR1、IR5中断,屏蔽其它中断请求端口。§7-4可编程中断控制器8259A——8259A的编程方法2/4/202388五、8259A的中断级联主片8259A的SP/EN端接VCC,从片的SP/EN端接地。若系统中连接数据总线驱动器,主片的SP/EN端与数据总线驱动器8286的T脚相连。从片的INT脚接主片的IRi端,主片的IRi端若未接从片,可直接连中断源。主片的CAS2~CAS0作为输出端,从片的CAS2~CAS0作输入端,二者相连。1.中断级联使用时的连线§7-4可编程中断控制器8259A——8259A的中断级联2/4/202389§7-4可编程中断控制器8259A——8259A的中断级联2/4/202390设置主片初始化命令字时:级联时,ICW1中SNGL=0,单片时SNGL=1。级联时,要求设置ICW3,若某个IRi引脚上连有从片,主片ICW3的对应位设为1,未连从片的对应位设为0。单片不要设置ICW3。级联时,可设置为特殊全嵌套工作方式,此时,ICW4中SFNM=l,通常应定义在特殊完全嵌套工作方式。设置从片初始化命令字时:从片的ICW1中,SNGL=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论