中断系统及中断控制器.ppt_第1页
中断系统及中断控制器.ppt_第2页
中断系统及中断控制器.ppt_第3页
中断系统及中断控制器.ppt_第4页
中断系统及中断控制器.ppt_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

第十章中断系统及中断控制器 10 1中断的基本概念10 2可编程中断控制器8259A10 38259A应用举例 第一节中断的基本概念 1 中断的概念 1956年 美国 IBM公司IBM7049机上首先使用了中断处理技术 并开始使用 中断 interrupt 这一术语 中断最初是作为处理器与外部设备交换信息的一种控制方式提出的 由此 最初的中断全部是对外部设备而言的 称为外部中断或硬件中断 随着计算机技术的发展 中断的范围也随之扩大 出现了内部软件中断的概念 它是为解决机器内部运行时出现的异常以及为编程方便而提出的 不论哪种中断都遵循同样的中断处理过程 中断 处理器暂停执行当前程序 转而处理随机发生的事件 处理完毕后再返回到断点处继续执行原来程序的过程 2 中断类型号及中断向量表 所谓中断向量 实际上就是中断服务程序的入口地址 每个中断类型对应一个中断向量 中断类型号通过一个地址指针表与中断服务程序的入口地址相联 在实模式下 该表称为中断向量表 中断向量表包含256个中断向量 每个中断向量包含两个字 4个字节 高地址字为中断服务程序所在代码段的段基址 低地址字为代码段中中断服务程序第一条指令的偏移量 实模式下 中断向量表存放在内存最低端的1K单元之中 物理地址00000H 003FFH 中断类型码和中断向量所在位置之间的对应关系 类型255 类型32 类型0 类型4 类型3 类型2 类型1 0000 0000H 0000 0003H 0000 0010H 0000 0013H 0000 000CH 0000 000FH 0000 0008H 0000 000BH 0000 0004H 0000 0007H 供用户定义的中断 224个 专用中断 5个 保留中断 27个 0000 03FCH 0000 03FFH 中断类型号 4 该类型入口地址的地址 例题 类型号为20H的中断所对应的中断向量存放在0000 0080H开始的4个单元钟 如图示 则它所对应的中断服务程序的入口地址为4030 2010H 一个系统中对应中断类型号17H的中断服务程序存放在2345 7890H开始的内存区域中 则17H对应的中断向量存放于何处 17H 4 5CH 10 2可编程中断控制器8259A 8259A是一种可编程中断控制器 有如下功能 一片Intel8259A可管理8个中断请求 并把当前优先级最高的中断请求送到CPU的INTR端 当CPU响应中断时 为CPU提供中断类型码 8个外部中断的优先级排列方式 可以通过对8259A编程进行指定 也可以通过编程屏蔽某些中断请求 或者通过编程改变中断类型码 允许9片8259A级联 构成64级中断系统 VCCA0IR7IR6IR5IR4IR3IR2IR1IR0INTCAS2 8259A 2827262524232221201918171615 1234567891011121314 D7D6D5D4D3D2D1D0CAS0CAS1GND 10 2 18259A的引脚及工作原理 D7 D0 数据总线 双向 三态 用于与CPU之间传送命令 状态 中断类型码 RD 读信号 输入 用来通知8259A把某个内部寄存器的值送数据线D7 D0 WR 写信号 输入 用来通知8259A把数据线D7 D0上的值写入内部某个寄存器 CS 片选信号 输入 通过地址译码逻辑电路与地址总线相连 A0 地址线 输入 用来指出当前8259A的哪个端口被访问 选择内部寄存器的端口地址 在标准AT机中 使用两片8259A构成主从式中断系统 主8259A的端口地址 20H 21H从8259A的端口地址 A0H A1H INT 中断请求 输出 把IR7 IR0上的最高优先级请求传送到CPU的INTR引脚 向CPU发中断请求 INTA 中断响应 接收CPU的中断应答信号 CPU发出的中断响应信号为两个负脉冲 第一个负脉冲作为中断应答信号 第二个负脉冲到来时 8259A从数据线D7 D0上发出中断类型码 IR7 IR0 外设中断请求输入 在含有多片8259A的复杂系统中 主片的IR7 IR0分别与从片的INT端相连 用来接收来自从片的中断请求 CAS2 CAS0 级联线 用来指出具体的从片 SP EN 从设备编程 缓冲器允许1 采用缓冲方式时 作为输出 用做控制缓冲器接收和发送的信号 2 采用非缓冲方式时 作为输入 用做决定8259A的主从设备标志 为1时 指明8259A为主设备 为0时 指明8259A为从设备 10 2 28259A的内部结构 1 数据总线缓冲器 8位双向三态缓冲器 通常与数据总线的低8位相连 是8259A与CPU间数据传送的接口 CPU向8259A发送的数据 命令 控制字及8259A向CPU输入的数据 状态信息都要经过数据总线缓冲器 2 读写控制电路 接收CPU送来的读 写命令 片选信号以及端口选择信号A0 以实现CPU对8259A的读写操作 当CPU执行OUT指令时 信号有效并与A0配合 使8259A接收CPU由数据总线送来的初始化命令 ICW 和操作命令 OCW 当CPU执行IN指令时 信号有效并与A0配合 将8259A的内部状态经数据总线传送给CPU 信号对8259A的读写操作控制如下表所示 3 级联缓冲器 比较器 该模块主要用于多片8259A级联和数据缓冲方式 4 中断请求寄存器IRR 有锁存功能的8位寄存器 用来存放外部输入的中断请求信号IR7 IR0 每一位对应一个外部中断请求信号IRi 当某个IR端有中断请求 IRR中的相应位置 1 其内容可用操作命令字OCW3读出 当中断请求被响应时 IRR的相应位就复位 5 中断屏蔽寄存器IMR 8位寄存器 与8259A处理的8级中断源IR7 IR0相对应 当用软件将IMR中的某一位置 0 表示对应的中断IRi被允许 即允许IRR寄存器中相应位的中断请求进入中断优先级判别器 反之 将IMR的某一位IMR置 l 表示对应的中断IRi被屏蔽 因此 通过IMR寄存器可以对各个中断源进行屏蔽或开放 屏蔽功能由操作命令字OCW1实现 6 中断服务寄存器ISR 8位寄存器 与8级中断IR7 IR0相对应 用来记录正在处理中的中断请求的优先级 当任何一级中断被响应后 当时它的优先级最高 在第一个中断响应负脉冲到来时 ISR中的相应位置 l 7 优先级判别器PR 也叫优先级分析器对IRR寄存器送来的中断申请信号 只有IRR中置1且IMR中对应位置0的位才能进入PR 进行优先级判别 选出优先级最高的中断申请 当出现多重中断时 PR将新出现的中断请求和正在被服务的中断优先级进行比较 确定新的优先级是否高于正在处理的中断级 当1个中断请求被判定为具有最高的优先级时 PR通过控制电路向CPU发出中断请求信号INT 并在8259A获得第一个中断响应信号时使ISR寄存器中相应位置1 8 控制电路 该模块是8259A的内部控制器 控制8259A芯片的内部工作过程 实际上整个8259A芯片是在控制电路的控制下构成一个有机的整体并完成中断优先级管理功能 根据IRR存器中的置位情况和中断屏蔽寄存器IMR的设置情况 通过优先级判别器PR进行优先级判别 并根据判别结果向8259A内部各部件发出控制信号 并向CPU发出中断申请信号INT和接收CPU的中断响应信号 使中断服务寄存器ISR的相应位置 1 第一个时 使IRR寄存器中相应位清 0 第一个时 当第二个中断响应信号到来时 控制8259A向数据总线送出中断类型号 以便CPU形成中断服务程序的入口地址 如果中断结束方式为 自动结束 则在第二个负脉冲结束时使ISR寄存器中的相应位清 0 10 2 38259A的工作方式 1 设置优先级方式2 屏蔽中断源的方式3 结束中断处理的方式4 连接系统总线的方式5 引入中断请求的方式 10 2 38259A的工作方式 1 设置优先级方式 中断请求按优先级0 7进行处理 0级中断的优先级最高当一个中断被响应时 中断类型码被放到数据总线上 当前中断服务寄存器ISR中的对应位ISn被置1 然后进入中断服务程序 一般情况下 除了自动结束中断方式 在CPU发出中断结束命令 EOI 前 此对应位一直保持 1 如果又来了新的中断 中断优先级裁决器总是将新收到的中断请求和当前中断服务寄存器中的IS位进行比较 判断新收到的中断请求的优先级是否比当前正在处理的中断优先级高 如果是 则实行中断嵌套 8259A最常用的工作方式 如果对8259A进行初始化以后没有设置其他优先级方式 那么 8259A就按一般完全嵌套方式工作 1 一般完全嵌套方式 10 2 38259A的工作方式 1 设置优先级方式 该方式和全嵌套方式基本相同只有一点不同 同级能中断同级的中断请求特殊全嵌套方式一般用在8259A级连的系统中 2 特殊完全嵌套方式 10 2 38259A的工作方式 1 设置优先级方式 一般用在系统中多个中断源优先级相等的场合 在这种方式下 优先级队列是变化的 一个设备受到中断服务以后 它的优先级自动将为最低在优先级自动循环方式中 初始优先级队列规定为IR0 IR1 IR2 IR6 IR7 例 如果来IR4中断请求 则处理IR4 处理完IR4后 IR5位最高优先级 依次为IR6 IR7 IR0 IR1 IR2 IR3 IR4 系统中是否采用自动循环优先级 由8259A的操作命令字OCW2决定 3 优先级自动循环方式 10 2 38259A的工作方式 1 设置优先级方式 优先级特殊循环方式和优先级自动循环方式相比 只有一点不同 开始的最低优先级是由编程确定的 从而最高优先级也由此而定 比如 确定IR5为最低优先级 那么 IR6就是最高优先级 而在优先级自动循环方式中 一开始的最高优先级一定是IR0 4 优先级特殊循环方式 10 2 38259A的工作方式 2 屏蔽中断源的方式 普通屏蔽方式中 8259A的每个中断请求输入端都可以通过对应屏蔽位的设置被屏蔽 从而使这个中断请求不能从8259A送到CPU 屏蔽寄存器 它的每一位对应了一个中断请求输入 程序设计时 可以通过设置操作命令字OCW1使屏蔽寄存器中任一位或几位置1 当某一位为1时 对应的某一级中断就受到屏蔽 需要撤销对某些中断的屏蔽或需要撤销对所有中断的屏蔽 可以通过OCW1重新设置来实现 1 普通屏蔽方式 10 2 38259A的工作方式 2 屏蔽中断源的方式 设置了特殊屏蔽方式之后 再用OCW1对屏蔽寄存器中某一位进行设置时 就会同时使当前中断服务寄存器中的对应位自动清0 这样 就不只屏蔽了当前正在处理的这级中断 而且真正开放了其他级别较低的中断 在有些场合 希望一个中断服务程序能动态的改变系统的优先级结构 例如 在执行中断处理程序某一部分时 希望禁止较低级的中断请求 但是 在执行中断处理程序另一部分时 又能够开放本身的优先级较低的中断请求 2 特殊屏蔽方式 10 2 38259A的工作方式 2 屏蔽中断源的方式 特殊屏蔽方式总是在中断处理程序中使用的 使用了这种方式后 尽管系统当前仍然在处理一个较高级的中断 但是 从外界看来 由于8259A的屏蔽寄存器中 对应与此中断的数位被设置为1 并且当前中断服务器中的对应位被清0 所以 好像不在处理任何中断 从而 这时即使有最低级的中断请求 也会得到响应 2 特殊屏蔽方式 10 2 38259A的工作方式 3 结束中断处理的方式 中断处理的结束 一个中断请求得到响应时 8259A都会在当前中断服务寄存器中设置相应位ISn 这样 为此后中断裁决器的工作提供了依据 当中断处理程序结束时 必须使ISn位清0 否则 8259A的中断控制功能就会不正常 这个使ISn位清0的动作就是中断结束处理 10 2 38259A的工作方式 3 结束中断处理的方式 1 中断自动结束方式 系统一进入中断过程 8259A就自动将当前中断服务寄存器中的对应位ISn清除用在系统中只有一片8259A 并且多个中断不会嵌套的情况设置方法 对8259A初始化时 使初始化命令字ICW4的AEOI位为1就行了 10 2 38259A的工作方式 3 结束中断处理的方式 2 一般的中断结束方式 CPU用输出指令往8259A发出一般中断结束命令时 8259A就会把当前中断服务寄存器中的最高的IS位复位 相当于结束了当前正在处理的中断 用在完全嵌套情况下中断结束命令 写OCW2的EOI 1 SL 0 R 0即可 10 2 38259A的工作方式 3 结束中断处理的方式 3 特殊的中断结束方式 在非完全嵌套方式下 因为中断优先级不确定 用当前中断服务寄存器时无法确定哪一级中断位最后响应和处理的 也就是说 无法确定当前正在处理的是哪级中断 这时 就要采用特殊的中断结束方式 在程序中发一条特殊中断结束命令 命令指出了要清除当前中断服务寄存器中的哪个ISn位 特殊中断结束命令 往8259A偶地址端口输出操作命令字OCW2来实现 10 2 38259A的工作方式 4 连接系统总线的方式 1 缓冲方式 在多片8259A级联的大系统中 8259A通过总线驱动器和数据总线相连 这就是缓冲方式 2 非缓冲方式 将8259A直接与数据总线相连 用在只有单片或是片数不多的情况下 两种方式通过8259A的初始化命令字ICW4设置 10 2 38259A的工作方式 5 引入中断请求的方式 1 边沿触发方式 中断请求输入端出现的上升沿作为中断请求信号 2 电平触发方式 中断请求输入端出现的高电平作为中断请求信号 通过初始化命令字ICW1设置 10 2 38259A的工作方式 5 引入中断请求的方式 3 中断查询方式 设备仍然通过往8259A发中断请求信号要求CPU服务 但8259A不是用INT信号向CPU发中断请求信号CPU关中断 即中断允许触发器复位CPU使用软件查询来确认中断源 实现对设备的中断服务 10 2 48259A的初始化命令字和操作命令字 8259A的工作状态和操作方式 由CPU的命令而定 命令有两种每片8259A有2个片内地址A0 0和A0 1 所有的命令都是通过这两个端口来实现的 1 8259A的初始化命令字 ICW1 ICW4在初始化程序中设定 且在整个工作过程中保持不变 ICW1 ICW4必须按顺序设定 ICW1写入8259A偶地址中 A0 0 在AT机中为20H A0H ICW2 ICW4写入8259A奇地址中 A0 1 在AT机中为21H A1H 1 ICW1设置工作方式 对A0 0的端口写入一个D4 1的数据 表示初始化编程开始 D7 D5 8086 8088系统中不用 一般设为0D4 总是设置为1 表示现在设置的是初始化命令字ICW1D3 LTIM中断信号的触发方式0 边沿1 高电平D2 未用D1 SGNL是否单片方式0 多片级联1 单片D0 IC4是否有ICW40 无1 有 在8086 8088系统中 ICW4是必须使用的 2 ICW2设置中断类型码 用来设置中断类型码 一旦设定 则IR0 IR7的中断类型号都确定在写ICW1之后 对A0 1的端口第一次写入的数据是ICW2 D7 D3可设置 D2 D0由引脚IRi确定 在8086 8088系统中 设置D7 D3为00001 D2 D0 由8259A根据IR0 IR7自动填充为000 111 在PC XT中ICW2为00001000B 则中断号 类型号中断号 类型号IR0 08H时钟中断IR4 0CHCOM1IR1 09H键盘中断IR5 0DH硬盘IR2 0AH保留IR6 0EH软盘IR3 0BHCOM2IR7 0FHLPT1 3 ICW3设置级联 系统中有级联 ICW1 SNGL 0 在ICW2之后写ICW3 对于主片 置1的位表示对应的引脚IR有从片级联 对于从片 用D2 D0表示和主片的对应引脚级联 4 ICW4方式控制初始化 ICW1 IC4 1时 有ICW4 D7 D5 总是为0 用来作为ICW4的标识码 D4 SFNM中断的嵌套方式0 一般嵌套1 特殊的全嵌套在一般嵌套方式下 优先级IR0 IR7从高到低 D3 BUF 如为1 则为缓冲方式 D2 M S 缓冲方式下表示本片为主片还是从片 即BUF 1时 1主片 0从片 D1 AEOI自动结束中断方式0 不自动清除ISR1 CPU响应中断后 自动清除D0 PM微处理器类型1 8086 80880 8080 8085 Z80 初始化编程一般在系统启动时进行 初始化以后系统才可以接收中断请求信号 5 8259A芯片的初始化流程 例 某机中8259A的端口地址是20H 21H 初始化序列如下 MOVAL 13H 设置ICW1OUT20H ALMOVAL 8 设置ICW2为8HOUT21H ALMOVAL 1 ICW4设置为1HOUT21H AL ICW1 单片 上升沿触发 使用ICW4 ICW2 中断类型码是08H 0FH ICW4 非AEOI方式 2 8259A的操作命令字OCW 系统初始化完成以后 可以在应用程序中进行操作命令字编程 OCW1设置和清除中断屏蔽寄存器MX 1表示屏蔽中断源IRX 例如 读OCW1 IMR中断屏蔽字 INAL 21H 则AL内容为IMRANDAL 0FDH 将键盘IR1对应的中断屏蔽 字D1位清0 即开放键盘中断OUT21H AL INAL 21H 屏蔽键盘中断ORAL 2OUT21H AL OCW2设置优先级循环方式和中断结束方式对A0 0端口写入D4D3 00的数据 表示是OCW2R 表示是否循环 1 优先级循环SL 表示L2 L0是否有效 L2 L1 L0 具体要清除当前中断服务寄存器中的哪一位 指出循环开始时哪个中断的优先级最低 EOI 中断结束命令位 为1 使当前中断服务器中的IS复位 EOI命令就是通过OCW2中的第5位即EOI位设置的 当EOI 1时 OCW2用来作为中断结束命令 同时使系统按照某一种方式继续工作 当EOI 0时 OCW2一般用来作为指定优先级循环方式的命令字 EX MOVAL 20HOUT20H AL 发中断结束命令 OCW3的功能有三个方面 1 设置和撤销特殊屏蔽方式 2 设置中断查询方式 3 设置对8259A内部寄存器的读出 对A0 0端口写入D4D3 01的数据 表示是OCW3 ESMM称为特殊的屏蔽模式允许位 SMM为特殊屏蔽模式位当OCW3中的ESMM SMM 1时 只要CPU内部的IF为1 系统就可以响应任何非屏蔽中断请求 这时 好像优先级规则完全不起作用一样 而当再发送一个使ESMM 1 SMM 0的OCW3之后 系统又恢复原来的优先级方式 P位称为查询方式位 当P 1时 使8259A设置为中断查询方式当P 0时 若RR位为1 构成对8259A内部寄存器的读出命令 来读取寄存器IRR和ISR的内容 例如 设置OCW3为00001011则对下一条输入指令读的是ISR的内容 MOVAL 0BHOUT20H ALINAL 20H 读取方法 先用输出指令往8259A的偶地址端口发读出命令 接着用输入指令从8259A的偶地址端口读取寄存器IRR或ISR的内容 如果RR 1 RIS 0 那么 就构成了对IRR寄存器的读出命令 所以 下一条输入指令读得的是IRR寄存器的值 如果RR 1 RIS 1 那么 就构成了对ISR寄存器的读出命令 所以 下一条输入指令读得的是ISR寄存器的值 第三节8259A应用举例 PC AT中 8259A的使用情况为 2片8259A级联 提供15级向量中断 从片的INT接主片的IR2 端口地址 主片20H 21H 从片A0H A1H 主片和从片均采用边沿触发 采用全嵌套优先级排列方式采用非缓冲方式 主片SP EN接 5V 从片SP EN接地 主片的类型码为08H 0FH 从片的类型码为70H 77H PC AT中 8259A连线图 ICW1AEQU20H 主片端口地址ICW2AEQUICW1A 1ICW3AEQUICW2AICW4AEQUICW2AICW1BEQU0A0H 从片端口地址ICW2BEQUICW1B 1ICW3BEQUICW2BICW4BEQUICW2B PC AT机主 从8259A的初始化程序 主片8259A MOVAL 11H ICW1 边沿触发 多片 ICW4OUTICW1A ALNOP I O端口延时MOVAL 08H ICW2 中断类型码OUTICW2A ALNOPMOVAL 04H ICW3 IR2接从片OUTICW3A ALNOPMOVAL 01H ICW4 非缓冲 全嵌套 非自 动结束OUTICW4A ALNOP 从片8259A MOVAL 11H ICW1 边沿触发 多片 需ICW4OUTICW1B ALNOPMOVAL 70H ICW2 中断类型码OUTICW2B ALNOPMOVAL 02H ICW3 INT接主片的IR2OUTICW3B ALNOPMOVAL 01H ICW4 非缓冲 全嵌套 非自动结束OUTICW4B ALNOP 中断向量表的操作 读写中断向量表不能使用MOV指令 而应调用相应的DOS功能取中断向量预置AH 35H AL 中断类型号执行INT21H 把类型号为AL的中断向量取出到ES BX中设置中断向量预置AH 25H AL 中断类型号 DS DX 中断向量执行INT21H 把DS DX指向的中断向量放置到中断向量表中类型号为AL的中断向量处 MOVAL 9 把中断9

温馨提示

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

评论

0/150

提交评论