1、第八章 中断系统和DMA,8.1 中断系统概述 8.2 中断控制器8259A,8.1 中断系统概述,中断、中断源 中断处理过程 中断优先级,8.1.1 中断及中断源,中断的概念 中断:CPU收到外部请求时停止当前任务,转而执行外设任务,完成后继续执行被打断的任务,中断及中断源,中断源:引起中断的事件 断点:主程序被打断的位置 中断服务程序 :中断源的响应和处理函数,中断源,中断的用途,响应外部事件:掉电,除零,报警等 实时多任务调度:加快响应速度 CPU与外设并行处理:提高CPU利用率 分时系统基础:时钟中断驱动的操作系统,8.1.2 中断处理过程,中断请求 优先级判别 中断响应 保存现场,中
2、断服务 恢复现场 中断返回,1.中断请求,概念:外部设备需要CPU资源时,产生一个中断信号发送到CPU的中断输入引脚。原理:每个中断源对应一个中断请求标志位,由中断请求寄存器锁存。中断请求信号需要保持到CPU对其进行中断响应后才能撤销。,2. 优先级判别,多个中断源同时发起中断请求时,CPU需要对多个中断源的优先级进行判断,响应最紧急的中断请求。中断源的优先级需要根据中断源的紧迫性、重要性以及外设处理速度等进行综合考虑不可屏蔽中断发生,优先响应不可屏蔽中断。,3. 中断响应,对于内部中断,CPU通过判断中断源自动跳转到相应的中断服务程序入口地址,执行中断服务子程序。对于外部中断,CPU判断标志
3、位IF,若CPU允许响应外部中断(IF=1),向发出中断请求的外设返回一个中断应答信号,否则CPU不响应该中断请求。,4. 保存现场,CPU响应中断,首先需要禁止CPU响应中断信号,并保存中断返回地址以及其它可能被破坏的寄存器8086/8088 CPU的基本中断现场保护需要将CS寄存器和IP寄存器压入堆栈,5. 执行中断,CPU通过中断号确定进入哪个中断处理进入中断处理程序,可以允许CPU响应其它中断8086/8088处理器通过装入CS和IP寄存器实现中断服务程序跳转,6. 恢复现场,CPU关闭中断响应 将保存在堆栈中的所有寄存器内容弹出,恢复到中断前的寄存器原值,7.返回,8086/8088
4、处理器通过IRET指令从中断状态返回。IRET指令将自动恢复先前保存的IP和CS值以及标志寄存器FR或EFR的值,从而跳转到主程序断点地址。返回之后,CPU自动打开中断允许响应其它中断请求。,8.1.3 中断的优先级,原因:中断处理的重要程度和时延要求不同含义:按照中断源的重要程度为每个中断源分配不同的优先级,并以优先级大小进行排序,确定多个中断源请求时对不同中断源的服务次序,称之为中断优先级。工作原理:多个中断源同时向CPU请求中断时,选择当前优先级最高的中断进行处理。规则:优先级可以是固定的,也可以动态调整,8.2 中断控制器8259A,8259A的主要功能8259A的结构及引脚功能825
5、9A的工作方式8259A的初始化命令字8259A的初始化编程,1. 8259A的主要功能,中断控制器的功能:在多个中端源的系统中,接收外部中断请求并判断,选择优先级最高的外部中断请求,向CPU发起中断请求信号。 使用中断控制器的原因: CPU的中断管脚太少(8086/8088两根中断管脚:INTR和NMI); 中断控制方式比较单一(屏蔽、优先级管理、嵌套等),1. 8259A的主要功能,每片8259A可管理8级优先权中断源,通过级联,最多可管理64级优先权的中断源。 对任何一级中断源都可单独进行屏蔽。 向CPU提供可编程的标识码(中断号),为不能提供中断号的外设提供中断管理。 具有五种中断优先
6、权管理方式:完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式 可编程,提高中断优先管理的灵活性。,2. 8259A外部结构,8259A的内部结构,8259A的内部结构框图,其内部各组成模块有如下功能:(1) 中断请求寄存器IRR8259A有8条外部中断请求输入信号线IR0-IR7,每一条请求线上有一个相应的触发器来保存请求信号,当第i个IR端有中断请求时,IRR中的相应位置“1”;当中断请求响应时,IRR中的相应位置“0”。,(2)中断屏蔽寄存器IMRIMR(Interrupt Mask Register)用来存放屏蔽位信息,IMR的每一位可以禁止IRR中对应位的中断请求输入信
7、号进入。如果屏蔽优先权级别较高的中断请求输入时,不会影响到优先级较低的中断请求输入。,(3)优先权判决电路它在中断响应期间,根据控制逻辑规定的 优先权级别和中断屏蔽寄存器IMR的内容, 把中断请求寄存器IRR中允许中断的优先权最 高的中断请求位送入中断服务寄存器ISR。,(4)中断服务寄存器ISRISR存放当前正在进行服务的所有中断。ISR中相应位的置位是由优先权判决电路根据IRR中各请求位的优先权级别和IMR中屏蔽位的状态,将中断的最高优先级请求位选通到ISR中。,(5) 控制逻辑当有未被屏蔽的高级别的中断请求时,通过控制逻辑输出高电平的INT信号,向CPU申请中断。当CPU允许中断时,发出
8、中断响应信号INTA。在中断响应期间,它允许ISR的相应位置位,并发送相应的中断向量,通过数据总线缓冲器输出到总线上。,(6) 数据总线缓冲器这是8位双向三态缓冲器,用作8259A与数据总线的接口,传输命令控制字、状态字和中断向量。(7)读/写控制电路该部件接收来自CPU的读/写命令,实现对8259A的读/写操作。(8)级联缓冲器/比较器它们实现8259A芯片之间的级联,使得中断源可以由8级扩展至64级。,3. 8259A的主要工作方式,(1)中断触发方式按照引入中断请求的方式,8259A有下列几种工作方式:1边沿触发方式 8259A将中断请求输入端出现的上升沿,作为中断请求信号,上升沿后 相
9、应引脚,可以一直保持高电平。,2电平触发方式 8259A将中断请求输入端出现的高电平作为中断请求信号,在这种方式下,必须注意:中断响应之后,高电平必须及时撤除,否则,在CPU响应中断,开中断之后,会引起第二次不应该有的中断。,(2)系统总线的连接方式当8259A以级联方式用在一个大的系统下时,就要求对数据总线进行驱动缓冲。系统总线的连接方式就是用来设定系统总线与8259A数据总线之间是否需要进行缓冲。1非缓冲方式2缓冲方式,(3)中断源的屏蔽方式 1普通屏蔽方式 8259A的每个中断请求输入,都要受到屏蔽寄存器中相应位的控制。若相应位为“1”,则中断请求不能送CPU。屏蔽是通过对屏蔽寄存器IM
10、R的编程,来加以设置和改变的。,2特殊屏蔽方式 有些场合下,临时改变中断优先级顺序,允许级别低的事件中断级别高的事件,引入了对中断的特殊屏蔽方式。需要编程设置特殊屏蔽方式,(4)优先权的管理方式 1 普通全嵌套方式 这是8259A默认的优先权设置方式,在全嵌套方式下,8259A所管理的8级中断优先权是固定不变的,其中IR0的中断优先级最高,IR7的中断优先级最低。,2特殊全嵌套方式 特殊全嵌套方式与全嵌套方式基本相同,所不同的是,当CPU处理某一级中断时,如果有同级中断请求,那么CPU也会作出响应,从而形成了对同一级中断的特殊嵌套。特殊全嵌套方式通常应用在有8259A级连的系统中。,3优先级自
11、动循环方式 即一个中断源的中断请求被响应之后,其优先级自动降为最低。 系统启动时,8级中断优先级默认为IR0IR7,这时,刚好IR4发出了中断请求,CPU响应之后,若8259A工作在优先级自动循环方式下,则中断优先级自动变为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。,4优先级特殊循环方式 优先级特殊循环方式与自动循环方式相比,只有一点不同,即初始化的优先级是由程序控制的,而不是默认的IR0IR7。,(5)结束中断处理的方式分为自动结束方式(AEOI)和非自动结束方式(EOI)。非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式。,1中断自动结束方式(AEO
12、I)这种方式仅适用于只有单片8259A的场合,在这种方式下,系统一旦响应中断,那么CPU在发第二个INTA脉冲时,就会使中断响应寄存器ISR中相应位复位,CPU可以再次响应任何级别的中断请求。,2一般的中断结束方式 一般的中断结束方式适用在全嵌套的情况下,当CPU用输出指令向8259A发一般中断中断结束命令时,8259A才会使中断响应寄存器ISR中优先级别最高的位复位。,3特殊的中断结束方式 在循环优先级模式下,系统无法确定哪一级中断为最后响应和处理的中断,也就是说,CPU无法确定当前所处理的是哪级中断,这时就要采用特殊的中断结束方式。特殊的中断结束方式是指在CPU结束中断处理之后,向8259
13、A发送一个特殊的中断结束命令,这个特殊的中断结束命令,明确指出了中断响应寄存器ISR中需要复位的位。,若中断控制器8259A工作在优先级自动循环方式下, 引脚IR3、IR4、IR6、IR7同时发出了中断请求,请写 出在整个执行过程中优先级队列的变化情况。 时刻0:初始化 优先级队列为IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR7 时刻1:IR3被响应执行后 优先级队列变为: 时刻2:IR4被响应执行后 优先级队列变为: 时刻3:IR6被响应执行后 优先级队列变为: 时刻4:IR7被响应执行后 优先级队列变为:,4.8259A的初始化命令字,初始化编程:指系统在上电或复位后对可编
14、程器件进行控制字设定的一段程序。初始化命令字:一般在系统复位后的初始化编程中设置,用于确定8259A的基本工作方式,设置以后一般保持不变。,初始化命令寄存器组包括4个寄存器:ICW1-ICW4 由于8259A只有一条地址线A0,所以它只能有两个端口地址,而8259A有7个命令字,每个命令字要写入相应的寄存器。为此,采取以下几点措施:1)以端口地址区分2)把命令字中的某些位作为特征码来区分3)以命令字的写入顺序来区分 在PC/XT中,两个端口地址分别是:奇地址(A0=1,大地址)和偶地址(A0=0,小地址)。,(1)8259A的初始化控制字初始化控制字ICW(Initialization Con
15、trol Word)是在计算机启动的过程中设定完成的,计算机启动起来后,8259A就按初始设定的状态工作。8259A有四个初始化控制字ICWl、ICW2、ICW3和ICW4,由于8259A只有一根地址线,因此对各个控制字的操作是按照一定的顺序并结合某些数据位来进行寻址设置的。,(2) 各初始化控制字的功能 1ICW1的控制字格式如下图所示。,ICW1的格式,A0=0、D4=1:是ICW1的标志。只要CPU向8259A发送一条A0=0和D4=1的命令时,这条命令就被译码为对ICW1进行操作。它启动8259A的初始化过程,产生下列动作:清除IMR,把最低优先级分配给IR7,把最高优先级分配给IR0
16、,将从设备标志置成7,清除特殊屏蔽方式,设置读IRR方式。 D7-D5:在8080(85)系统中为中断向量地址位,在8086/8088系统中不用。,LTIM(D3):中断输入寄存器的触发方式。0为边沿触发,中断输入信号上升沿时被识别并送入IRR。1为电平触发,中断输入信号为高电平即可进入IRR。这两种触发方式都要求高电平的请求信号在置位IRR相应位后一直保持,直到中断被响应为止。 ADI(D2):设定8080(85)方式下中断向量地址间隔字节数,1为4字节,0为8字节。在8086/8088方式下此位不用 SNGL(D1):单个器件/级联方式指示。1表示系统中只有一个8259A,0表示级联方式。
17、 IC4(D0):该位用于设定有无ICW4。1表示使用ICW4,在8086/8088方式下,必须使用ICW4。0表示不用ICW4,此时ICW4所选择的全部功能位都置成0。,2ICW2在8086/8088方式下,用于提供8个中断源的中断向量码。ICW2的高5位T7-T3在初始化编程时设置,初始化低3位由8259A用中断源的编号填写。ICW2的命令字格式如下图所示。,ICW2的格式,ICW2利用A0=1和初始化的次序来寻址。在8086/8088系统中,初始化控制字ICW2是比较重要的,它确定了8259A外接中断源的起始中断向量码,并实现了每个中断源中断向量码的自动生成。下面举例说明中断向量码的形成
18、情况。在初始化编程时要保持ICW2的低三位为“0”,如设定ICW2为“11111000”(F8H)。如果某一中断源IRn有中断请求,将n填入ICW2的低3位,与高5位共同组成该中断源的中断向量码,如下表所示。,中断向量码的形成情况表,3ICW3的功能:确定主片和从片的级连状态,即确定主片的级连位和从片的编码ICW3用于8259A的级联,若系统中只有一片8259A,则不用ICW3;若8259A工作于级联方式,则需要用ICW3设置8259A的状态。,ICW3的格式,用两片8259A管理中断,从片INT与主片的IR2连接,主从片的ICW3分别为( )。A02H和04H B04H和02H C02H和0
19、2H D04H和04H答案:B,4ICW4只有在ICW1的IC4=1时才使用,其格式如下图所示。 主要功能:选择CPU系统,确定中断结束方式;规定是 主片还是从片,确定是否是缓冲方式.,ICW4格式,5.8259A的初始化编程,例1 IBMPC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口地址为20H和21H,初始化为:边沿触发、非缓冲连接、中断结束采用非自动结束方式、中断优先级采用普通全嵌套方式,8级中断源的中断类型码分别为F8HFFH,写出8259初始化程序。,MOV AL,00010011BOUT 20H,AL ;写入ICW1MOV AL,111110
20、00BOUT 21H,AL ;写入ICW2MOV AL,00000001BOUT 21H,AL ;写入ICW4,8259A芯片之间的级联,例2 假设8259A的IR7引脚和IR2引脚下面 分别连接了从片,主片端口地址为20H和 21H,初始化为:电平触发、缓冲连接、 采用自动中断结束方式、中断优先级采用 全嵌套方式,8级中断源的中断类型码分别 为80H87H,写出主片8259A的初始化程 序。,MOV AL,00011001B OUT 20H,AL ;写入ICW1 MOV AL,10000000B OUT 21H,AL ;写入ICW2 MOV AL,10000100B OUT 21H,AL ;写入ICW3 MOV AL,00001111B OUT 21H,AL ;写入ICW4,