微机原理 第七章 中断与中断控制.ppt_第1页
微机原理 第七章 中断与中断控制.ppt_第2页
微机原理 第七章 中断与中断控制.ppt_第3页
微机原理 第七章 中断与中断控制.ppt_第4页
微机原理 第七章 中断与中断控制.ppt_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

7 1 第七章中断与中断控制 7 1有关中断的基本概念7 2多中断请求的服务判决7 38259A可编程中断控制器7 4Pentium处理器的中断机理7 5微机系统开发中利用8259A扩展中断源的方法 7 2 7 1 1中断与中断类型7 1 2中断优先级与中断嵌套7 1 3CPU响应中断的条件7 1 4中断处理过程 7 1有关中断的基本概念 7 3 7 1 1中断与中断类型 中断是指CPU在执行当前程序的过程中 由于某种随机出现的外设请求或CPU内部的异常事件 使CPU暂停正在执行的程序而转去执行相应的服务处理程序 当服务处理程序运行完毕后 CPU再返回到暂停处继续执行原来的程序 中断是为解决CPU与外设之间的信息交换问题而引入的 但现代意义上的中断已不仅仅应用于I O控制 也应用到CPU内部的指令中断和内部异常处理 1 中断的定义 7 4 微机系统的中断可分为两大类 硬中断 软中断 2 中断分类 7 1 1中断与中断类型 7 5 7 1 1中断与中断类型 硬中断 软中断 指由CPU外部事件引起的中断 又叫外中断 简称中断 又分为 非屏蔽中断 NMI 可屏蔽中断 INTR 一种为外部紧急请求提供服务的中断 不受CPU内部的中断允许标志IF的屏蔽 CPU用来响应各种异步的外部硬件中断的最常用方法 受CPU内部的IF的控制 7 6 7 1 1中断与中断类型 硬中断 软中断 指由CPU内部原因 指令或异常 引起的中断 也叫内中断 统称为异常 又分为 失效 Fault 在引起失效的指令启动之后 执行之前被检测到 且在处理异常的程序执行完后退回该条指令重新启动并执行完毕 自陷 Trap 在产生自陷的指令执行完后才被报告 且其中断服务程序结束后是返回到主程序中该条指令的下一条指令 终止 Abort 对引起异常的指令的确切位置无法确定的异常 这类异常用于报告严重错误 一般无法继续运行 只能终止 而由中断服务程序重新启动OS并重建系统表格 7 7 7 1 2中断优先级与中断嵌套 当多个中断源同时申请中断时 CPU同一时刻只能响应一个中断源的申请 应按各中断源的轻重缓急程度来确定它们的优先级别 优先级高的中断先响应 中断嵌套是指在优先级已定的情况下 低优先级的中断服务程序可以被高优先级的中断源所中断 等高优先级的中断服务程序结束后 再返回去执行被中断的低优先级中断服务程序 7 8 主程序 1 中断服务程序 2 中断服务程序 3 中断服务程序 中断优先级 3 2 1 嵌套的级数原则上不限 只取决于堆栈深度 实际上与要求的中断响应速度也有关 中断嵌套示意图 7 1 2中断优先级与中断嵌套 1 中断服务程序 2 中断服务程序 3 中断服务程序 7 9 7 1 3CPU响应中断的条件 对中断源发出的中断请求是否响应 视CPU内中断和外中断有所不同 对内中断请求 可在当前指令执行前或执行后直接转入中断周期 由内部硬件自动执行预定的操作 对外中断请求 通常要满足以下条件才能响应 置位了中断请求触发器 每个中断源对应一个 通过它来保持请求信号 直至中断响应 7 10 中断屏蔽触发器处于非屏蔽状态 7 1 3CPU响应中断的条件 7 11 CPU内部是中断开放的 CPU内部有中断允许触发器 IF 只有当它为 1 即中断开放 时 才能响应外部中断 没有更高优先级别的中断请求正在被响应或正发出 正挂起 CPU正在执行的现行指令已经结束 CPU一定是在每条指令执行完后才采样INTR线而响应可能提出的中断请求 7 1 3CPU响应中断的条件 7 12 7 1 4中断处理过程 响应中断请求 中断返回 上述一般中断处理流程中是否每步工作都要做 取决于具体的CPU种类 7 13 7 2多中断请求的服务判决 在有多中断源的微机系统中 凡存在多个中断源合用一根中断请求线的情况 都存在一个多中断请求的服务判决问题 主要包括两方面 判别哪个中断请求源的优先权最高 确定为谁服务 将程序转移到相应的中断处理程序入口 7 14 解决这一问题的方法通常有两种 程序查询式判决 中断向量式判决 7 2多中断请求的服务判决 7 15 这是一种软件为主的判决方法 所需的硬件支持最少 主要需要一个带三态缓冲的中断请求锁存器作为状态输入口 以供MPU查询用 1 查询式判决原理 程序查询式判决 中断向量式判决 7 2多中断请求的服务判决 7 16 程序查询式判决 中断向量式判决 7 2多中断请求的服务判决 2 查询式中断流程图 7 17 优点 硬件简单 程序层次分明 只要改变程序中查询的顺序而不必改变硬件连接 即可方便地改变外设的中断优先级 缺点 中断源较多时 中断响应速度慢 CPU使用效率降低 3 查询式判决的优缺点 7 2多中断请求的服务判决 程序查询式判决 中断向量式判决 7 18 这是一种硬件为主的判决方法 主要用硬件电路对中断源进行优先级排队 并将程序引导到有关I O的中断服务程序入口 具体实现方案有 菊花链优先级判决 并行优先级判决 中断向量式判决 7 2多中断请求的服务判决 程序查询式判决 中断向量式判决 7 19 每个I O设备除有中断请求逻辑外 还必须包含一个中断向量发生器 当IACK有效并到达某个提出了中断请求的I O设备的输入端时 该设备将其识别码 也叫中断向量号 置于数据总线上 7 2多中断请求的服务判决 1 菊花链优先级判决 程序查询式判决 中断向量式判决 7 20 其核心部件是一个优先级编码器和各中断源公用的中断向量发生器 当IACK有效时 中断向量发生器将把与最高优先级中断请求源对应的中断向量号送上数据总线DB 2 并行优先级判决 7 2多中断请求的服务判决 程序查询式判决 中断向量式判决 7 21 与查询式相比 向量式中断结构的最大优点是中断响应速度快 CPU使用效率高 实际中应用最多的典型中断控制器芯片有 i8214 不可编程 8080等8位机中采用 i8259A 可编程 PC系列微机中广泛采用 无论菊花链还是并行结构 当MPU在中断响应周期中收到中断向量号后 便通过计算或查表得到中断向量 即中断服务程序入口地址 并自动进入和执行相应的中断服务程序 7 2多中断请求的服务判决 程序查询式判决 中断向量式判决 7 22 7 38259A可编程中断控制器 7 3 1功能概述7 3 2内部结构与外部引脚7 3 3内部端口寻址与读 写控制7 3 48259A的中断工作过程7 3 5命令字格式与应用编程 7 23 7 3 1功能概述 中断请求锁存中断源优先级排队中断源识别中断源屏蔽中断向量提供 8259A是Intel公司专为控制优先级中断而设计的NMOS芯片 内部集成了与中断控制有关的几乎所有基本功能 包括 而且各种功能都可通过编程设定或变更 7 24 7 3 2内部结构与外部引脚 IRR用于寄存所有要求服务的中断请求 PR用于确定中断请求寄存器IRR中各位的优先等级 ISR用于寄存所有正在被服务的中断级 用于控制多片8259A的级联 以实现将优先中断等级最多扩展到64级 7 25 7 3 3内部端口寻址与读 写控制 这些命令的输入顺序由8259A内部的时序逻辑通过适当的时序控制加以保证 对IRR ISR或中断级BCD码的选择 决定于在读出操作之前 CPU写入的操作命令字OCW3的内容 7 26 7 3 48259A的中断工作过程 8259A在8086模式下 对外部中断请求的响应和处理过程如下 当中断请求输入线IR0 IR7中有一条或多条变高时 则中断请求寄存器IRR的相应位置 1 若中断请求线中至少有一条是中断允许的 则8259A由INT引脚向CPU发出中断请求信号 7 27 7 3 48259A的中断工作过程 7 28 7 3 5命令字格式与应用编程 8259A的编程是指用户通过写操作送一些命令字 也叫控制字 到8259A内部的控制寄存器 命令字寄存器 用于设定或动态改变它的工作方式和控制模式 初始化命令字与初始化编程 操作命令字与操作方式编程 可编程设置的工作方式 7 29 对初始化编程要注意两点 写ICW的流程必须按规定顺序写 不能颠倒 各ICW的格式 功能 1 初始化命令字与初始化编程 初始化编程是通过写初始化命令字ICW1 ICW4来实现的 写入流程如图所示 7 3 5命令字格式与应用编程 7 30 格式 设置中断请求触发方式 清除中断屏蔽寄存器 设置中断优先级排队 IRQ0 IRQ7依次降低 指明系统使用的8259A是单片还是多片级联 初始化命令字 ICW1 ICW2 ICW3 ICW4 ICW1的功能 7 3 5命令字格式与应用编程 7 31 ICW2的格式 在8080 8085模式系统中 用于设定中断向量地址的高8位 A15 A8 而在8086 8088模式系统中 则用于设定中断向量号的高5位 T7 T3 初始化命令字 ICW1 ICW2 ICW3 ICW4 ICW2的功能 7 3 5命令字格式与应用编程 7 32 ICW3是级联命令字 用于定义8259A8根中断请求线上有无级联8259A从片 若系统只有一片8259A 则不用ICW3 若有多片8259A级联 则每一片8259A都必须使用ICW3 且主 从片的ICW3格式不同 初始化命令字 ICW1 ICW2 ICW3 ICW4 7 3 5命令字格式与应用编程 ICW3的功能 7 33 用于定义8259A的工作模式 以及中断服务程序是否要送出EOI命令 以清除中断服务寄存器ISR 允许其他中断 ICW4格式 初始化命令字 ICW1 ICW2 ICW3 ICW4 ICW4的功能 7 3 5命令字格式与应用编程 7 34 再编写初始化程序段 例6 1某80X86微机的中断系统有5个外部中断源 接在8259A的IR3 IR7端 中断类型码分别为5BH 5CH 5DH 5EH和5FH 8259A的端口地址为B0H B1H 允许它们以全嵌套工作方式工作 中断请求采用电平触发方式 试编写8259A的初始化程序 解 先确定初始化命令字ICW ICW1 00011011 ICW2 01011000 ICW3 不写 ICW4 00000001 MOVDX 0B0H 指向端口0MOVAL 1BH ICW1OUTDX AL 写ICW1INCDX 指向端口1MOVAL 58H ICW2OUTDX AL 写ICW2MOVAL 01H ICW4OUTDX AL 写ICW4 7 3 5命令字格式与应用编程 7 35 例6 2某80X86系统的中断系统由二片8259A级联而成 主 从8259A的IR5上各接有一个外部中断源 其中断向量号分别为0DH 85H 假设它们的中断入口地址均在同一段中 段基址为4310H 偏移地址分别为1230H 2340H 所有中断都采用边沿触发方式 全嵌套方式 正常EOI结束方式 写出主 从8259A中断向量号范围 假定主 从片端口地址分别为20H 21H 26H 27H 试画出电路连线图 试编写全部初始化程序 7 3 5命令字格式与应用编程 7 36 有选择地写操作命令字OCW1 OCW3到操作命令寄存器组 这项工作可在8259A已经初始化后的任何时候进行 目的是对中断处理过程实现动态控制 如果不写操作命令字 8259A就按初始化编程所设置好的方式和模式工作 工作于IR0优先级最高 从IR0 IR7优先级依次降低的固定优先级的全嵌套工作方式 如需改变初始化时设置的中断控制方式 或屏蔽某些中断级 读出一些状态信息 就必须在8259A进入工作之前或工作过程中酌情写入操作命令字OCW 2 操作命令字与操作方式编程 7 3 5命令字格式与应用编程 7 37 用来设置 清除对中断源的屏蔽 格式 操作命令字 OCW1 OCW2 OCW3 OCW1的功能 7 3 5命令字格式与应用编程 7 38 用于设置中断优先级是否循环 循环的方式及中断结束的方式 操作命令字 OCW1 OCW2 OCW3 OCW2的功能 7 3 5命令字格式与应用编程 7 39 用于设置查询方式 特殊屏蔽方式 以及用来读8259A的IRR ISR IMR的当前状态 格式 操作命令字 OCW1 OCW2 OCW3 7 3 5命令字格式与应用编程 OCW3的功能 7 40 把正在执行的高级中断屏蔽掉 而开放较低级中断的屏蔽方式 先利用OCW1命令将正在执行的高级中断屏蔽掉 然后用OCW3命令 D6D5 11 设置特殊屏蔽方式 这样可使ISR相应位的功能中止 直到清除特殊屏蔽方式 利用该功能 可使中断不受优先级限制 而人为地为某一较低优先级中断服务 这就为用户提供了很大的灵活性 实现方法 操作命令字 OCW1 OCW2 OCW3 特殊屏蔽方式 7 3 5命令字格式与应用编程 7 41 例如系统正在为IRQ4中断服务 服务过程中为了允许比它低的中断得到响应 可用特殊屏蔽命令字将IRQ4中断暂时屏蔽 当为较低级中断服务完后 再解除对IRQ4中断的屏蔽 以最后完成对它的中断服务 为IRQ4中断服务的程序 屏蔽除准备允许响应的低级中断 外的所有其它低级中断 CLI 为在IRQ4服务程序中开放低级中 断设置特殊命令字而关中断 MOVAL 10H 送屏蔽IRQ4的OCW1命令MOVDX PORT1 送OCW1口地址 DXOUTDX AL OCW1 8259A A0 1MOVAL 68H 送特殊屏蔽方式字 OCW3 AL S1S2 11 操作命令字 OCW1 OCW2 OCW3 特殊屏蔽举例 7 3 5命令字格式与应用编程 7 42 MOVDX PORT2 送OCW3口地址 DXOUTDX AL OCW3 8259A A0 0STI 开中断 CLI 为复位特殊屏蔽方式而关中断MOVAL 48H OCW3 AL S1S2 10MOVDX PORT2 送OCW3口地址 DXOUTDX AL OCW3 8259A A0 0MOVAL 0 解除对IRQ4的屏蔽MOVDX PORT1 OCW1口地址 DXOUTDX AL OCW1 8259A A0 1STI 开中断 包含EOI的中断结束命令IRET 中断结束返回 操作命令字 OCW1 OCW2 OCW3 7 3 5命令字格式与应用编程 7 43 CPU根据需要随时查询中断源 当查询到有中断请求时 就转入为相应中断源服务的程序中去 系统关中断 写入查询命令字OCW3至0端口查询命令字为 00001100 实现方法 读0口 可读到下列查询字 IXXXXW2W1W0 I 1表示有中断请求 W2W1W0为中断请求源中优先级最高者的编码 程序执行转到W2W1W0所对应的中断源服务程序去 I 0表示无中断请求 CPU继续执行原程序 操作命令字 OCW1 OCW2 OCW3 查询方式 7 3 5命令字格式与应用编程 7 44 读命令字格式为 000010R1R0 R1R0 10 读出的是中断请求寄存器IRR R1R0 11 读出的是中断服务寄存器ISR 操作命令字 OCW1 OCW2 OCW3 读IRR ISR的方法 先发读命令字OCW3到0端口 再读0端口 读IMR的方法 直接对1端口进行读操作 即可读出IMR的内容 读8259A状态 7 3 5命令字格式与应用编程 7 45 3 可编程设置的工作方式 8259A具有十分灵活的中断管理方式 1 中断嵌套方式2 中断优先级循环方式3 中断屏蔽方式4 程序查询方式5 中断结束方式6 中断请求触发方式7 读状态方式8 数据缓冲方式9 多片级联方式 7 3 5命令字格式与应用编程 7 46 1 中断嵌套方式 8259A支持两种中断嵌套方式 全嵌套方式和特殊全嵌套方式 全嵌套方式一种最普通的工作方式 芯片写完初始化命令字ICW后 如不再写入操作命令字OCW 则自动进入并保持此方式 此时中断优先级固定为IRQ0最高 IRQ7最低 且高级中断源可中断低级中断源 7 3 5命令字格式与应用编程 7 47 全嵌套方式工作的条件 主程序必须开中断 每进入一个中断服务程序 系统都会自动关中断 故必须在中断服务程序中再次开中断 才有可能嵌套更高级的中断 每次中断服务程序结束时 必须执行中断结束命令 清除ISR中对应的位 才能返回断点并响应再次到来的中断请求 7 3 5命令字格式与应用编程 7 48 全嵌套中断方式流程 7 3 5命令字格式与应用编程 7 49 特殊全嵌套方式 适用于多片8259级联且响应的中断优先级保存在各从片中的大系统 与普通全嵌套方式相比 特殊全嵌套方式的特殊性表现在 当从片的中断请求被响应后 主片并不封锁从片的INT输入端 以便从片中优先级更高的请求可得到响应 在从片中断服务程序快结束时要检查其ISR内容 检测刚服务完的中断是否为该从片唯一的中断请求源 如是 则连发两个非特殊EOI命令 使从片 主片相继结束中断 否则 只发一个EOI命令 使主片仍不结束中断 7 3 5命令字格式与应用编程 7 50 8259A提供了两种中断优先级循环方式 自动循环优先级方式 适合于各中断源的优先级相同的应用场合 一个中断源被服务后 其优先级自动排到最低 此方式又分非自动结束方式下循环和自动结束方式下循环两种 具体通过写OCW2最高三位设置 特殊循环优先级方式 适合于中断源的优先级需随意改变的应用场合 由OCW2的最高三位再辅之以最低三位设定 通过设定最低三位编码指定最低优先级从而改变各中断源优先级 2 中断优先级循环方式 7 3 5命令字格式与应用编程 7 51 具体屏蔽方式有两种 普通屏蔽方式 用OCW1设置IMR中某一位或某几位为1 即可将相应中断请求屏蔽掉 特殊屏蔽方式 允许开放低级中断 用OCW3设置该方式 OCW1建立普通屏蔽信息 当响应一个中断请求时 开放所有未被OCW1屏蔽的其它优先级中断 3 中断屏蔽方式 7 3 5命令字格式与应用编程 7 52 这种方式下CPU可获得当前请求中断服务的优先级 实现方法是将OCW3的D2位设置为1 再紧跟一个读命令 4 程序查询方式 7 3 5命令字格式与应用编程 7 53 8259A提供了两种中断结束方式 EOI命令又有两种形式 5 中断结束方式 7 3 5命令字格式与应用编程 7 54 通过设置初始化命令字ICW1的D3位为0或为1 可使8259A工作于边沿 上升沿 触发方式或电平 高电平 触发方式 在电平触发方式下 CPU在发出EOI命令前或再次开放中断前 必须确保已响应的中断请求IRi为低电平 以防出现第二次中断 说明 6 中断请求触发方式 7 3 5命令字格式与应用编程 7 55 8259A内部的IRR ISR和IMR三个寄存器状态 可通过适当的输入命令读至CPU中 7 读状态方式 7 3 5命令字格式与应用编程 7 56 常用于多片级联的大系统中 设置方式 将ICW4的D5位 BUF位 置 1 8 数据缓冲方式 7 3 5命令字格式与应用编程 7 57 一个系统中 可将多片8259A级联 级联后一片8259A为主片 若干片8259A为从片 最多可有8个从片 将中断源扩展到64个 主片和每个从片都必须通过写入ICW3分别初始化和设置必要的工作状态 每片8259A都必须分配两个互不相同的端口地址 偶地址 奇地址各一个 9 多片级联方式 7 3 5命令字格式与应用编程 7 58 7 4Pentium处理器的中断机理 7 4 1实地址方式下使用中断向量表7 4 2保护虚拟地址方式下使用中断描述符表7 4 3中断 异常向量分配7 4 4中断 异常的检测 响应 处理过程 7 59 7 4 1实地址方式下使用中断向量表 中断向量 中断处理程序的入口地址 每个占4个字节 实地址方式下 Pentium与8086CPU一样 都是在内存的最低1K字节建立一个可存放256个中断向量的中断向量表IVT来管理中断 中断向量地址 4 中断向量号 1 中断向量表 7 60 7 4 1实地址方式下使用中断向量表 用MOV指令或串操作指令 用DOS的25H号功能调用 编写好的中断服务程序的入口地址必须填入中断向量表的对应位置 CPU响应中断时才能执行 填写方法 2 中断向量的填写 7 61 例6 3 用DOS的25H号功能调用 程序段如下 PUSHDSMOVDX 12A4H 取中断向量的偏移地址送DXMOVAX 3500H 取中断向量的段基址送DSMOVDS AXMOVAH 25H 取DOS的功能调用号送AHMOVAL 4AH 取中断类型码送ALINT21H 调25H号功能调用填写中断向量POPDS 7 4 1实地址方式下使用中断向量表 若中断源的中断类型码为4AH 中断服务的程序入口地址为3500H 12A4H 试将入口地址填入中断向量表中 编写一段程序实现此过程 7 62 用串操作指令填写 程序段如下 PUSHESCLI 关中断MOVDI 4AH 4 取4AH号中断的中断向量地址CLDXORAX AXMOVES AX ES指向中断向量表段基址0000HMOVAX 12A4H 填写中断向量的偏移地址STOSWMOVAX 3500H 填写中断向量的段基址STOSWSTI 开中断POPES 7 4 1实地址方式下使用中断向量表 7 63 7 4 2保护虚拟地址方式下使用中断描述符表 1 中断描述符表保护方式下 80X86 Pentium采用中断描述符表IDT来管理各种中断 IDT在内存的存放位置是浮动的 其起始地址可通过写CPU内部的IDT寄存器来设置或修改 中断描述符地址 IDTR基址 8 向量号 7 64 中断描述符 称为中断门 陷阱门 由8字节组成 其格式为 IDT表中最多可登记256个中断门或陷阱门 故IDT表在内存中最多占8 256 2048 字节 即2KB 2 中断描述符 7 4 2保护虚拟地址方式下使用中断描述符表 7 65 动画演示 3 保护方式

温馨提示

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

评论

0/150

提交评论