1、2022-7-261第第10章章 中断控制器、计数中断控制器、计数/定时控制器定时控制器l10.1 中断概述中断概述 l10.2 可编程中断控制器可编程中断控制器8259Al10.3 可编程计数可编程计数/定时控制器定时控制器8253l10.4 DMA的概念的概念习题习题2022-7-26210.1 中断概述中断概述l10.1.1 中断的一般概念中断的一般概念 l10.1.2 8086/8088的中断方式的中断方式l10.1.3 中断优先权管理中断优先权管理返回2022-7-26310.1.1 中断的一般概念中断的一般概念 中断(中断(Interrupt)是一种使是一种使CPU中止正在执行的程
2、序而转去中止正在执行的程序而转去处理特殊事件的操作过程。处理特殊事件的操作过程。它是微处理器与外部设备进行信息交换的一种方式。目的:解决CPU与外设之间速度不匹配的矛盾。l(一)(一)中断控制方式的优点中断控制方式的优点 l(二)(二)中断源中断源 l(三)(三)中断系统的功能中断系统的功能 l(四)(四)中断服务程序与一般子程序调用中断服务程序与一般子程序调用的区别的区别 返回2022-7-264(一)中断控制方式的优点l使使CPU与外设并行工作与外设并行工作 l实现实时处理实现实时处理 l自动地进行故障处理自动地进行故障处理 返回2022-7-265(二)中断源 引起中断的事件,或提出中断
3、申请的来源,引起中断的事件,或提出中断申请的来源,称为中断源。称为中断源。如:输入如:输入/输出设备中断(如键盘、打印输出设备中断(如键盘、打印机)、过程控制产生的中断(如程序调试)、电机)、过程控制产生的中断(如程序调试)、电源故障中断等。源故障中断等。中断源分为中断源分为内部中断内部中断和和外部中断外部中断两大类。两大类。内部中断(软件中断):产生于处理器内部,内部中断(软件中断):产生于处理器内部,由专门的中断指令引起。由专门的中断指令引起。外部中断(硬件中断):产生于处理器外部,外部中断(硬件中断):产生于处理器外部,由外部硬件引起。由外部硬件引起。返回2022-7-266(三)中断系
4、统的功能l能实现中断及正确地返回能实现中断及正确地返回中断前:保护断点和现场中断前:保护断点和现场返回前:恢复现场和断点返回前:恢复现场和断点l能实现优先权排队和中断能实现优先权排队和中断嵌套嵌套 中断优先权:中断优先权:多个中断源同时提出申请时,多个中断源同时提出申请时,CPU响应中断的先后次响应中断的先后次序。序。中断嵌套:中断嵌套:CPU处理低级中断源的中断响应时,能够被高级中断中处理低级中断源的中断响应时,能够被高级中断中止而转去响应高级中断。止而转去响应高级中断。l能屏蔽某些中断能屏蔽某些中断 由中断允许触发器决定是否响应中断请求。由中断允许触发器决定是否响应中断请求。8086/80
5、88中,当中断中,当中断标志位标志位IF=1时,才允许响应可屏蔽中断时,才允许响应可屏蔽中断INTR。返回2022-7-267(四)中断服务程序与一般子程序调用的区别(四)中断服务程序与一般子程序调用的区别 l产生产生中断中断的的时间具有随机性时间具有随机性,何时执行中断服务,何时执行中断服务程序是不确定的。程序是不确定的。l在中断方式中,在中断方式中,CPU自动完成自动完成对标志寄存器对标志寄存器FR的的保护与恢复保护与恢复,无需,无需PUSHF和和POPF指令。指令。l中断服务程序采用中断服务程序采用中断返回指令中断返回指令IRET,而不是子,而不是子程序返回指令程序返回指令RET,二者执
6、行的操作不同。,二者执行的操作不同。l中断服务程序中总中断服务程序中总有一条开中断指令有一条开中断指令(该指令安(该指令安排在排在IRET指令前,以便返回主程序后能再次响应指令前,以便返回主程序后能再次响应中断;该指令若安排在中断服务程序开始的地方,中断;该指令若安排在中断服务程序开始的地方,则允许在中断处理过程中响应更高级的中断源请则允许在中断处理过程中响应更高级的中断源请求)。求)。返回2022-7-26810.1.2 8086/8088的中断方式的中断方式 l(一)(一)8086/8088中断分类中断分类 l(二)(二)8086/8088中断向量表中断向量表 l(三)(三)8086/80
7、88中断响应过程中断响应过程 返回2022-7-269(一)(一)8086/8088中断分类中断分类 8086/8088中断系统可处理256种不同的中断,其中断源如图10-1所示。这256种中断分两大类:l硬件中断(外部中断)硬件中断(外部中断)由外部硬件引起的中断。l软件中断(内部中断软件中断(内部中断)由CPU执行某些指令引起的,即由INT指令或CPU执行程序时某些错误引起的中断。返回2022-7-2610图10-1 8086/80888086/8088中断源中断源返回中中 断断 逻逻 辑辑INT n指令指令单单 步步TF=1除法除法错误错误INTO指令指令非屏蔽中断请求非屏蔽中断请求IN
8、TR2NMICPU014nIR0IR1IR2IR3IR4IR5IR6IR782510AINT可编程可编程中中 断断控制器控制器(PIC)系统定时器系统定时器键盘键盘彩色图形接口彩色图形接口保留(通信)保留(通信)串行通信接口串行通信接口保留(保留(ALT打印机)打印机)软盘软盘保留(打印机)保留(打印机)08090A0B0C0D0E0F图图 10-1 8086/8088中断源中断源返回返回 类型号类型号2022-7-2611(1)硬件中断l非屏蔽中断非屏蔽中断NMI由引脚由引脚NMI(non-maskable interrupt)引入,中断类型号为)引入,中断类型号为2。NMI不受中断允许标志
9、不受中断允许标志IF的屏蔽的屏蔽。当。当NMI引脚上出现宽度大引脚上出现宽度大于于2个时钟周期的正脉冲时,个时钟周期的正脉冲时,CPU在执行完当前指令后就马上在执行完当前指令后就马上响应响应NMI中断。中断。一般用于处理系统的重大故障,如系统掉电等。一般用于处理系统的重大故障,如系统掉电等。l可屏蔽中断可屏蔽中断INTR由引脚由引脚INTR(interrupt)引入,采用高电平触发方式。)引入,采用高电平触发方式。INTR上的中断请求可被上的中断请求可被IF屏蔽。屏蔽。只有当只有当IF=1时,时,CPU才能响应才能响应INTR中断。中断。IF的状态可由开中断指令的状态可由开中断指令STI和关中
10、断指令和关中断指令CLI来设置。来设置。注意:注意:系统复位或响应任一种中断后,系统复位或响应任一种中断后,IF均被清零,必须在一定时候均被清零,必须在一定时候用用STI来开放中断来开放中断。8086/8088只有一条只有一条INTR输入线。将输入线。将INTR与中断控制器与中断控制器8259A的的INT相连,由相连,由8259A可扩展多个外部中断源。可扩展多个外部中断源。返回2022-7-2612(2)软件中断软件中断通常由三种情况引起:l 由指令由指令INT引起的中断引起的中断l 由由CPU某些错误引起的中断某些错误引起的中断 l 由由DEBUG调试程序设置的中断调试程序设置的中断注:28
11、6以上微处理器常将软件中断称为异常返回2022-7-2613 由指令由指令INT引起的中断引起的中断CPU执行一条执行一条INT n 指令后立即产生中断。指令后立即产生中断。n为中断类型号为中断类型号,可为,可为00HFFH中的某数。中的某数。返回2022-7-2614 由由CPU某些错误引起的中断某些错误引起的中断l除数为除数为0中断中断类型类型0中断。除法运算中,中断。除法运算中,若若除数为除数为0或商超过寄存器所能表达的范围,或商超过寄存器所能表达的范围,则产生类型则产生类型0中断。没有相应的中断指令。中断。没有相应的中断指令。l溢出中断(溢出中断(INTO指令)指令)类型类型4中断。当
12、中断。当溢出标志溢出标志OF=1时,时,CPU执行执行INTO指令就会指令就会进入溢出中断处理程序,打印出错信息,并进入溢出中断处理程序,打印出错信息,并把控制权交给操作系统。若把控制权交给操作系统。若OF=0,INTO指指令不起作用。因此令不起作用。因此,将将INTO指令放在加、减指令放在加、减法运算指令后,可对法运算指令后,可对OF的状态进行检测的状态进行检测,一,一旦发生溢出便给予出错报警旦发生溢出便给予出错报警。返回2022-7-2615由由DEBUG调试程序设置的中断调试程序设置的中断l单步中断单步中断类型类型1中断。在跟踪标志中断。在跟踪标志(Trap Flag)TF=1时时,CP
13、U在每条指令执行后,在每条指令执行后,自动产生自动产生类型类型1中断,显示各寄存器和有关存储单元的内容,中断,显示各寄存器和有关存储单元的内容,以及下条要执行的指令以及下条要执行的指令。TF由由DEBUG程序修改程序修改。l断点中断断点中断类型类型3中断。用中断。用DEBUG程序的程序的G命命令设置断点,实质上是把一条断点指令令设置断点,实质上是把一条断点指令INT 3插入插入到断点设置处。当到断点设置处。当CPU执行到断点处,自动进入执行到断点处,自动进入类型类型3的中断服务程序,显示相关寄存器和存储的中断服务程序,显示相关寄存器和存储器的内容。可器的内容。可省写为省写为INT(单字节指令)
14、。(单字节指令)。返回下一页2022-7-2616软件中断的特点及优先级l软件中断的特点:软件中断的特点:a.中断类型号由指令提供;中断类型号由指令提供;b.不受中断允许标志不受中断允许标志IF的影响;的影响;c.在执行软件中断时,如果有外部硬件中断请求,在执行软件中断时,如果有外部硬件中断请求,CPU会在执行完当前指令后给予响应(对于可屏会在执行完当前指令后给予响应(对于可屏蔽中断请求,要求蔽中断请求,要求IF=1)。)。l中断源中断源优先权优先权级别由高到低的级别由高到低的顺序顺序为:为:除法错除法错 INT n INTO NMI INTR 单单步步 返回2022-7-2617(二)(二)
15、8086/8088中断向量表中断向量表l中断向量是中断服务程序的入口地址(段地址和中断向量是中断服务程序的入口地址(段地址和偏移地址)偏移地址)。8086/8088系统在存储器系统在存储器00000H003FFH的的1KB区域建立了一个中断向量表,可区域建立了一个中断向量表,可存储存储256个中断向量(个中断向量(类型号类型号00FFH),每个),每个向量占向量占4个字节,低个字节,低2个字节存放中断入口地址的个字节存放中断入口地址的段内偏移地址(段内偏移地址(IP),高),高2个字节存放中断入口的个字节存放中断入口的段地址(段地址(CS),如),如图图10-2所示。所示。l中断类型号由指令给
16、定或由外设提供。当中断类型号由指令给定或由外设提供。当CPU响响应中断时,将应中断时,将中断类型号中断类型号n乘以乘以4就得到中断向量就得到中断向量的存放地址的存放地址,取,取4n和和4n+1单元中的内容装入单元中的内容装入IP,取取4n+2和和4n+3单元中的内容装入单元中的内容装入CS,程序就转,程序就转入相应的中断处理过程。见入相应的中断处理过程。见举例举例。返回下一页2022-7-2618(二)中断向量表(续)l在在8086/8088中断向量表中断向量表中,前中,前5个是专用中断,用户个是专用中断,用户不能修改,除类型不能修改,除类型2外都是软件中断。外都是软件中断。l类型类型05H1
17、FH是是系统使用系统使用中断,不允许用户修改。其中断,不允许用户修改。其中类型中类型08H0FH对应对应8259中断控制器的中断控制器的8路可屏蔽中路可屏蔽中断请求,类型断请求,类型10H1AH为为BIOS中断,类型中断,类型1DH1FH指向三个专用数据表。指向三个专用数据表。l类型类型20H3FH为为DOS中断中断,用户程序可调用,特别是,用户程序可调用,特别是类型类型21H中断,称为中断,称为DOS系统功能调用,使用特别多。系统功能调用,使用特别多。l类型类型40H以后的中断类型大都可由用户安排以后的中断类型大都可由用户安排。返回2022-7-2619图10-2 8086/8088中断向量
18、表返回2CSIPCSIPCSIPCSIPCSIPCSIPCSIP0000:0000H0000:0003H0000:0004H0000:0007H0000:0008H0000:000BH0000:000CH0000:000FH0000:0010H0000:0013H0000:0014H0000:007EH0000:007FH0000:03FFH除数为除数为0的中断的中断单步中断单步中断非屏蔽中断非屏蔽中断断点中断断点中断溢出中断溢出中断类型类型0类型类型1类型类型2类型类型4类型类型3类型类型5类型类型31类型类型32类型类型255(十进制十进制)(十进制十进制)专用中断(共专用中断(共5个)个
19、)保留中断(共保留中断(共27个)个)供用户定义的中断供用户定义的中断(共(共225个)个)返回12022-7-2620举例举例 执行执行INT 05H过程:过程:l取中断类型号取中断类型号05Hl计算中断向量地址计算中断向量地址05H*4=14Hl取中断入口的偏移地址取中断入口的偏移地址FF54HIP,取段地址,取段地址FF00H CSl程序转向中断服务程序入口程序转向中断服务程序入口FF00H:FF54H返回0000:0014HFFH00HFFH54H0000:0015H0000:0016H0000:0017H2022-7-2621(三)8086/8088中断响应过程l8086/8088的
20、中断响应过程分三大步:(1)响应中断,获取中断类型号响应中断,获取中断类型号(2)中断服务,包括保护现场、保护断点和断点中断服务,包括保护现场、保护断点和断点处理处理(3)中断返回,包括恢复断点和恢复现场中断返回,包括恢复断点和恢复现场l在8086/8088各类中断中,除了第一步不同类型中断提供中断类型号的方式不同之外,第二步、第三步的处理过程大体是相同的。返回2022-7-2622(1)中断类型号的获取获取方式有:获取方式有:l可屏蔽中断可屏蔽中断INTR由由外设(外设(8259A)提供)提供中断类型号中断类型号 8086/8088响应响应INTR中断要用两个总线周期:第一个中断要用两个总线
21、周期:第一个总线周期通知总线周期通知8259A,CPU准备响应中断,要求准备好中准备响应中断,要求准备好中断类型号;第二个总线周期中,被响应外设的中断类型号断类型号;第二个总线周期中,被响应外设的中断类型号通过低通过低8位数据总线送给位数据总线送给CPU。CPU将类型号左移两位,将类型号左移两位,成为中断向量的存放地址,存入暂存器。(参考成为中断向量的存放地址,存入暂存器。(参考图图10-1)l非屏蔽中断非屏蔽中断NMI不经过中断响应周期,不经过中断响应周期,自动形成中断自动形成中断类型号类型号02H;l专用软件中断专用软件中断自动形成自动形成中断类型号。除法出错中断类型号。除法出错0,单,单
22、步中断步中断1,断点中断,断点中断3,溢出中断,溢出中断4;l中断指令中断指令INT n由由指令提供指令提供中断类型号中断类型号n。返回2022-7-2623(2)中断响应l取得中断类型码后的操作过程大体相同,顺序取得中断类型码后的操作过程大体相同,顺序为(见为(见图图10-3):):根据中断类型码根据中断类型码计算中断向量所在地址计算中断向量所在地址;将标志寄存器将标志寄存器FR的内容的内容入栈入栈,保护现场;,保护现场;复制复制TF的状态的状态,IF和和TF标志标志清清0,以屏蔽外部,以屏蔽外部其它中断及防止单步运行中断服务程序;其它中断及防止单步运行中断服务程序;将将断点断点地址地址CS
23、和和IP的内容推入堆栈的内容推入堆栈保护保护;从中断向量表从中断向量表读取中断向量读取中断向量送入送入CS和和IP,转,转入中断服务程序。入中断服务程序。l以上各步骤是以上各步骤是CPU自动完成的自动完成的。返回2022-7-2624图10-3 8086/8088中断响应流程图返回是内部中断吗?是内部中断吗?是非屏蔽中断吗?是非屏蔽中断吗?是可屏蔽中断吗?是可屏蔽中断吗?TF 1 吗?吗?执行下一条指令执行下一条指令结束当前指令结束当前指令IF1吗?吗?取中断类型码取中断类型码标志推入堆栈标志推入堆栈令令TEMPTF清除清除IF和和TFCS和和IP推入堆栈推入堆栈进入中断处理程序进入中断处理程
24、序TEMP1吗?吗?执行中断处理程序执行中断处理程序弹出弹出IP和和CS弹出标志弹出标志有有NMI吗?吗?是是是是是是是是否否否否否否否否否否是是响应响应中断中断有有无无是是否否返回断点返回断点2022-7-2625(3)中断处理和返回l进入中断服务程序,完成以下内容:进入中断服务程序,完成以下内容:保护现场保护现场,将有关寄存器内容推入堆栈保护。,将有关寄存器内容推入堆栈保护。开中断开中断,用,用STI指令使指令使IF=1(若允许中断嵌套(若允许中断嵌套的话,否则应将开中断放在中断返回之前)。的话,否则应将开中断放在中断返回之前)。对中断源提出的对中断源提出的中断中断请求进行请求进行处理处理
25、。恢复现场恢复现场,将保存在堆栈中的各寄存器原内容,将保存在堆栈中的各寄存器原内容弹回原寄存器。弹回原寄存器。执行中断执行中断返回返回IRET。完成两个功能:一是将保。完成两个功能:一是将保存在堆栈中的断点地址送回存在堆栈中的断点地址送回IP和和CS,二是恢复,二是恢复标志寄存器标志寄存器FR中的内容(相当于中的内容(相当于POPF),使),使CPU回到原程序继续运行。回到原程序继续运行。返回2022-7-262610.1.3 中断优先权管理中断优先权管理中断优先权中断优先权(Priority):多个中断源同时提出申):多个中断源同时提出申请时,请时,CPU响应中断的优先次序。响应中断的优先次
26、序。中断嵌套:中断嵌套:CPU处理低级中断源的中断响应时,处理低级中断源的中断响应时,能够被高级中断中止而转去响应高级中断能够被高级中断中止而转去响应高级中断。(一)(一)用软件确定中断优先权用软件确定中断优先权(二)(二)硬件确定中断优先权硬件确定中断优先权返回2022-7-2627(一)用软件确定中断优先权l软件查询:软件查询:由软件查询的先后次序决定中断源的优先权由软件查询的先后次序决定中断源的优先权,先查询的中断源的优先权高于后查询的中断源。先查询的中断源的优先权高于后查询的中断源。l结构组成:结构组成:图图10-4将将8个外设的个外设的中断请求信号相中断请求信号相“或或”后后送到送到
27、CPU的的INTR端端,同时把这,同时把这8个外设的中断请求寄存个外设的中断请求寄存器组成一个端口,赋予端口地址器组成一个端口,赋予端口地址20H。任一外设有中断请。任一外设有中断请求,求,CPU响应后进入中断服务程序,执行中断优先权查响应后进入中断服务程序,执行中断优先权查询程序,读入端口内容,逐位查询每位的状态,查到哪询程序,读入端口内容,逐位查询每位的状态,查到哪位有中断请求就转入相应的中断服务程序。其流程图见位有中断请求就转入相应的中断服务程序。其流程图见图图10-5。l屏蔽法查询屏蔽法查询与与移位法查询移位法查询l软件查询的优软件查询的优、缺点、缺点返回2022-7-2628图图10
28、-4 软件查询方式的接口电路软件查询方式的接口电路返回INTR7 0电电源源故故障障磁磁盘盘磁磁带带显显示示器器纸纸带带输输入入键键盘盘输输入入纸纸带带穿穿孔孔打打印印输输出出端口地址端口地址 20H2022-7-2629图图10-5 软件查询程序流程图软件查询程序流程图返回C申请服务申请服务?B申请服务申请服务?A申请服务申请服务?保留现场保留现场恢复现场恢复现场外设外设C中断服务程序中断服务程序外设外设B中断服务程序中断服务程序外设外设A中断服务程序中断服务程序NNNYYY2022-7-2630屏蔽法查询l屏蔽法查询:屏蔽法查询:IN AL,20H TEST AL,80H JNE PWF
29、;转电源故障处理转电源故障处理 TEST AL,40H JNE DISS ;转磁盘服务程序转磁盘服务程序 TEST AL,20H JNE MT ;转磁带服务程序转磁带服务程序 返回2022-7-2631移位法查询l 移位法查询移位法查询 IN AL,20H SAL AL,1 ;AL中的值算术左移中的值算术左移1位位 JC PWF ;转电源故障处理转电源故障处理 SAL AL,1 JC DISS ;转磁盘服务程序转磁盘服务程序 返回2022-7-2632软件查询法的优、缺点 l软件查询法的软件查询法的优点:优点:优先权次序由程序确定优先权次序由程序确定;省硬件省硬件,不需要复杂电路,不需要复杂电
30、路l缺点缺点:CPU响应中断的响应中断的速度慢速度慢,即由询问转至,即由询问转至相应服务程序的入口需较长时间。相应服务程序的入口需较长时间。返回2022-7-2633(二)硬件确定中断优先权l(1)用编码器和比较器组成的优先权排队电用编码器和比较器组成的优先权排队电路路l(2)菊花链式优先权排队电路菊花链式优先权排队电路l(3)专用的中断控制器专用的中断控制器返回2022-7-2634(1)用编码器和比较器组成的优先权排队电路l电路原理如图10-6所示。l优先权编码器对中断输入线进行优先权编码。中断源I0=1编码为A2A1A0=000;中断源I1=1编码为A2A1A0=001,I7=1编码为A
31、2A1A0=111。111的优先权最高。有多个中断源提出请求时,编码器输出优先权最高的编码。l优先权寄存器存放当前正在处理的中断优先权编码B2B1B0。当前没有中断处理时,“优先权失效”1,这时任一中断请求,都可通过与门2送到CPU的INTR端。如果CPU当前正在处理中断的话,则“优先权失效”=0,与门2被封锁,中断请求能否经过与门1受比较器输出信号的控制。若提出请求的中断源的优先权编码高于正在处理的中断源,即AB,则比较器输出“1”,与门1开通,中断请求经与门1送CPU;否则比较器输出“0”,该中断被封锁,直至当前中断处理完毕才通过与门2送至CPU。l中断类型号由A2A1A0 提供。返回20
32、22-7-2635图10-6 编码器和比较器的优先权排队电路返回优先权优先权寄存器寄存器8到到3优先权优先权编码器编码器CPU数据总线数据总线AB比较器比较器A2A1A0B2B1B0中断中断输入输入21去去CPU INTR优先权失效优先权失效2022-7-2636(2)菊花链式优先权排队电路l菊花链式优先权排队电路如图10-7所示。l中断请求Ii通过或门送入CPU的INTR端。CPU响应后输出INTA。l若中断源I1提出请求,则与门A1被打开,缓冲器A被选通,该中断类型号被送入CPU,转入该中断服务程序。I1输入与门A1的同时,也输入与门A2,使A2输出低电平,将A级以下的各中断请求Ii都屏蔽
33、掉。l在菊花链优先权排队电路中,排在最前面的中断请求优先权最高,即I1I2I3。若前级有中断请求,则屏蔽本级和以下各级的中断请求;若本级有中断请求,则屏蔽以下各级的中断请求。返回2022-7-2637图10-7 菊花链式优先权排队电路返回缓缓冲冲器器A缓缓冲冲器器B缓缓冲冲器器CA1A2C2C1B2B1INTACPUDB中断中断矢量矢量中断中断矢量矢量中断中断矢量矢量INTR2022-7-2638(3)专用的中断控制器 l微机系统中,常采用专门的中断控制器进行中断优先权管理,如Intel公司的8259A,通过它对外设接口的中断请求进行管理。返回2022-7-263910.2 可编程中断控制器可
34、编程中断控制器8259A 10.2.1 8259A的内部结构的内部结构 10.2.2 8259A的引脚的引脚 10.2.3 8259A的工作方式的工作方式 10.2.4 8259A的命令字的命令字 10.2.5 8259A的级联使用的级联使用返回小结小结2022-7-264010.2.1 8259A的内部结构的内部结构 8259A的内部结构如的内部结构如图图10-8所示,包括八部分:所示,包括八部分:l(1)中断请求寄存器中断请求寄存器IRR(Interrupt Request Register):):保存保存中断请求信号中断请求信号IR0 IR7;l(2)中断屏蔽寄存器中断屏蔽寄存器IMR(
35、Interrupt Mask Register):对对IRR中相应的中断源进行中相应的中断源进行屏蔽屏蔽(置置“1”);l(3)中断服务寄存器中断服务寄存器ISR(Interrupt Service Register):记录正在处理的中断请求,相应的):记录正在处理的中断请求,相应的ISR位位置置“1”;l(4)优先权判别优先权判别器器PR(Priority Resolver):):判别判别保保存在存在IRR中的中的中断请求的中断请求的优先级优先级,将优先级最高的中断,将优先级最高的中断请求在中断响应周期送至请求在中断响应周期送至ISR寄存器。多重中断时,由寄存器。多重中断时,由PR判定是否允
36、许判定是否允许IRR中的中断请求打断正在处理的中的中断请求打断正在处理的ISR中保存的中断;中保存的中断;返回下一页2022-7-2641图10-8 8259A内部结构框图数据总线数据总线缓冲器缓冲器读读/写写控制电路控制电路级级 联联缓冲器缓冲器/比较器比较器D7D0CAS0CAS1CAS2A0RDWR控制电路控制电路中断服务中断服务寄存器寄存器(ISR)优先权优先权判别器判别器(PR)中断请求中断请求寄存器寄存器(IRR)INTINTA中断屏蔽寄存器中断屏蔽寄存器(IMR)IR7CSSP/ENIR6IR1IR0返回2022-7-264210.2.1 8259A的内部结构(续)的内部结构(续
37、)l(5)数据)数据总线总线缓冲缓冲器:双向器:双向8位三态缓冲器,构成位三态缓冲器,构成8259A与系统总线之间的数据接口;与系统总线之间的数据接口;l(6)读)读/写控制写控制电路:控制状态信息的读出和控制命电路:控制状态信息的读出和控制命令的写入;令的写入;l(7)级联)级联缓冲器缓冲器/比较器:用于多片比较器:用于多片8259A的连接,的连接,最多可级联最多可级联8块块8259A,将中断源由,将中断源由8级扩展到级扩展到64级;级;l(8)控制)控制电路:控制电路:控制8259A芯片内部部件运行。芯片内部部件运行。返回2022-7-264310.2.2 8259A的引脚的引脚l8259
38、A的引脚如的引脚如图图10-9所示,它有所示,它有28个引脚。个引脚。lCAS2CAS0为为级联级联信号信号线线。在多片。在多片8259A级联系统中,级联系统中,主片主片8259A的的CAS2CAS0为为输出输出线,线,从片从片的的CAS2CAS0为为输入输入线。与线。与SP/EN配合使用配合使用。lSP/EN为为级联级联/缓冲允许缓冲允许信号线。当信号线。当8259A工作于非缓冲工作于非缓冲方式时,方式时,SP作为输入,用来决定本片作为输入,用来决定本片8259A是主片还是是主片还是从片,从片,SP=1时为主片,时为主片,SP=0时为从片时为从片。当。当8259A采用采用缓冲方式时,缓冲方式
39、时,EN引脚作为输出,与数据总线驱动缓冲器引脚作为输出,与数据总线驱动缓冲器OE相连,控制数据传输方向。相连,控制数据传输方向。返回2022-7-2644图图10-9 8259A的引脚图的引脚图11011121314567892342819181716152423222120272625D7D0 数据总线RD 读输入WR 写输入A0 端口选择信号CS 选片CAS2 CAS0 级联信号线SP/EN 级联/缓冲允许线INT 中断输出INTA 中断响应输入IR0 IR7 中断请求输入引脚名引脚名CAS2SP/ENINTIR0IR1IR2IR3IR4IR5IR6IR7INTAA0VccD0D1D2D3
40、D4D5D6D7RDWRCS地地CAS0CAS1返回2022-7-264510.2.3 8259A的工作方式的工作方式(一)优先级设置方式优先级设置方式(二)(二)中断结束(中断结束(EOI)处理方式)处理方式(三)(三)中断屏蔽方式中断屏蔽方式(四)(四)中断请求引入方式中断请求引入方式(五)(五)8259A与系统总线的连接方式与系统总线的连接方式 返回2022-7-2646(一)优先级设置方式(一)优先级设置方式l(1)全嵌套方式全嵌套方式 l(2)特殊全嵌套方式特殊全嵌套方式l(3)优先级自动循环方式优先级自动循环方式 l(4)优先级特殊循环方式优先级特殊循环方式 返回2022-7-26
41、47(1)全嵌套方式全嵌套方式 l全嵌套方式是8259A的默认方式,也是最常用的工作方式。此方式中,中断优先级是固定的,IR0 优先级最高,IR7 优先级最低,即IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 l可实现中断嵌套:只允许高一级中断进入嵌套,不允许同级和低级中断进入嵌套。CPU响应中断时,中断服务寄存器ISR中的相应位保持为“1”。返回2022-7-2648(2)特殊全嵌套方式l特殊全嵌套方式只屏蔽低级中断,允许同级和高级中断进入嵌套。优先级次序仍是IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 l该方式用于8259A级联,主片8259A设置为此方式
42、,从片处于其他工作方式。同一个从片上不同优先级的8个中断源对于主片来讲却是同一级别。所以主片的特殊全嵌套方式,使得CPU除能响应主片的高一级中断外,还能响应对于主片是同一级、对于从片是更高一级的中断。返回2022-7-2649(3)优先级自动循环方式 l优先级自动循环方式中,中断源的优先级是变化的。初始优先级次序规定为IR0、IR1、IR7,当一个外设得到中断服务后,它的优先级自动降为最低,其后一级中断升为最高级。例如IR4申请中断,处理完IR4中断后,IR5变为最高级,IR4降为最低优先级,优先级队列自动循环成IR5、IR6、IR7、IR0、IR4。l此方式适用于多个中断源优先级相等的场合。
43、返回2022-7-2650(4)优先级特殊循环方式l优先级特殊循环方式与优先自动循环方式只有一点不同,即初始的最低优先级由用户编程确定,从而优先级次序及最高优先级也就确定了。例如,编程(OCW2)确定IR5为最低优先级,则优先级次序为IR6、IR7、IR0、IR1、IR5。返回2022-7-2651(二)(二)中断结束(中断结束(EOI)处理方式)处理方式l中断结束(EOI)处理就是对中断服务寄存器ISR中对应位的处理。当某中断被CPU响应后,8259A使ISR的对应位置“1”,中断处理结束时,必须将ISR中对应位清“0”,以便再次接受同级别的中断。l8259A有三种中断结束(EOI)处理方式
44、:(1)普通普通EOI方式方式(2)特殊特殊EOI方式方式(3)自动自动EOI方式方式(AEOI)返回2022-7-2652(1)普通普通EOI方式方式l该方式该方式适合于全嵌套工作方式适合于全嵌套工作方式。中断服务程序结。中断服务程序结束返回上一级程序前,束返回上一级程序前,CPU发一个发一个EOI命令,使命令,使8259A自动自动将将ISR寄存器中级别最高的置寄存器中级别最高的置“1”位清位清“0”(即结束了当前正在处理的中断)。普通(即结束了当前正在处理的中断)。普通EOI方式的设置方式的设置是使是使OCW2中的中的EOI位为位为1,即,即OCW2中中的的R、SL、EOI001。l在优先
45、级循环方式中,在优先级循环方式中,普通普通EOI循环方式循环方式的设置通的设置通过过使使OCW2中的中的R、SL、EOI=101来实现,它使来实现,它使8259A将将ISR寄存器中级别最高的置寄存器中级别最高的置“1”位清位清“0”的同时,赋予该位最低优先级,的同时,赋予该位最低优先级,将最高优先级赋将最高优先级赋给原来比它低一级的中断请求,给原来比它低一级的中断请求,其它其它中断源的中断源的优优先级依次递增。先级依次递增。返回2022-7-2653(2)特殊特殊 EOI方式方式l在非嵌套方式中在非嵌套方式中,中断服务程序无法确定哪一级中断为,中断服务程序无法确定哪一级中断为最后响应和处理的,
46、这就最后响应和处理的,这就要采用特殊要采用特殊EOI方式,即方式,即由中断由中断结束命令结束命令指明指明8259A的中断服务寄存器的中断服务寄存器ISR中的哪一位被中的哪一位被清清“0”。特殊。特殊EOI方式的设置通过使方式的设置通过使OCW2中的中的R、SL、EOI=011来实现,而来实现,而OCW2中的中的L2、L1、L0指明了指明了ISR中中对应的清对应的清“0”位。位。l在优先级循环方式中,在优先级循环方式中,特殊特殊EOI循环方式循环方式的设置通过的设置通过使使OCW2中的中的R、SL、EOI=111来实现,此时来实现,此时OCW2中的中的L2、L1、L0指明了清指明了清“0”和降为
47、最低优先级的中断源和降为最低优先级的中断源,原来,原来比它低一级的中断请求则升为最高优先级,比它低一级的中断请求则升为最高优先级,其它其它中断源中断源的的优先级依次递增。优先级依次递增。返回2022-7-2654(3)自动自动EOI方式方式(AEOI)l自动自动EOI方式方式:在:在CPU进入中断响应周期进入中断响应周期,发第二个,发第二个INTA脉冲后,脉冲后,8259A自动将自动将ISR中的对应位清中的对应位清“0”。中。中断结束时,不再向断结束时,不再向8259A送回任何信息。在送回任何信息。在CPU处理中处理中断期间,断期间,ISR中没有相应标志,有中没有相应标志,有可能可能出现低级中
48、断打断出现低级中断打断高级中断,高级中断,产生重复嵌套,产生重复嵌套,嵌套深度无法控制。嵌套深度无法控制。用于没用于没有多级中断嵌套的场合有多级中断嵌套的场合。l在优先级循环方式中,在优先级循环方式中,8259A自动将自动将ISR中相应位清中相应位清“0”的同时,并按循环方式改变中断的优先级别。的同时,并按循环方式改变中断的优先级别。l在在8259A级联方式下,不用级联方式下,不用AEOI方式,而用非自动方式,而用非自动EOI方式方式。中断处理结束时发两次中断结束命令,一个送主。中断处理结束时发两次中断结束命令,一个送主片,另一个送从片,将主、从片,另一个送从片,将主、从8259A中的中的IS
49、R相应位均清相应位均清“0”。返回2022-7-2655(三)(三)中断屏蔽方式中断屏蔽方式lCPU用用CLI指令将指令将IF清零后,将禁止所有可屏蔽中断,清零后,将禁止所有可屏蔽中断,CPU自身无法做到有选择地屏蔽某一级或几级中断。自身无法做到有选择地屏蔽某一级或几级中断。8259A通过中断屏蔽寄存器通过中断屏蔽寄存器IMR可实现这一点。可实现这一点。(1)普通屏蔽方式:)普通屏蔽方式:8259A的的IMR的每一位对应一个中断请的每一位对应一个中断请求输入,可以通过设置操作命令字求输入,可以通过设置操作命令字OCW1使使IMR中某一位中某一位或某几位置或某几位置“1”,从而,从而屏蔽对应的某
50、一级或某几级中断屏蔽对应的某一级或某几级中断。(2)特殊屏蔽方式:只屏蔽同级中断)特殊屏蔽方式:只屏蔽同级中断请求,而请求,而允许高级中允许高级中断或低级中断进入系统断或低级中断进入系统的方式。利用操作命令字的方式。利用操作命令字OCW3设设置该方式。该方式设置后,对置该方式。该方式设置后,对8259A的中断屏蔽寄存器的中断屏蔽寄存器IMR的某位置的某位置“1”使本级中断被屏蔽时,会使本级中断被屏蔽时,会同时使同时使当前中当前中断服务寄存器断服务寄存器ISR中的相应位自动清零中的相应位自动清零。这样就这样就不仅不仅屏蔽屏蔽了本级中断,了本级中断,而且而且开放了较低级中断开放了较低级中断。这种方