570 likes | 719 Views
第 六章. 中断技术 课程名称:微机原理与接口技术 授课方式 : 讲课、实验、提问及作业 主讲人:金永贤. 第六章 中断技术. 教学重点 关于中断的一些基本概念 可编程中断控制器 8259A 的编程与应用 教学难点 8259 的工作方式 教学目标 利用中断控制器 8259A 解决实际问题. 6.1 中断的基本概念. 中断过程. 一、什么是中断
E N D
第 六章 中断技术 • 课程名称:微机原理与接口技术 • 授课方式:讲课、实验、提问及作业 • 主讲人:金永贤
第六章 中断技术 教学重点 关于中断的一些基本概念 可编程中断控制器8259A的编程与应用 教学难点 8259的工作方式 教学目标 利用中断控制器8259A解决实际问题
6.1 中断的基本概念 中断过程 • 一、什么是中断 中断:是指CPU在正常运行程序时,由于内部/外部事件或由程序的预先安排的事件,引起的CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕后,再返回去继续执行被暂时中断的程序的过程。 • 二、中断源与中断识别 1.中断源 中断源:发出中断请求的外部设备或引起中断的内部原因。又分为外部中断、内部中断。
6.1 中断的基本概念 中断源可细分为: (1)外设中断:系统外部设备要求与CPU交换信息而产生的中断 (2)指令中断:为了方便用户使用系统资源或调试软件而设置的中断指令 (3)程序性中断:程序员的疏忽或算法上的差错。使程序在运行过程中出现的错误而产生的中断 (4)硬件故障中断:计算机在运行过程中,硬件出现错误而引起的中断。
6.1 中断的基本概念 中断类型总分类: 内部中断 中 断 可屏蔽中断(外设中断、用户设定的中断) 外部中断 非屏蔽中断(电源故障中断)
非屏蔽中断源 可屏蔽中断源 NMI 8259A 中断 控制器 IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 CPU INTR 中断逻辑 外 设 中 断 源 INTA INT N 指令 INTO 指令 除法 错误 单步 中断 8086/8088的中断类型 • 内部中断 • 除法错中断 • 指令中断 • 溢出中断 • 单步中断 • 外部中断 • 非屏蔽中断 • 可屏蔽中断
1. 内部中断 内部中断是由于8088内部执行程序出现异常引起的程序中断 • 除法错中断:向量号为0 • 指令中断:向量号为n • 断点中断:向量号为3 • 溢出中断:向量号为4 • 单步中断:向量号为1 内部中断的中断向量号已定
2. 外部中断 IF控制可屏蔽中断的响应 外部中断是由于8088外部提出中断请求引起的程序中断 • 非屏蔽中断:向量号为2 • 外部通过非屏蔽中断NMI请求,必须响应 • 非屏蔽中断主要用于处理系统的意外或故障 • 可屏蔽中断:向量号来自中断控制器 • 外部通过可屏蔽中断INTR请求,由IF控制是否响应;响应时产生/INTA信号 • 可屏蔽中断主要用于与外设交换数据
中断标志IF的状态 • IF=0:关闭可屏蔽中断 • 关中断、禁止中断、中断屏蔽 • 系统复位,使IF=0 • 任何一个中断被响应,使IF=0 • 执行指令CLI,使IF=0 • IF=1:打开可屏蔽中断 • 开中断、允许中断、中断开放 • 执行指令STI,使IF=1
6.1 中断的基本概念 2.中断源识别 由于在计算机中中断源众多,所以CPU响应中断后要设法寻找中断源,从而确定中断类型。以便转入相应的中断服务子程序中去执行中断服务。 CPU识别中断源的方法有两种:向量中断,查询中断。 向量中断是由中断向量来指示中断服务程序的入口地址。查询中断是采用软件或硬件查询技术来确定发出中断请求的中断源。
6.1 中断的基本概念 • 三、中断向量与中断向量表 中断向量:是中断服务程序的入口地址。包括中断服务程序的段基址CS和偏移地址IP。在80x86系列计算机中把256种中断类型的服务程序地址放在存储器的00000H~003FFH处,共1024个字节单元,这段空间称为中断向量表。 • 四、中断类型号与中断向量指针 中断类型(向量)号:是系统分配给每个中断源的代号,共有00H~0FFH号共256号。 中断向量号与中断向量指针的关系: 中断类型号*4=中断向量的低字节的指针。 中断向量指针与中断号关系
6.1 中断的基本概念 • 五、中断向量的装入与修改 1.中断量向量的装入 中断向量的是由程序装入内存指定的中断向量表中。系统配置和使用的中断所对应的中断向量由系统软件负责装入,若系统未配置系统软件,就由用户自行装入中断向量。 例1: 设中断类型号为60H,中断服务程序的段基址是SEG-INTR,偏移地址是OFFSET-INTR,则填写中断向量表的程序为:
6.1 中断的基本概念 . . CLI ;关中断 CLD ;内存地址加1 MOV AX,0 MOV ES,AX ;给ES赋值为0 MOV DI,4*60H ;中断向量指针DI MOV AX,OFFSET-INTR ;中断服务程序偏移值AX STOSW ;AX[DI][DI+1]中,DI+2 MOV AX,SEG-INTR ;中断服务程序的段基址AX STOSW ;AX[DI+2][DI+3] STI ;开中断 .
6.1 中断的基本概念 2.中断量向量的修改 由用户直接装入中断向量的作法,只在单板机中采用,因为它没有配置完善的系统软件,无法负责中断向量的装入,而在PC机中,实际上不采用由用户自行装入中断向量的作法,而是采用中断向量修改的办法来使用系统的中断资源。 中断向量的修改是利用DOS功能调用INT 21H中35H号和25H号功能。 例2:假设原中断程序的中断号为n,新中断程序的入口地址的段基址为SEG-INTR,偏移地址为OFFSET-INTR。中断向量修改的程序段为:
6.1 中断的基本概念 例2:MOV AH,35H ;取原中断向量保存 MOV AL,nH INT 21h MOV OLD-OFF,BX MOV BX,ES MOV OLD-SEG,BX ;保存中断向量 . . . MOV AH,25H ;修改新中断向量 MOV AL,nH ;中断号 MOV DX,SEG-INTR MOV DS,DX ;DS指向新中断程序段址 MOV DX,OFFSET-INTR;DX指向新中断程序偏移地址 INT 21H . . . MOV AH,25H ;恢复原中断向量 MOV AL,nH MOV DX,OLD-SEG MOV DS,DX MOV DX,OLD-OFF INT 21H
6.1 中断的基本概念 . . . MOV AH,25H ;恢复原中断向量 MOV AL,nH MOV DX,OLD-SEG MOV DS,DX MOV DX,OLD-OFF INT 21H
6.1 中断的基本概念 • 六、中断优先级排队 当系统中有多个中断同时申请中断时,CPU在一个时刻只能响应并处理一个中断请求,排队的方法有:a.按优先级排队(固定优先级排队) b.循环轮流排队(循环优先级排队)。 • 七、中断嵌套 当CPU正在处理某个中断源时,即正在执行中断服务程序时,会出现优先级更高的中断申请,CPU需要暂时中断当前正在执行的级别较低的中断服务程序,去处理级别高的中断,处理完后,再返回被中断了的中断服务程序继续执行。
6.2 可编程中断控制器8259A • 一、8259A的功能 中断系统中的硬件中断需使用中断控制器8259A协助CPU进行中断处理,通过它可以完成以下工作:(解决一对多的矛盾) 1.优先级排队管理 2.接受和扩充外部设备的中断请求 3.提供中断类型号 4.进行中断请求的屏蔽和开放 • 二、8259A的外部特性和内部结构 1.8259A引脚
6.2 可编程中断控制器8259A 8259A的外部引脚可分为3组: a.面向CPU的信号线:数据线(D0~D7)、地址线(/CS、A0)、控制线(/WR、/RD、INT、/INTA); b.面向I/O设备的信号线:中断请求线(IR0~IR7); c.面向同类芯片的信号线:级联控制线(SP/EN、CAS0~CAS3)。 2.8259A的内部结构 (1)中断请求寄存器(IRR) • 保存8条外界中断请求信号IR0~IR7的请求状态,Di位为1表示IRi引脚有中断请求;为0表示无请求
6.2 可编程中断控制器8259A (2)正在服务寄存器(ISR) • 保存正在被8259A服务着的中断状态 • Di位为1表示IRi中断正在服务中;为0表示没有被服务 (3)中断屏蔽寄存器(IMR) • 保存对中断请求信号IR的屏蔽状态 • Di位为1表示IRi中断被屏蔽(禁止);为0表示允许 (4)优先权分析器(PR) • 负责从所有的中断申请和“正在服务中的中断”范围内选出级别最高的中断 (5)读写控制逻辑 (6)级联缓冲器/比较器
普通全嵌套方式 特殊全嵌套方式 设置优先权方式 自动中断结束方式 结束中断处理方式 普通中断结束方式 非自动中断结束方式 特殊中断结束方式 普通屏蔽方式 屏蔽中断源方式 特殊屏蔽方式 边沿触发方式 中断触发方式 电平触发方式 缓冲方式 自动循环方式 优先权固定方式 非缓冲方式 特殊循环方式 优先权循环方式 数据线连接方式 8259A的工作方式
6.2 可编程中断控制器8259A • 三、8259A的工作方式 8259A通过编程可选择多种工作方式,大致可分为以下几种: 1.引入中断请求(中断触发)的方式 a.边沿触发方式:以正跳沿向8259A请求中断,上跳沿后可一直维持高电平。 b.电平触发方式:以高电平申请中断,但在响应中断后必须及时清除高电平,以免引起第二次误中断。 c.中断查询方式:外设通过8259A申请中断,但8259A却不使用INT信号向CPU申请中断,CPU用软件查询确定中断源,并为其服务。
三、8259A的工作方式 2.连接系统总线的方式 a.缓冲方式:数据总线有缓冲器 b.非缓冲方式:8259直接和系统数据总线向连,SP/EN表示主/从芯片。SP=1:主控;SP=0:从控 3.屏蔽中断源的方式 a.通常屏蔽方式:利用操作命令字OCW1,使屏蔽寄存器IMR中的一位或几位置1来屏蔽一个工几个中断源的中断请求,若要开放某一中断时,则IMR中相应位置0 b.特殊屏蔽方式:在某些场合,在执行某一个中断服务程序时,要求允许另一优先级比它低的中断请求被响应,此时可采用特殊屏蔽方式,它通过OCW3的D6D5=11来设定
三、8259A的工作方式 4.优先级排队的方式 a.全嵌套方式:在此种方式下,中断级别由高到低为IR0~IR7,并且只允许中断级别高的中断源去中断中断级别低的的中断服务程序,而不能相反,这是8259A最常用的一种工作方式 b.特殊全嵌套方式:它各全嵌套方式基本相同,唯一不同的是在特殊全嵌套方式下,当执行某一级中断服务程序时,可响应同级的中断请求,用于多片级联。 c.优先级自动轮换方式:在这种方式下优先级的顺序是会变化的,某一个中断被响应后,它的优先级就自动降为最低,它的下一级升为最高。其初始的优先级由高到低为IR0、IR1、IR2….IR7。
三、8259A的工作方式 d.优先级指定轮换方式:这种方式与优先自动轮换方式相似,唯一的不同是,优先级指定轮换方式中其初始的优先级不一定是IR0最高,IR7最低,而是由用户自行指定的。 5.结束中断的处理方式 a.自动中断结束方式:在中断服务程序中,中断返回之前,不需要发中断结束命令就会自动清除该中断服务程序所对应的ISR位 b.非自动中断结束方式:在中断服务程序返回之前,必须发中断结束命令才能使ISR中的当前服务位清除。
6.2 可编程中断控制器8259A • 四、8259A的中断操作功能及其命令 8259A的中断操作功能很强,包括中断的请求、屏蔽、排队、结束、级联以及提供中断类型号和查询等操作。其内部有4个初始化命令字ICW1~ICW4(寄存器)和3 个操作命令字OCW1~OCW3(寄存器),分别用于对8259A工作方式和工作条件的设置,对中断处理过程实现动态控制。下面分别讨论: 1.中断请求触发方式的设置及8259A芯片数目的选择(ICW1)
D7 D6 D5 D4 D3 D2 D1 D0 1. 初始化命令字ICW 流程 • 初始化命令字ICW最多有4个 • 8259A在开始工作前必须写入 • 必须按照ICW1~ICW4顺序写入 • ICW1和ICW2是必须送的 • ICW3和ICW4由工作方式决定
ICW1 ×——表示可以任意 为1为0都可以(建议为0) 1——只能为1,作为标志 中断触发方式: LTIM=1,电平触发方式 LTIM=0,边沿触发方式 规定单片或级连方式: SNGL=1,单片方式 SNGL=0,级连方式 是否写入ICW4 IC4=1,要写入ICW4 IC4=0,不写入ICW4
6.2 可编程中断控制器8259A 2.中断类型号的设置(ICW2) 中断类型号8位,其中高5位由ICW2提供,低3位由中断请求线的IRi的二进制编码决定。 例:PC机,硬盘中断类型号高5位为08H,它的中断请求 线连到8259的IR5上,在向ICW2写入中断类型号时,只需 要提供高5位, MOV AL,08H OUT 21H,AL 响应中断时,硬盘中断类型号为0DH(00001101B)
ICW2 • 设置中断向量号 • T7~T3为中断向量号的高5位 • 低3位由8259A自动确定: • IR0为000、IR1为001、……、IR7为111
6.2 可编程中断控制器8259A 3.中断级联方式的设置(ICW3) SP/EN接高电平为主控,接低电平为从控,主控和从控的CAS0-2相互连接。 例:主控8259第IR3、IR6上联了从控。 主控:ICW3=01001000B, 从控A:ICW3=00000011B; 从控B:ICW3=00000110B
ICW3 • 级连命令字 • 主片8259A:Si=1对应IRi接有从片;否则IRi没有连接从片 • 从片8259A:ID0~ID2编码说明从片INT引脚接到主片哪个IR引脚
6.2 可编程中断控制器8259A 4.ICW4的设置(ICW4)
ICW4 • 嵌套方式: • 特殊全嵌套方式(SFNM=1) • 普通全嵌套方式(SFNM=0) • 数据线的缓冲方式: • 缓冲方式(BUF=1) • 非缓冲方式(BUF=0) • 主片/从片选择: • 主片(M/S=1) • 从片(M/S=0) • 中断结束方式: • 自动中断结束(AEOI=1) • 非自动中断结束(AEOI=0) • 微处理器类型: • 16位80x86(PM=1) • 8位8080/8085(PM=0)
D7 D6 D5 D4 D3 D2 D1 D0 2. 操作命令字OCW • 8259A工作期间,可以随时接受操作命令字OCW • OCW共有3个:OCW1~OCW3 • 写入时没有顺序要求,需要哪个OCW就写入那个OCW
OCW1 屏蔽命令字 内容写入中断屏蔽寄存器IMR Di=Mi对应IRi,为1禁止IRi中断; 为0允许IRi中断。各位互相独立。
OCW2 具体含义 R、SL和EOI配合使用 产生中断结束EOI命令和改变优先权顺序 L2~L0的3位编码 指定IR引脚
OCW3 具体含义 ESMM、SMM 设置中断屏蔽方式 P、RR和RIS 规定随后读取的状态字含义
6.3 8259A在微机系统中的应用 • 一、 8259A的编程命令的使用 8259A有两类编程命令;初始化命令字(ICW)和操作命令字(OCW)。8259A初始化编程和中断向量的装入一样,在PC微机中是由系统软件来做,并且开机上电就已经做好,不需要用户来完成。用户只需使用8259A的操作命令字(OCW1、OCW2、OCW3)来进行中断屏蔽/开放和发中断命令即可。 1.初始化命令字(ICW) 在中断系统运行之前,系统中的每一个8259A必须按先后次序接收CPU的2~4个ICW初始化命令字进行初始化。
图6.12 初始化流程图 1.初始化命令字 送ICW1 送ICW2 N 级联方式? Y 送ICW3 N 需要ICW4? Y 送ICW4 准备接收中断
2. 操作命令字(OCW) 当处理器对中断控制器完成初始化编程后,8259A就处于准备就绪状态,等待接收外界的中断请求,进行完全嵌套的中断管理。
6.3 8259A在微机系统中的应用 • 二、 8259A初始化编程 1.举例单片使用8259A的初始化编程 (1)需求与特点 a.共8级向量中断,因为采用单片方式,故CAS2~CAS0不用,SP\/EN\接+5V。 b.端口地址在020H~03FH范围内,实际使用力20H和21H端口。 c. 8个中断请求输入信号IR0~IR7均为边沿触发。 d.采用完全嵌套方式,0级为最高优先级,7级为最低优先级。 e.设定0级请求对应中断号为8,1级中断请求号为9依次类推。
6.3 8259A在微机系统中的应用 • 二、 8259A初始化编程 (2)硬件连接 如图6.13所示 (3)初始化编程 INTA00 EQU 020H ;8258A端口0 INTA01 EQU 021H ;8259A端口1 . . MOV AL,13H ;写入ICW1 边沿触发 单片 要ICW4 OUT INTA00,AL ; MOV AL,8 ;写入ICW2 中断号的高5位OUT INTA01,AL ; MOV AL,01 ;写入ICW4 全嵌套 16位机 非自动结束 OUT INTA01,AL ; . .
6.3 8259A在微机系统中的应用 2.举例2 双片使用8259A的初始化编程 (1)需求与特点 a.共15级向量中断,采用两片级连,CAS0~CAS2作互连线,从片的INT直接连到主片的IR2上。 b.端口地址,主片在020H~03FH范围内,实际使用20H和21H端口。从片在A0H~0BFH范围内,实际使用力A0H和0A1H。 c. 主、从片中断请求信号均采用边沿触发。 d.采用完全嵌套方式,0级为最高优先级,依次为8~15级,然后是3~7级。 e.采用非缓冲方式,主片的SP\/EN\端接+5V,从片的SP\/EN\ 接地。 f.设定0~7级对应主片的中断号为8H~0FH,8级~15级对应从片的中断号为70H~77H。
6.3 8259A在微机系统中的应用 2. 举例2 双片使用8259A的初始化编程 (2)硬件连接 双片的中断系统硬件连接如图6.14所示 (3)初始化编程 INTA00 EQU 020H ;8259A主片端口0 INTA01 EQU 021H ; 8259A主片端口1 . . MOV AL,11H ;写入ICW1 边沿触发 多片 要ICW4 OUT INTA00,AL JMP SHORT $+2 ;I/O端口延时要求 MOV AL,8 ;写入ICW2 中断号的高5位 OUT INTA01,AL JMP SHORT $+2 MOV AL,04H ;写入ICW3 主片的IR2上接从片 OUT INTA01,AL JMP SHORT+2 MOV AL,01H ;ICW4 ,非缓冲、全嵌套、16位机 非自动结束 OUT INTA01,AL
6.3 8259A在微机系统中的应用 ;初始化8259A从片 INTA00 EQU 0A0H ;8259A从片端口0 INTA01 EQU 0A1H ; 8259A从片端口1 . . MOV AL,11H ;写入ICW1 边沿触发 多片 要ICW4 OUT INTA00,AL JMP SHORT $+2 ;I/O端口延时要求 MOV AL,70H ;写入ICW2 中断号的高5位 OUT INTA01,AL JMP SHORT $+2 MOV AL,02H ;写入ICW3 从片接主片的IR2 OUT INTA01,AL JMP SHORT+2 MOV AL,01H ;ICW4, 非缓冲、全嵌套、16位机 非自动结束 OUT INTA01,AL
中断服务子程序 主程序 中断的过程 中断响应过程: 子程序2 子程1 主程序 a.无嵌套中断响应过程 b. 有嵌套中断响应过程
8259A中断过程 8259A的具体中断请求,响应过程分步详述如下: (1)8259A的一条或几条IRI信号线高电平有效表示请求中断,使IRR的DI位置位; (2)8259A对这些请求进入进行分析,如果中断允许 则向CPU发出INT信号; (3)CPU在允许可屏蔽中断状态时对INTR作出响应,产生中断响应周期; (4)8259A收到第一个INTA\ 有效信号后,使最高优先权的ISR位置位,对应的IRR位复位; (5)8259A在第二个INTA\有效时,把中断向量号送上数据总线,供CPU读取; (6)CPU利用向量号转至中断服务程序,直到执行IRET指令返回。与此同时,若8259A工作在自动结束方式在最后一个INTA\时,发生中断的ISR相应位复位,8259A认为中断已完成。如果8259A工作在非自动中断结束方式,就等待CPU发中断结束命令,该命令使ISR复位。
INTA INTA IOR RD IOW WR — IRQ0 — IRQ1 IRQ2 — IRQ3 — IRQ4 — IRQ5 — IRQ6 — IRQ7 — A0 — CS — SP\/EN\ 日时钟 键盘 串行口2 串行口1 硬盘 软盘 并行口1 A0 INTR1CS +5v SP/EN INT D0~D7 S2 S1 S0 INTR D0~D7 8259A S2 S1 S0 8288 CAS0~2 图6.13单片8259A中断系统的硬件连接