1、第六章第六章 中断与中断控制中断与中断控制6.1 6.1 中断的基本概念中断的基本概念6.2 6.2 中断源的识别与判优中断源的识别与判优6.3 82596.3 8259A A可编程中断控制器可编程中断控制器6.4 804866.4 80486CPUCPU的中断机理的中断机理6.5 806.5 80X86X86微机的硬件中断控制逻辑微机的硬件中断控制逻辑6.1 6.1 中断的基本概念中断的基本概念q中断与中断类型中断与中断类型q中断优先级与中断嵌套中断优先级与中断嵌套qCPU响应中断的条件响应中断的条件q中断处理过程中断处理过程6.1.1 6.1.1 中断与中断类型中断与中断类型中断的最初定义
2、:中断的最初定义:作为计算机与外部设备交换信息的作为计算机与外部设备交换信息的一种同步控制方式,中断是指执行当前一种同步控制方式,中断是指执行当前程序的过程中,由于某种随机出现的外程序的过程中,由于某种随机出现的外设请求,使设请求,使CPUCPU暂停暂停(即中断即中断)正在执行正在执行的程序而转去执行为外设服务的程序;的程序而转去执行为外设服务的程序;当服务完毕后,当服务完毕后,CPUCPU再返回到暂停处再返回到暂停处(即即断点断点)继续执行原来的程序。继续执行原来的程序。36.1.1 6.1.1 中断与中断类型中断与中断类型 现在所谓的中断是一种广义的中断概现在所谓的中断是一种广义的中断概念
3、,它实质上应包括两大类:念,它实质上应包括两大类:q硬中断硬中断:由:由CPUCPU外部事件引起的中断,又外部事件引起的中断,又 叫外中断。简称中断。叫外中断。简称中断。非屏蔽中断非屏蔽中断(NMI):NMI):一种为外部紧急请求提供服务一种为外部紧急请求提供服务的中断,不受的中断,不受CPUCPU内部的中断允许标志内部的中断允许标志IFIF的屏蔽;的屏蔽;可屏蔽中断可屏蔽中断(INTR):INTR):CPUCPU用来响应各种异步的外用来响应各种异步的外部硬件中断的最常用方法,受部硬件中断的最常用方法,受CPUCPU内部的内部的IFIF的控制。的控制。4q软中断:软中断:由由CPUCPU内部原
4、因内部原因(指令或异常指令或异常)引起引起 的中断又叫内中断,统称为异常。的中断又叫内中断,统称为异常。失效失效(Fault)Fault)-在引起失效的指令启动之后,执行在引起失效的指令启动之后,执行之前被检测到,且在处理异常的程序执行完后退回之前被检测到,且在处理异常的程序执行完后退回该条指令重新启动并执行完毕;该条指令重新启动并执行完毕;自陷自陷(Trap)Trap)-在产生自陷的指令执行完后才被报告,在产生自陷的指令执行完后才被报告,且其中断服务程序结束后是返回到主程序中该条指令且其中断服务程序结束后是返回到主程序中该条指令的下一条指令。的下一条指令。终止终止(Abort)Abort)-
5、对引起异常的指令的确切位置无法确对引起异常的指令的确切位置无法确定的异常。这类异常用于报告严重错误,一般无法继定的异常。这类异常用于报告严重错误,一般无法继续运行,只能终止,而由中断服务程序重新启动续运行,只能终止,而由中断服务程序重新启动OSOS并并重建系统表格。重建系统表格。6.1.1 6.1.1 中断与中断类型中断与中断类型56.1.2 6.1.2 中断优先级与中断嵌套中断优先级与中断嵌套 当多个中断源同时申请中断时,当多个中断源同时申请中断时,CPUCPU同同一时刻只能响应一个中断源的申请,应按一时刻只能响应一个中断源的申请,应按各中断源的轻重缓急程度来确定它们的优各中断源的轻重缓急程
6、度来确定它们的优先级别。先级别。中断嵌套是指在优先级已定的情况下,中断嵌套是指在优先级已定的情况下,低优先级的中断服务程序可以被高优先级低优先级的中断服务程序可以被高优先级的中断源所中断,等高优先级的中断服务的中断源所中断,等高优先级的中断服务程序结束后,再返回去执行被中断的低优程序结束后,再返回去执行被中断的低优先级中断服务程序。先级中断服务程序。66.1.2 6.1.2 中断优先级与中断嵌套中断优先级与中断嵌套中断嵌套示意图:中断嵌套示意图:1#中断请求中断请求原主程序原主程序1#中断服中断服务程序务程序2#中断请求中断请求2#中断服中断服务程序务程序3#中断请求中断请求3#中断服中断服务
7、程序务程序返回返回返回返回返回返回(中断优先级:(中断优先级:3#2#1#)嵌套的级数原则上不限,只取决于堆栈深度,嵌套的级数原则上不限,只取决于堆栈深度,实际上与要求的中断响应速度也有关。实际上与要求的中断响应速度也有关。响应响应响应响应响应响应76.1.3 6.1.3 CPUCPU响应中断的条件响应中断的条件 对中断源发出的中断请求是否响应,视对中断源发出的中断请求是否响应,视CPUCPU内中断和外中断有所不同:内中断和外中断有所不同:q对内中断请求,可在当前指令执行前或执行后直对内中断请求,可在当前指令执行前或执行后直 接转入中断周期,由内部硬件自动执行预定的操作;接转入中断周期,由内部
8、硬件自动执行预定的操作;q对外中断请求,通常必须满足以下条件才能响应:对外中断请求,通常必须满足以下条件才能响应:置位了中断请求触发器置位了中断请求触发器-每个中断源对应一每个中断源对应一 个,通过它来保持请求信号,直至中断响应。个,通过它来保持请求信号,直至中断响应。86.1.3 6.1.3 CPUCPU响应中断的条件响应中断的条件中断屏蔽触发器处于非屏蔽状态中断屏蔽触发器处于非屏蔽状态-在多中断在多中断 源系统中,为增加中断控制的灵活性,一般源系统中,为增加中断控制的灵活性,一般 为每个中断源都设置一个中断屏蔽触发器。为每个中断源都设置一个中断屏蔽触发器。具有中断屏蔽具有中断屏蔽 的中断接
9、口的中断接口AB15AB150 0DB7DB70 0RDRDWRWRINTRINTRCPUCPUAB7AB70 0地址地址译码译码地址地址译码译码数据总线数据总线AB7AB70 0&CSCS控制信号控制信号端口端口1 1R RQ QD DD DQ Q+5+5V V中断中断请求请求 中断中断屏蔽屏蔽 数据数据(中断源)(中断源)外设外设READYREADY数据数据端口端口9CPUCPU内部是中断开放的内部是中断开放的-CPUCPU内部有中断允许内部有中断允许 触发器,只有当它为触发器,只有当它为1 1时才能响应外部中断。时才能响应外部中断。(STISTI指令就是起这种作用的,使指令就是起这种作用
10、的,使IFIF标志位置标志位置1)1)没有更高优先级别的中断请求正在被响应或没有更高优先级别的中断请求正在被响应或 正发出、正挂起。正发出、正挂起。CPUCPU正在执行的现行指令已经结束正在执行的现行指令已经结束-因为因为CPUCPU 一定是在每条指令执行完后才采样一定是在每条指令执行完后才采样INTRINTR线而线而 响应可能提出的中断请求。响应可能提出的中断请求。6.1.3 6.1.3 CPUCPU响应中断的条件响应中断的条件106.1.4 6.1.4 中断处理过程中断处理过程响应中断请求响应中断请求保护断点和现场保护断点和现场 开中断开中断中断服务中断服务恢复现场恢复现场 开中断开中断中
11、断返回中断返回 关中断关中断116.1.4 6.1.4 中断处理过程中断处理过程q保护断点和现场保护断点和现场 为使中断处理程序不影响被中断程序运行,为使中断处理程序不影响被中断程序运行,须首先将断点处的有关各寄存器内容和标志位须首先将断点处的有关各寄存器内容和标志位的状态压入堆栈保护起来,以便中断处理完毕的状态压入堆栈保护起来,以便中断处理完毕后能返回原程序,从断点开始正确执行。后能返回原程序,从断点开始正确执行。要保护的断点现场内容通常包括:要保护的断点现场内容通常包括:vCPUCPU的标志寄存器的标志寄存器(FR)FR)内容内容v代表断点地址的程序计数器代表断点地址的程序计数器PCPC内
12、容或代码内容或代码 段寄存器段寄存器CSCS和指令指针和指令指针(E)IPE)IP内容内容v中断处理程序中将用到的各中断处理程序中将用到的各CPUCPU内部寄存器内部寄存器 内容内容q开中断开中断 以便执行中断服务程序时,能响应更高级以便执行中断服务程序时,能响应更高级别的中断源请求。别的中断源请求。12 完成完成I/OI/O操作或异常事件处理,是整个中操作或异常事件处理,是整个中断处理程序的核心。断处理程序的核心。q中断服务中断服务q关中断关中断目的是保证在恢复现场时不被新的中断所打扰。目的是保证在恢复现场时不被新的中断所打扰。q恢复现场恢复现场 多数多数CPUCPU是用是用POPPOP指令
13、把保存的断点信息从指令把保存的断点信息从堆栈中弹出,以达到恢复现场的目的堆栈中弹出,以达到恢复现场的目的q中断返回中断返回 使断点地址送回程序计数器或使断点地址送回程序计数器或CSCS:(E)IP(E)IP,继续执行被中断的程序。继续执行被中断的程序。6.1.4 6.1.4 中断处理过程中断处理过程13中断处理过程中断处理过程响应中断请求响应中断请求保护断点和现场保护断点和现场 开中断开中断中断服务中断服务恢复现场恢复现场 开中断开中断中断返回中断返回 关中断关中断 上述一般中断处理流程中是否每步工作都要做,上述一般中断处理流程中是否每步工作都要做,取决于具体的取决于具体的CPUCPU种类。种
14、类。保护断点和现场保护断点和现场中断服务中断服务恢复现场恢复现场中断返回中断返回146.26.2 中断源的识别与判优中断源的识别与判优 凡有多中断源存在时,都存在一个中凡有多中断源存在时,都存在一个中断源的识别与判优问题。断源的识别与判优问题。q如果如果CPUCPU或或CPUCPU模块提供了多根中断请求线,且多模块提供了多根中断请求线,且多于外部中断源数目,则由于它们之间的识别和判优于外部中断源数目,则由于它们之间的识别和判优已由芯片或模块内部逻辑按一定优先级算法已由芯片或模块内部逻辑按一定优先级算法(一般一般为固定优先级算法为固定优先级算法)设计好了,用户只需按要求将设计好了,用户只需按要求
15、将不同中断源接至不同中断请求输入线上即可。不同中断源接至不同中断请求输入线上即可。q如果系统只有一根中断请求线或者虽有多根中断如果系统只有一根中断请求线或者虽有多根中断请求线但仍比中断源数目少时,就需要多中断源合请求线但仍比中断源数目少时,就需要多中断源合用一根中断请求线,这种情况下就需要用户自己来用一根中断请求线,这种情况下就需要用户自己来设计中断源的识别与判优逻辑。设计中断源的识别与判优逻辑。156.2 6.2 中断源的识别与判优中断源的识别与判优q多中断源的识别与判优,要解决两大问题:多中断源的识别与判优,要解决两大问题:1)1)判别哪个中断请求源的优先权最高;判别哪个中断请求源的优先权
16、最高;2)2)将程序转移到相应的中断处理程序入口。将程序转移到相应的中断处理程序入口。完成这一任务的方法通常有两种:完成这一任务的方法通常有两种:v程序查询式识别与判优程序查询式识别与判优v中断向量式识别与判优中断向量式识别与判优16程序查询式识别与判优程序查询式识别与判优 软件识别与判优方法。所需的硬件支持最软件识别与判优方法。所需的硬件支持最少,主要需要一个中断请求锁存器作为状态输少,主要需要一个中断请求锁存器作为状态输入口,以供入口,以供MPUMPU查询用。查询用。MPUMPU中断处中断处理器理器INTINTD7D7D6D6D0D0:IACKIACK11中断中断请求请求锁存锁存器器中断接
17、口中断接口CSCSINT0INT0INT1INT1INT7INT70#=0#=I/OI/O1#=1#=I/OI/O7#=7#=I/OI/O 中断响应时,中断响应时,MPUMPU用软件程序读入中断请求锁存器状用软件程序读入中断请求锁存器状态,按确定的次序逐位查询,以识别中断请求源,当查到态,按确定的次序逐位查询,以识别中断请求源,当查到某位状态有效时,便转入相应某位状态有效时,便转入相应I/OI/O服务程序,为该外设服服务程序,为该外设服务。查询各位的次序就决定了各外设的中断优先级。务。查询各位的次序就决定了各外设的中断优先级。6.2 6.2 中断源的识别与判优中断源的识别与判优17中断处理程序
18、中断处理程序保护现场保护现场读中断请求状态读中断请求状态N NN N恢复现场恢复现场Y Y7#7#I/OI/O请求?请求?7#7#I/OI/O服务程序服务程序Y Y6#6#I/OI/O请求?请求?6#6#I/OI/O服务程序服务程序N NY Y0#0#I/OI/O请求?请求?0#0#I/OI/O服务程序服务程序中断返回中断返回查询式中断流程图查询式中断流程图6.2 6.2 中断源的识别与判优中断源的识别与判优程序查询式识别与判优程序查询式识别与判优18程序查询式识别与判优的优缺点:程序查询式识别与判优的优缺点:优点:优点:硬件简单,程序层次分明,只要改变程硬件简单,程序层次分明,只要改变程序中
19、查询的顺序而不必改变硬件连接,序中查询的顺序而不必改变硬件连接,即可方便地改变外设的中断优先即可方便地改变外设的中断优先级。级。缺点:缺点:中断源较多时,中断响应速度慢,中断源较多时,中断响应速度慢,CPUCPU使使用效率降低。用效率降低。6.2 6.2 中断源的识别与判优中断源的识别与判优程序查询式识别与判优程序查询式识别与判优19中断向量式识别与判优中断向量式识别与判优 硬件识别与判优方法。主要用硬件电路对硬件识别与判优方法。主要用硬件电路对中断源进行优先级排队,并将程序引导到有关中断源进行优先级排队,并将程序引导到有关I/OI/O的中断服务程序入口。的中断服务程序入口。具体实现方案有菊花
20、链优先级仲裁和并行具体实现方案有菊花链优先级仲裁和并行优先级仲裁两种。优先级仲裁两种。MPUMPU中中断断处处理理器器数据总线数据总线(DB)DB)中断向量中断向量发生器发生器1中断向量中断向量发生器发生器2中断向量中断向量发生器发生器nIACKIACKIN1IN1OUT1OUT1OUT2OUT21#1#I/OI/O2#2#I/OI/On#I/On#I/OIN2IN2IN3IN3 INnINnIR1IR1IR2IR2IRnIRnINTINT中断请求线中断请求线每个中断请求源对应有一个向量发生器。每个中断请求源对应有一个向量发生器。6.2 6.2 中断源的识别与判优中断源的识别与判优20并行优先
21、级仲裁并行优先级仲裁 其核心部件是一个优先级编码器和各中断源公用的中其核心部件是一个优先级编码器和各中断源公用的中断向量发生器。当断向量发生器。当IACKIACK有效时,中断向量发生器将把与最有效时,中断向量发生器将把与最高优先级中断请求源对应的中断向量号送上数据总线高优先级中断请求源对应的中断向量号送上数据总线DBDB。无论菊花链还是并行结构,当无论菊花链还是并行结构,当MPUMPU在中断响应周期中在中断响应周期中收到中断向量号后,便通过计算或查表得到中断向量收到中断向量号后,便通过计算或查表得到中断向量(即即中断服务程序入口地址中断服务程序入口地址),并自动进入和执行相应的中断,并自动进入
22、和执行相应的中断服务程序。服务程序。6.2 6.2 中断源的识别与判优中断源的识别与判优中断向量式识别与判优中断向量式识别与判优MPUMPU数据总线数据总线(DB)DB)IACKIACKINTINT中断向量发生器中断向量发生器优先级编码器优先级编码器n nIRIR0 0IRIR1 1中断处理器中断处理器12NIR21 例如在例如在8086/8088/80186/802868086/8088/80186/80286微机中,都微机中,都在内存的最低在内存的最低10241024个字节专门建立了一个中断向个字节专门建立了一个中断向量表,用来存放量表,用来存放256256个中断向量,每个中断向量个中断向
23、量,每个中断向量占用占用4 4字节,低字节,低2 2字节装中断服务程序入口地址的字节装中断服务程序入口地址的偏移量,高偏移量,高2 2字节装其段基址。字节装其段基址。MPUMPU收到中断向量收到中断向量号号(8(8位位)后,乘以后,乘以4 4作为查表索引,即可查得对应作为查表索引,即可查得对应的中断向量,并将它装入的中断向量,并将它装入CS:IPCS:IP,从而控制程序从而控制程序转移到中断处理程序去执行。转移到中断处理程序去执行。6.2 6.2 中断源的识别与判优中断源的识别与判优中断向量式识别与判优中断向量式识别与判优22 这种向量式中断结构的最大优点是中断响这种向量式中断结构的最大优点是
24、中断响应速度快,应速度快,CPUCPU使用效率高,原因是其中断源识使用效率高,原因是其中断源识别、判优和中断向量提供都是由硬件完成的。别、判优和中断向量提供都是由硬件完成的。实际中应用最多的典型中断控制器芯片有:实际中应用最多的典型中断控制器芯片有:vi8214-i8214-不可编程不可编程(8080(8080等等8 8位机中采用位机中采用)6.2 6.2 中断源的识别与判优中断源的识别与判优中断向量式识别与判优中断向量式识别与判优vi8259A-i8259A-可编程可编程(PCPC系列微机中广泛采用系列微机中广泛采用)236.3 82596.3 8259A A可编程中断控制器可编程中断控制器
25、q内部结构与引脚功能内部结构与引脚功能q中断工作过程中断工作过程q应用编程应用编程246.3.1 82596.3.1 8259A A的内部结构与引脚功能的内部结构与引脚功能D7D7D0D0数据总线数据总线缓冲器缓冲器RDRDWRWRA0A0CSCSCAS0CAS0CAS1CAS1CAS2CAS2SP/ENSP/ENICW1ICW1ICW2ICW2ICW3ICW3ICW4ICW4读写电路读写电路级联缓冲器级联缓冲器/比较器比较器初始化初始化命令寄命令寄存器组存器组内部总线内部总线中断中断服务服务寄存寄存器器(ISR)优先优先级分级分析器析器中断中断请求请求寄存寄存器器(IRR)INTAINTAI
26、R0IR0IR1IR1IR2IR2IR7IR7中断屏蔽寄存器中断屏蔽寄存器(IMR)操作命令操作命令寄存器组寄存器组OCW1OCW1OCW2OCW2OCW3OCW3控控 制制 逻逻 辑辑INTINT256.3.1 82596.3.1 8259A A的内部结构与引脚功能的内部结构与引脚功能A0A0、RDRD、WRWR、CSCS对对82598259A A读写操作的控制作用读写操作的控制作用禁止禁止 1 1 禁止禁止 1 1 1 1 IMRIMR数据总线数据总线 1 1 0 0 0 0 1 1IRRIRR、ISRISR、中断级中断级BCDBCD码码数据总线数据总线 1 1 0 0 0 0 0 0数据
27、总线数据总线 OCW1OCW1、ICW1 ICW1、ICW3ICW3、ICW4 ICW4 0 0 1 1 0 0 1 1数据总线数据总线ICW1ICW1 1 1 0 0 1 1 0 0 0 0数据总线数据总线OCW3OCW3 1 1 0 0 0 0 1 1 0 0 0 0数据总线数据总线OCW2OCW2 0 0 0 0 0 0 1 1 0 0 0 0 D3D3 CS CSA0A0RDRDWRWRD4D4读写操作读写操作这些命令的输入顺序由这些命令的输入顺序由82598259A A内部的时序逻辑通过适当的时序控制加以保证。内部的时序逻辑通过适当的时序控制加以保证。对对IRRIRR、ISRISR或
28、中断级或中断级BCDBCD码的选择,决定于在读出操作之前,码的选择,决定于在读出操作之前,CPUCPU写入的操作命令字写入的操作命令字OCW3OCW3的内容。的内容。26级联缓冲器级联缓冲器/比较器有关引脚功能:比较器有关引脚功能:SP/EN(SP/EN(从编程从编程/使能缓冲线使能缓冲线)-)-输入输入/输出输出线,作输入用时,用于区别主从线,作输入用时,用于区别主从82598259A A芯片:芯片:主片使主片使SP=1SP=1;从片使从片使SP=0SP=0。作输出用时,用于作输出用时,用于选通选通82598259A A至至CPUCPU之间的数据总线缓冲器。之间的数据总线缓冲器。CAS0 C
29、AS0、CAS1CAS1、CAS2(CAS2(级联线级联线)-)-输入输入/输出输出线,当线,当82598259A A是主片时,是主片时,CAS0CAS0CAS2CAS2是输出线,是输出线,在在CPUCPU响应中断时用来输出级联选择代码响应中断时用来输出级联选择代码,选选出请求中断的从片;当出请求中断的从片;当82598259A A为从片为从片(SP=0)SP=0)时时,CAS0CAS0CAS2CAS2是输入线,接收主片送来的选是输入线,接收主片送来的选择代码。择代码。6.3.1 82596.3.1 8259A A的内部结构与引脚功能的内部结构与引脚功能276.3.2 82596.3.2 82
30、59A A的中断工作过程的中断工作过程 8259 8259A A进入工作状态的先决条件是必须按进入工作状态的先决条件是必须按要求对其初始化,使其处于准备就绪状态。要求对其初始化,使其处于准备就绪状态。82598259A A对外部中断请求的响应和处理过程如下:对外部中断请求的响应和处理过程如下:1)1)当中断请求输入线当中断请求输入线IR0IR0IR7IR7中有一条或多条变高时,中有一条或多条变高时,则中断请求寄存器则中断请求寄存器IRRIRR的相应位置的相应位置11。2)2)若中断请求线中至少有一条是中断允许的,则若中断请求线中至少有一条是中断允许的,则82598259A A由由INTINT引
31、脚向引脚向CPUCPU发出中断请求信号。发出中断请求信号。3)3)如如CPUCPU是处于开中断状态,则在当前指令执行完后,是处于开中断状态,则在当前指令执行完后,用用INTAINTA信号作为响应。信号作为响应。4)82594)8259A A在接收到在接收到CPUCPU的的INTAINTA信号后,使最高优先级的信号后,使最高优先级的ISRISR位置位置“1”“1”,而相应的,而相应的IRRIRR位清位清“0”“0”,但在该中断,但在该中断响应周期中,响应周期中,82598259A A并不向系统总线送任何内容。并不向系统总线送任何内容。286.3.2 82596.3.2 8259A A的中断工作过
32、程的中断工作过程5)5)CPU(8086/8088CPU(8086/8088和和8080X86)X86)输出第二个输出第二个INTAINTA信号,信号,启动第二个中断响应周期。在此周期中,启动第二个中断响应周期。在此周期中,82598259A A向数据总线输送一个向数据总线输送一个8 8位的中断类型号位的中断类型号(也叫指针也叫指针或向量号或向量号);CPUCPU读取此类型号后将它乘以读取此类型号后将它乘以4(4(左移左移2 2位位),即可从中断服务程序向量表,即可从中断服务程序向量表(即入口地址即入口地址表表)中取出中断服务程序的入口地址,包括段地中取出中断服务程序的入口地址,包括段地址和段
33、内偏移地址,据此址和段内偏移地址,据此CPUCPU便可转入中断服务便可转入中断服务程序。程序。6)6)如如82598259A A工作在工作在AEOIAEOI模式,则在第二个模式,则在第二个INTAINTA脉脉冲信号结束时,将使被响应的中断源在冲信号结束时,将使被响应的中断源在ISRISR中的中的对应位清对应位清00,否则,直至中断服务程序结束,否则,直至中断服务程序结束,发出发出EOIEOI命令才使命令才使ISRISR中的对应位清中的对应位清00。296.3.3 82596.3.3 8259A A的应用编程的应用编程 8259 8259A A的编程是指用户通过写操作送一的编程是指用户通过写操作
34、送一些命令字些命令字(也叫控制字也叫控制字)到到82598259A A内部的控制内部的控制寄存器寄存器(命令字寄存器命令字寄存器),用于设定或动态,用于设定或动态改变它的工作方式和控制模式。改变它的工作方式和控制模式。82598259A A的编程包括两方面:的编程包括两方面:v初始化编程初始化编程v操作方式编程操作方式编程306.3.3 82596.3.3 8259A A的应用编程的应用编程1.1.初始化编程初始化编程 写初始化命令字写初始化命令字ICW1ICW1ICW4ICW4到初始化命令寄存器组到初始化命令寄存器组 这项工作一定要在这项工作一定要在82598259A A开始工作之前完成,用
35、于建立开始工作之前完成,用于建立基本工作条件,写入后一般不基本工作条件,写入后一般不再改变。再改变。对初始化编程要注意两点:对初始化编程要注意两点:v写写ICWICW的流程必须按规的流程必须按规 定顺序写,不能颠倒。定顺序写,不能颠倒。v各各ICWICW的格式的格式/功能功能写写ICW1ICW1写写ICW2ICW2初始化完成初始化完成N N写写ICW3ICW3级联?级联?Y Y写写ICW4ICW4Y Y要要ICW4?ICW4?N N31写初始化命令字写初始化命令字ICW1ICW1v使使82598259A A对中断请求信号边沿检测电路复位。对中断请求信号边沿检测电路复位。它仅在中断请求信号由低变
36、高时能产生中断。它仅在中断请求信号由低变高时能产生中断。v清除中断屏蔽寄存器,设置中断优先级排清除中断屏蔽寄存器,设置中断优先级排 队队,IRQ0IRQ0IRQ7IRQ7依次降低。依次降低。v指明系统使用的指明系统使用的82598259A A是单片还是多片级联。是单片还是多片级联。格式:格式:6.3.3 82596.3.3 8259A A的应用编程的应用编程0-0-多片多片82598259A A1-1-单片单片82598259A AA0A0D7D7D6D6D5D5 D4D4D3D3D2D2D1D1D0D00 0A7A7A6A6A5A51 1LTIMLTIMA AS SIC4IC4中断向量地址中
37、断向量地址,仅在仅在8080/80858080/8085模式下用模式下用0-0-边沿触发边沿触发1-1-电位触发电位触发0-0-不需不需ICW4ICW41-1-需要需要ICW4ICW4地址间距地址间距0-0-间距间距8 81-1-间距间距4 432初始化命令字初始化命令字ICW2ICW2 设定设定8080/80858080/8085模式系统的中断向量地址模式系统的中断向量地址高高8 8位位A15A15A8A8或或8086/80888086/8088模式系统的中断向模式系统的中断向量号高量号高5 5位位T7T7T3T3格式:格式:ICW2ICW2A0A0D7D7D6D6D5D5D4D4D3D3D
38、2D2 D1D1 D0D01 1A15/T7A15/T7 A14/T6A14/T6A13/T5A13/T5A12/T4A12/T4A11/T3A11/T3A10A10A9A9A8A88080/80858080/8085模式下模式下A15A15A8A8中断向量地址中断向量地址8086/80888086/8088模式下模式下T7T7T3T3中断向量地址中断向量地址6.3.3 82596.3.3 8259A A的应用编程的应用编程33目的:用于定义目的:用于定义82598259A 8A 8根中断请求线上有无级根中断请求线上有无级联联82598259A A从片从片写初始化命令字写初始化命令字ICW3I
39、CW3 若系统只有一片若系统只有一片82598259A A,则不用则不用ICW3ICW3,若有若有 多片多片82598259A A级联,则每一片级联,则每一片82598259A A都必须使用都必须使用ICW3ICW3,且主、从片的且主、从片的ICW3ICW3格式不同。格式不同。主片主片ICW3ICW31-1-IRQiIRQi线上有从片线上有从片0-0-IRQiIRQi线上无从片线上无从片A0A0D7D7 D6D6 D5D5 D4D4 D3D3 D2D2 D1D1 D0D0M7M7 M6M6 M5M5 M4M4 M3M3 M2M2 M1M1 M0M01 1A0A0D7D7 D6D6 D5D5 D
40、4D4 D3D3 D2D2 D1D1 D0D01 10 00 00 00 00 0 ID2ID2ID1ID1ID0ID00 00 00 00 00 00 00 00 00 00 00 00 00 01 11 11 11 11 11 11 11 11 11 11 11 11 12 23 34 45 56 67 7IRQiIRQi6.3.3 82596.3.3 8259A A的应用编程的应用编程34目的:定义目的:定义82598259A A工作时用工作时用8080/80858080/8085模式还是模式还是8086/80888086/8088模式,以及中断服务程序是否要送出模式,以及中断服务程序是
41、否要送出EOIEOI命令,以清除中断服务寄存器命令,以清除中断服务寄存器ISRISR,允许其他中断。允许其他中断。写初始化命令字写初始化命令字ICW4ICW41-1-特殊全嵌套方式特殊全嵌套方式0-0-一般全嵌套方式一般全嵌套方式1-8086/80881-8086/8088 模式模式0-8080/8085 0-8080/8085 模式模式1-1-自动自动EOIEOI0-0-正常正常EOIEOI非缓冲方式非缓冲方式缓冲方式缓冲方式/从控制器从控制器缓冲方式缓冲方式/主控制器主控制器0 00 01 11 11 1A0A0D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D01 10 00
42、 00 0SFNMSFNMBUFBUF M/SM/SAEOIAEOI PMPMICW4ICW4格式:格式:6.3.3 82596.3.3 8259A A的应用编程的应用编程35-有选择地写操作命令字有选择地写操作命令字OCW1OCW1OCW3OCW3到操作命到操作命 令寄存器组令寄存器组2.2.操作方式编程操作方式编程 这项工作可在这项工作可在82598259A A已经初始化后的任何时已经初始化后的任何时候进行,目的是对中断处理过程实现动态控制。候进行,目的是对中断处理过程实现动态控制。如果不写操作命令字,如果不写操作命令字,82598259A A就按初始化编就按初始化编程所设置好的方式和模式
43、工作,工作于程所设置好的方式和模式工作,工作于IR0IR0优先优先级最高,从级最高,从IR0IR0IR7IR7优先级依次降低的固定优优先级依次降低的固定优先级的全嵌套工作方式。先级的全嵌套工作方式。如需改变初始化时设置的中断控制方式,或如需改变初始化时设置的中断控制方式,或屏蔽某些中断级,读出一些状态信息,就必须在屏蔽某些中断级,读出一些状态信息,就必须在82598259A A进入工作之前或工作过程中酌情写入操作进入工作之前或工作过程中酌情写入操作命令字命令字OCWOCW。6.3.3 82596.3.3 8259A A的应用编程的应用编程36目的:用来设置目的:用来设置/清除对中断源的屏蔽清除
44、对中断源的屏蔽写操作命令字写操作命令字OCW1OCW1格式:格式:A0A0D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D01 1M7M7M6M6M5M5M4M4M3M3M2M2M1M1M0M00-0-中断请求被开放中断请求被开放1-1-中断请求被屏蔽中断请求被屏蔽6.3.3 82596.3.3 8259A A的应用编程的应用编程37目的:设置中断优先级是否循环,循环的方式及目的:设置中断优先级是否循环,循环的方式及中断结束的方式中断结束的方式写操作命令字写操作命令字OCW2OCW2格式:格式:0 00 00 00 00 00 00 00 00 00 00 00 01 11 11
45、 11 11 11 11 11 11 11 11 11 10 00 00 00 00 00 00 00 00 00 00 00 00 01 11 11 11 11 11 11 11 11 11 11 11 11 12 23 34 45 56 67 7A0A0D7D7D6D6D5D5D4D4 D3D3D2D2D1D1D0D00 0R RSLSLEOIEOI0 00 0L2L2L1L1L0L0标志位标志位非特殊非特殊EOIEOI特殊特殊EOIEOI中断结束中断结束自动循环优先级清除自动循环优先级清除自动循环自动循环EOIEOI自动循环优先级设置自动循环优先级设置自动循环自动循环特殊循环特殊循环EO
46、IEOI特殊循环优先级设置特殊循环优先级设置停止操作停止操作特殊循环特殊循环最低优先最低优先级编码级编码6.3.3 82596.3.3 8259A A的应用编程的应用编程38目的:用于设置查询方式、特殊屏蔽方式、以及目的:用于设置查询方式、特殊屏蔽方式、以及用来读用来读82598259A A的的IRRIRR、ISRISR、IMRIMR的当前状态的当前状态写操作命令字写操作命令字OCW3OCW3格式:格式:A0A0D7D7D6D6D5D5D4D4 D3D3D2D2D1D1D0D00 00 00 0S1S1S2S21 1P PPRPRRISRIS标志位标志位0 00 00 00 01 11 11
47、11 1无作用无作用特殊屏蔽方式清除特殊屏蔽方式清除特殊屏蔽方式设置特殊屏蔽方式设置1-1-查询命令查询命令0-0-不查询不查询0 00 00 00 01 11 11 11 1无作用无作用下一个下一个RDRD读读IRRIRR下一个下一个RDRD读读ISRISR6.3.3 82596.3.3 8259A A的应用编程的应用编程39 把正在执行的高级中断屏蔽掉,而开放较低级把正在执行的高级中断屏蔽掉,而开放较低级中断的屏蔽方式中断的屏蔽方式特殊屏蔽方式特殊屏蔽方式 先利用先利用OCW1OCW1命令将正在执行的高级中断屏蔽掉;命令将正在执行的高级中断屏蔽掉;然后用然后用OCW3OCW3命令命令(D6
48、D5=11)D6D5=11)设置特殊屏蔽方式,这样设置特殊屏蔽方式,这样可使可使ISRISR相应位的功能中止,直到清除特殊屏蔽方式。相应位的功能中止,直到清除特殊屏蔽方式。利用该功能,可使中断不受优先级限制,而利用该功能,可使中断不受优先级限制,而人为地为某一较低优先级中断服务,这就为用户人为地为某一较低优先级中断服务,这就为用户提供了很大的灵活性。提供了很大的灵活性。实现方法:实现方法:6.3.3 82596.3.3 8259A A的应用编程的应用编程40 例如系统正在为例如系统正在为IRQ4IRQ4中断服务,服务过程中为了中断服务,服务过程中为了允许比它低的中断得到响应,可用特殊屏蔽命令字
49、将允许比它低的中断得到响应,可用特殊屏蔽命令字将IRQ4IRQ4中断暂时屏蔽,当为较低级中断服务完后,再解中断暂时屏蔽,当为较低级中断服务完后,再解除对除对IRQ4IRQ4中断的屏蔽中断的屏蔽,以最后完成对它的中断服务。以最后完成对它的中断服务。.;为;为IRQ4IRQ4中断服务的程序中断服务的程序 .;屏蔽除准备允许响应的低级中断外的;屏蔽除准备允许响应的低级中断外的.;所有其它低级中断;所有其它低级中断CLI CLI ;为在为在IRQ4IRQ4服务程序中开放低级中断设服务程序中开放低级中断设 ;置特殊命令字而关中断;置特殊命令字而关中断MOV AL,10H MOV AL,10H ;送屏蔽送
50、屏蔽IRQ4IRQ4的的OCW1OCW1命令命令MOV DX,PORT1 MOV DX,PORT1 ;送送OCW1OCW1口地址口地址DXDXOUT DX,AL OUT DX,AL ;OCW18259A,A0=1OCW18259A,A0=1MOV AL,68H MOV AL,68H ;送特殊屏蔽方式字送特殊屏蔽方式字OCW3AL,S1S2=11OCW3AL,S1S2=116.3.3 82596.3.3 8259A A的应用编程的应用编程A0A0D7D7D6D6D5D5D4D4 D3D3D2D2D1D1D0D00 00 00 0S1S1S2S21 1P PPRPRRISRIS标志位标志位0 00