微机原理与接口技术——中断系统ppt课件_第1页
微机原理与接口技术——中断系统ppt课件_第2页
微机原理与接口技术——中断系统ppt课件_第3页
微机原理与接口技术——中断系统ppt课件_第4页
微机原理与接口技术——中断系统ppt课件_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

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

文档简介

第七章中断系统 2 掌握 中断的基本概念中断响应的一般过程中断向量表及其初始化8088 8086中断系统可编程中断控制器8259A中断调用 3 一 中断的基本概念 中断 CPU执行程序时 由于发生了某种随机的事件 外部或内部 引起CPU暂时中断正在运行的程序 转去执行一段特殊的服务程序 称为中断服务程序或中断处理程序 以处理该事件 该事件处理完后又返回被中断的程序继续执行 这一过程称为中断 4 中断源 引起CPU中断的事件 发出中断请求的来源 内部中断 外部中断 异常中断 软件中断 可屏蔽中断 非屏蔽中断 异常事件引起 中断指令引起 INTR中断 NMI中断 5 引入中断的原因 提高数据传输率 避免了CPU不断检测外设状态的过程 提高了CPU的利用率 实现对特殊事件的实时响应 6 中断系统 正确识别中断请求 实现中断响应 中断处理及中断返回 实现中断优先级排队 实现中断嵌套 中断系统是指实现中断功能的软硬件的统称 功能有 7 中断系统的功能 实现中断及返回中断源发出中断请求 CPU决定是否响应 若响应 则保护断点和现场 转入相应中断服务程序 中断服务结束后 恢复现场和断点 继续执行原程序 8 非预料事件是指事件发生的时间无法预知 即中断源何时产生中断不确定 是随机的 中断源产生中断的随机性 使中断服务程序的执行也具有随机性 即何时执行中断服务程序不是在程序中安排好的 中断系统的功能 续 9 实现优先权排队按各中断请求的重要程度排列CPU响应的次序称为中断优先级 即同时有多个中断请求到来时 CPU会首先响应和处理优先级别最高的中断请求 中断优先级的实现可以用软件或硬件的办法 中断系统的功能 续 10 实现中断嵌套 当CPU在处理某一级中断时 若有高一级的中断请求 中断系统应能安排CUP暂时停止现行的中断处理 响应高一级的中断 中断系统的功能 续 11 二 外部中断响应的一般过程 中断请求中断源识别及中断判优中断响应中断处理 服务 中断返回 12 中断请求 中断请求信号应保持到中断被处理为止 CPU响应中断后 中断请求信号应及时撤销 NMI 非屏蔽中断 INTR 可屏蔽中断 13 中断源识别 软件查询法中断矢量法由中断源提供中断类型号 CPU根据类型确定中断源 中断源识别及判优由硬件系统完成 14 中断判优 当有多个中断源同时提出请求时 需要确定首先响应哪一个中断源 优先级法则低优先级的中断程序允许被高优先级的中断源所中断排队法则先来先响应 中断嵌套 15 中断判优 软件判优顺序查询中断请求 先查询的先服务即先查询的优先级别高硬件判优链式判优 并行判优 中断向量法 16 中断响应 向中断源发出INTA中断响应信号 关中断保护硬件现场将FLAGS压入堆栈保护断点将CS IP压入堆栈获得中断服务程序入口地址 由硬件系统完成 17 中断处理 保护现场执行中断服务程序恢复现场中断服务程序的特点 为 远过程 用IRET指令返回 18 中断服务子程序完成的工作 关中断 保护现场 保护断点 找入口地址保护软件现场 参数 开中断 STI 中断处理关中断 CLI 恢复现场中断返回 19 中断返回 执行IRET指令 使IP CS和FLAGS从堆栈弹出如要实现中断嵌套 则在保护现场后 要执行开中断指令 恢复断点和硬件现场 20 中断处理过程流程 21 当前CPU正在进行某一优先权级别的中断源的处理 有更高级别的中断源发出请求 且新中断源满足响应条件 CPU中止当前的中断服务程序 保护断点和现场 转而响应高级中断这种多级中断的处理方式即为 嵌套 某些中断系统对中断嵌套的层数有一定限制 中断嵌套 22 高级中断源能中断低级的中断处理当CPU正在处理某个中断时 如果外部又有一个优先级别比本优先级别更高的中断请求 则可以实现中断嵌套 中断嵌套 23 中断嵌套示意图 24 中断服务程序 用户自行编制 保护现场 保存CPU内部各寄存器的内容 以便在服务程序中使用 开总中断 将IF置1 使CPU在中断服务期间仍能响应更高级的INTR请求 具体处理 用户的中断服务 关总中断 将IF位清0 恢复现场 将入栈保护的各寄存器内容依次弹出 中断返回 执行IRET指令 CPU将自动弹出给IP CS FLAGS 就可以接着执行被中断的原程序 开总中断 再次将IF位置1 使返回后能够重新响应 25 7 28086中断系统 内部中断外部中断 异常中断软件中断 非屏蔽中断可屏蔽中断 256个中断源 除法错中断溢出中断单步中断 26 根据8086内部的中断逻辑电路 各种中断源的优先权顺序为 被0除中断 软件中断 INTO NMI INTR 单步中断 CPU内的中断逻辑 8086中断系统 27 中断类型码 中断向量表和中断向量 中断类型码 8086可以处理256个中断请求 每个中断请求均对应于惟一固定的类型码 被0除类型码是0 单步为1 NMI为2 断点中断为3 溢出中断为4 等 中断向量 即中断服务程序的入口地址 包括段地址 高字单元 和偏移地址 低字单元 中断向量表 存放中断向量的表 位于内存空间的最低地址单元 长1KB 共可容纳256个中断向量 256 4 1024 28 中断类型码 一 中断类型码 8086可以处理256个中断请求 每个中断请求均对应于唯一固定的类型码 被0除类型码是0 单步为1 NMI为2 断点中断为3 溢出中断为4 等 29 IBMPC XT中断源的功能 INTR BIOS可调用 DOS可调用 30 1 非屏蔽中断 NMI 不受中断标志位的控制 中断类型号为2 所以中断向量放在0000 0008开始的4个单元中 NMI中断一般用于紧急情况的处理 不受中断标志位IF影响 2 可屏蔽中断 INTR 受中断标志位的控制 IF 1 CPU才能响应INTR中断 CPU响应INTR中断时 往INTA引脚上发两个负脉冲 外设接到第二个负脉冲后 立即往数据总线上送出中断类型码 供CPU读取 1 外部中断 硬件中断 31 非屏蔽中断NMI IBMPC XT的NMI来源于三方面 存储器奇偶校验错误PCKI O通道奇偶校验错误IOCHCK协处理器产生异常N P NPI三种信号通过NMI屏蔽触发器 向CPU的NMI引脚送出 系统上电之初 RESET信号先将NMI屏蔽触发器清0 等系统自检完成之后 再写入控制字解除对NMI的屏蔽 32 外部中断源的管理 多个外部硬件中断源共用一条INTR线时 要在程序中采取一定措施或用外部硬件解决中断源的优先权排列和多级中断的嵌套等 中断优先权 优先级 中断优先权就是为每个中断源所确定的响应级别 软件排序 CPU响应中断后 在程序中用查询的方法判定外设的中断请求 33 外部中断源的管理 软件查询排序的特点是 查询次序即优先权排序 最先被询问的故障具有最高优先级 节省硬件 修改方便 只要改变程序中的查询次序即可 由询问转至真正的服务程序入口时间长 在中断源较多的情况下执行速度较慢 硬件排序 采用优先权的编码电路 对各种外部硬中断进行排队 还有菊花链式硬件排序电路 以及中断控制集成芯片8259A 34 2 内部中断 软件中断 内部中断指由指令的执行或软件对标志寄存器中某个标志的设置产生的中断 专用中断指令中断 35 内部中断的种类 1 除法出错中断类型号为00H 除法出错中断既不是外部硬件产生 也不是用软件指令产生 而是CPU自身产生的 因此0型中断没有对应的中断指令 即指令系统中没有INT0这条指令 36 对单步中断要注意三点 一 所有类型的中断在其处理过程中 CPU会自动地把标志寄存器FLAGS压入堆栈 然后清除TF和IF 因此当CPU进入单步中断处理程序时 就不再处于单步工作方式 而以正常方式工作 只有在单步处理结束时 从堆栈中弹出原来的标志 才能使CPU又回到单步方式 IF 1 TF 1 二 通常程序编制好后 在DEBUG调试程序时可使用单步中断检查程序 是通过跟踪命令TF来实现单步运行 2 单步中断 陷阱中断 类型号为01H 37 三 8086 8088指令系统中没有设置或清除TF标志的指令 但指令系统中的PUSHF和POPF为程序员提供了置位或复位TF的手段 置位和复位TF的程序段如下所示 2 单步中断 陷阱中断 类型号为01H 内部中断的种类 38 置位TF标志 D8 1 PUSHFPOPAXORAX 0100HPUSHAXPOPF 复位TF标志PUSHFPOPAXANDAX 0FEFFHPUSHAXPOPF 2 单步中断 陷阱中断 类型号为01H 内部中断的种类 39 3 断点中断类型号为03H 设置断点实际上是把一条断点指令INT3插入程序中 CPU每执行到断点处的INT3指令便产生一个中断 4 溢出中断类型号为04H 在执行溢出中断指令INTO时 若标志寄存器FLAGS中的溢出标志OF 1 则产生一个类型号为4的内部中断 称为溢出中断 内部中断的种类 40 对带符号数来说 溢出就意味着出错 加 减运算 一旦产生应立即发现 而CPU并不知道当前处理的数据是无符号数还是带符号数 只有程序员才明确这一点 因此通常在带符号数的加 减法运算后面总是跟着INTO指令 4 溢出中断类型号为04H 41 如下面的指令用来测试加法的溢出 ADDAX VALUINTO 当标志寄存器的OF 0时 则INTO指令不产生中断 CPU继续运行原程序 当OF 1时 进入溢出中断处理程序 打印出一个出错信息 在处理程序结束时 不返回原程序继续运行 而是把控制交给操作系统 4 溢出中断类型号为04H 42 5 指令中断 在8086 8088的指令系统中 当CPU执行中断指令INTn时 也能形成内部中断 其中n在理论上可取值0 255 当n 0 1 3 4时 就是上述的四种内部中断 内部中断的种类 43 内部中断的特点 1 除单步中断以外 所有内部中断都不能被屏蔽 2 所有内部中断不从外部接口中读取中断类型号也不发送中断响应信号 即不执行中断响应的总线周期 3 指令中断没有随机性 外中断是随机性的 指令中断是由程序中指令引起的 指令位置事先已知 外中断是随机性的 由I O设备引起 何时引起事先未知 44 4 除单步中断外 所有内部中断的优先权都比外部中断的优先权高 内部中断的特点 8086中断的优先级别 内部中断 单步中断除外 非屏蔽中断 可屏蔽中断 单步中断 45 IBMPC XT中断源的功能 INTR BIOS可调用 DOS可调用 46 中断向量和中断向量表 一 中断向量 中断服务程序的入口地址 包括段地址 CS 存放于高4字节单元 和偏移地址 IP 存放于低4字节单元 二 中断向量表 存放中断向量的表格 位于内存空间的最低地址 长度1KB 可容纳256类中断向量 256 4 1024 中断号与中断服务程序入口地址的连接表 47 中断向量和中断向量表 48 中断向量表的初始化 将用户自定义的中断服务程序入口地址放入向量表注意点 向量表所在的段地址 0存放子程序入口的单元的偏移地址 n 4 49 中断向量的设置方法 用三种方法来为中断类型N设置中断向量 1 直接装入法MOVAX 00HMOVDS AXMOVBX N 4 中断号 BXMOVAX OFFSETNEWINT 中断服务程序偏移地址MOVWORDPTR BX AX 装入偏移地址MOVAX SEGNEWINT 段基址MOVWORDPTR BX 2 AX 装入段基址 NEWINTPROC IRETNEWINTENDP 50 中断向量的设置方法 2 使用串送存指令装入法CLI 关中断MOVAX 0MOVES AX ES 0MOVDI N 4 中断向量指针MOVAX OFFSETNEWINT 偏移地址CLD DF 0 增地址STOSW 存串指令AX DI DI 1 再DI 2MOVAX SEGNEWINT 段基址STOSW 存串指令AX DI 2 DI 3 STI 开中断 51 中断向量的设置方法 3 使用DOS功能调用设置中断向量设置中断向量是把由AL指定的中断类型N的中断向量DS DX放置在中断向量表中 预置 AH 25H功能号 AL N中断类型号DS DX 中断向量执行 INT21H 例如 MOVAX SEGNEWINTMOVDS AXMOVDX OFFSETNEWINTMOVAL NMOVAH 25HINT21H 52 中断向量的设置方法 例 利用INT21H设置中断向量MOVAH 25H DOS功能调用号25H AHMOVAL 40H 将设置的中断类型码 ALMOVDS SEGUSERINTMOVDX OFFSETUSERINT 入口参数 中断服务程序的入口地址 DS DXINT21H执行之后 中断服务程序的入口地址值将放入中断向量表中n 4处连续的4个单元中 53 7 2 4中断响应与处理 一 内部中断响应过程1 当内部中断发生时 或由INTn指令获得中断类型码 或是按预定方式得到中断类型码 专用中断 0 1 3 4 2 将类型码 4 作为中断向量表的指针 3 FR PSW 入栈保护 54 4 清除IF和TF标志 0 IF 0 TF 屏蔽新的INTR中断和单步中断 5 把断点处的IP和CS值压入堆栈 先压入CS值 再压入IP值 6 取中断向量 中断服务程序的入口地址 分别送至CS和IP 按新的地址执行中断服务子程序 内部中断响应过程 55 内部中断的特点 1 进入中断时 不需要执行中断响应周期去获得中断类型码 2 除单步中断外 内部中断无法用软件禁止 不受IF的影响 3 内部中断没有随机性 由指令在程序中的位置决定 4 除单步中断外 内部中断优先级高于硬件中断 内部中断响应过程 56 外部中断响应过程 1 非屏蔽中断NMI的响应中断类型码为2 当NMI发生时 CPU在执行完当前指令后 转去中断类型码为2的中断服务子程序 响应过程 除中断类型码获得方式外 同INTn CPU提供 不是外设提供 57 可屏蔽中断INTR CPU将执行持续两个总线周期的中断响应周期 第一个总线周期INTA 有效 向外设送出的中断应答信号 第二个总线周期INTA 再次有效 表示外设应送出中断类型码 CPU将在T4周期前沿读取中断类型码 外部中断响应过程 58 在INTR线上的请求信号 高电平 必须保持到当前指令的结束 当INTR线有效且IF 1 则CPU在当前指令执行完毕后 响应外部中断请求 转入中断响应周期 中断响应周期有2个 每个响应周期由4个T组成 中间以空闲状态 3个 隔开 2 可屏蔽中断INTR的响应 59 在每个中断响应周期 CPU都往引脚INTA 发一个负脉冲信号请求中断的外设在收到第2个INTA 时 将中断类型码 DB 通常由8259传送 获得中断类型码后 则转入中断处理过程 同内部中断 INTR共执行7个总线周期 60 中断响应周期时序 CPU从引脚INTA发中断响应信号 接口芯片接收此信号 把中断类型号准备好 同时ISRi 1 IRRi 0 CPU再从引脚INTA发中断响应信号 接口芯片接此信号后 将中断类型号送至数据总线上 CPU从数据总线获取中断类型号 61 62 中断类型码的获取NMI 断点中断 溢出中断 被0除 单步中断等类型码固定 INTN软中断类型码由立即数N给出 外部中断读取中断类型码 中断响应过程 63 已知中断类型码后 如何进入中断服务程序 1 将中断类型码乘以4 得到中断向量表的向量首址指针 2 将断点 当前CS IP的值 入栈保护 3 取中断向量 把向量表指针所指的4个连续字节的内容作为中断服务程序的入口地址 分别送给IP和CS 4 按新的CS IP指针执行中断服务程序 中断响应过程 64 FLAG 0150 1000 中断响应过程 65 四 中断过程举例设某输入设备数据准备就绪后向CPU申请可屏蔽中断 中断类型码为80H 中断响应后执行的服务子程序名为INTPROC 程序开始 首先应对中断向量表进行安排 即先进行中断初始化 程序如下 CLIPUSHDSMOVAX 0000H 中断向量指针的段基址MOVDS AXMOVBX 0200H 中断向量指针的偏移量MOVAX OFFSETINTPROCMOV BX AX 偏移量 中断向量表MOVAX SEGINTPROCMOV BX 2 AX 段基址 中断向量表POPDSSTI 66 CLIPUSHDSMOVAX 0000H 中断向量指针的段基址MOVDS AXMOVBX 0200H 中断向量指针的偏移量MOVAX OFFSETINTPROCMOV BX AX 偏移量 中断向量表MOVAX SEGINTPROCMOV BX 2 AX 段基址 中断向量表POPDSSTI MOVAX 2000HADDAX AXMOV SI AX 67 1 INTR有效 外设申请中断 68 START MOVAX DATAMOVDS AXCLI 关中断 设置中断向量SUBAX AXMOVES AX 中断向量表的段基址为0000HMOVDI 4 60H 在中断向量表中的偏移量MOVAX OFFSETINTSVCLDSTOSW 写中断向量的偏移量MOVAX SEGINTSVSTOSW 写中断向量的段基址STI INT60H 软中断指令 MOVAH 4CH 返回DOSINT21H 定义一个软中断 中断类型号为60H 在中断服务程序中完成ASCII码加偶校验位 第7位 的工作 ASCII码首地址为ASCBUF 字节数为COUNT 加偶校验位后仍放回原处 69 INTSVPROC 中断服务程序PUSHAX 保护现场PUSHBXPUSHCXMOVCX COUNTMOVBX OFFSETASCBUFL2 MOVAL BX ANDAL AL 建立标志PF PF 1 有偶数个1JPL1ORAL 80HMOV BX AL 加入偶校验后写回L1 INCBXLOOPL2POPCX 恢复现场POPBXPOPAXIRET 70 利用DOS功能调用设置中断向量表设置中断向量 把由AL指定中断类型码的中断向量DS DX置在中断向量表中 预置AH 25H AL 中断类型码DS DX 中断向量执行INT21H 读取中断向量 把由AL指定中断类型码的中断向量从中断向量表中取到ES BX中 预置AH 35H AL 中断类型码执行INT21H返回时送 ES BX 中断向量 71 7 3可编程中断控制器8259A 专用于系统内可屏蔽硬件中断的控制 管理系统的外部中断请求 主要功能特点 1 每片8级优先级管理 级联后可达64级2 自动产生中断向量3 每路中断可分别屏蔽4 功能灵活 优先权等多种工作方式可编程 72 7 3 18259A的结构和功能 73 8259A的内部结构 IRR 中断请求寄存器 8位 保存8个 IR0 IR7 外部中断请求信号Di 1 表示IRi引脚有中断请求Di 0 表示IRi引脚无中断请求 74 I R 中断屏蔽寄存器 8位 保存对中断请求信号IRi的屏蔽状态 Di 1 则IRi引入的中断被屏蔽 关闭 Di 0 则IRi引入的中断被开放 8259A的内部结构 续 75 当IR7 IR0端有多个中断请求同时发生时 由PR判定其最高优先权 在INTA脉冲期间将它置入中断服务寄存器ISR的相应位 PR 优先权判别器 8位 8259A的内部结构 续 76 ISR 中断服务寄存器 8位 保存正在被8259A服务着的中断状态 Di 1 表示IRi中断正在服务中 Di 0 表示没有被服务 8259A的内部结构 续 77 8位双向三态缓冲器 构成8259A与系统数据线的接口 对8259A编程写入的命令字和读出8259A状态信息都是通过它传送 数据总线缓冲器 8259A的内部结构 续 78 读写控制逻辑 接收读 写控制信号RD WR 片选信号CS和端口选择信号A0 一片8259A在系统中占用2个口地址 用地址线A0来选择端口 用高位地址线通过译码产生8259A的片选信号 8259A的内部结构 续 79 包括命令字 ICW1 ICW4 寄存器 操作字 OCW1 OCW3 寄存器和相关的控制逻辑 通过INT端向CPU发中断请求信号 从INTA端接收CPU的中断响应信号 控制8259A进入中断状态 控制电路 级连缓冲 比较器 一片8259A只能接收8级中断 当超过8级时 可用多片8259A级连使用 构成主从结构 可扩充到64级 8259A的内部结构 续 80 中断级连方式的连接 一个系统中 8259A可以级连 有一个主8259A 若干个 最多8个 从8259A级连时 主8259A的三条级连线CAS0 CAS2作为输出线 连至每个从8259A的CAS0 CAS2每个从8259A的中断请求信号INT 连至主8259A的一个中断请求输入端IR主8259A的INT线连至CPU的中断请求输入端SP EN在非缓冲方式下 规定该8259A是主片 SP 1 还是从片 SP 0 动画 图示 81 8259级连电路 82 8259A的引脚功能 D7 D0 双向数据总线 传送控制 状态信息和中断类型号 WR 写信号 输入 低电平有效 当有效时 8259A接收CPU送来的命令字 RD 读信号 输入 低电平有效 当有效时 8259A将状态信息放入数据总线供CPU检测 83 A0 内部地址信号 输入 8259A只占两个地址 A0与CS 一同构成8259A的端口奇 偶地址选择 CS 片选信号 输入 低电平有效 有效时 CPU可对该8259A进行读写 8259A的引脚功能 续 84 与处理器接口引脚的逻辑功能 85 IR7 IR0 外部中断请求信号 输入 INT 中断请求信号 输出 当IR7 IR0任一引脚有中断请求时 8259A从INT向CPU发出中断请求信号 INTA 中断响应信号 输入 当CPU接收到中断请求信号 在允许中断条件下 CPU响应中断 并发出中断响应信号到INTA端 8259A的引脚功能 续 86 CAS2 CAS0 级连信号 双向引脚 用于控制多片8259A的级连使用 主片 CAS2 CAS0引脚输出从片 CAS2 CAS0引脚输入SP EN 双功能引脚 当缓冲方式时 该引脚输出 它用于总线收发器的使能信号 当非缓冲方式时 该引脚输入 SP 1表示该片是主片 SP 0表示该片是从片 8259A的引脚功能 续 87 8259A的工作过程 动画 2 当外设发出中断请求后 其对外部中断请求的处理过程如下 若有IRi 1 则IRR中相应位置1 若对应IMR中的相应位为0 且经优先权判别器PR后 则8259A向CPU INTR 若IF 1 则CPU在执行完当前指令后 发INTA 8259A ISR中对应当前最高优先权的位为1 且IRR中相应位清0 8259A的工作过程 1 上电后 由CPU执行一段程序对8259初始化 通过输入初始化命令字实现 完成初始化后 8259A处于就绪状态 89 CPU进入响应中断的过程 继而执行中断子程序 CPU发第二个INTA 8259A 8259A DB上送8位的向量号N 即中断类型号 初始化8259A时已设定好 CPU做 N 4 从中断向量表中取出中断服务程序的入口地址 若8259A为AEOI 自动结束中断 则在第二个INTA尾 ISR中相应的位复位 否则 至中断服务程序结束 发出EOI命令使ISR中相应位复位 91 中断触发方式电平触发方式当IR7 IR0出现高电平时 表示有中断请求 这个高电平应持续到8259A收到第一个中断响应脉冲之前 边沿触发方式当IR7 IR0出现由低电平到高电平的跃变 表示有中断请求 8259A中断管理 工作 方式 92 中断屏蔽方式 普通屏蔽方式将IMR中某一位或几位置 1 即可将相应位的中断请求屏蔽 例如 将11110000写入IMR 即可屏蔽IR7 IR4的中断 开放IR3 IR0的中断 特殊屏蔽方式通常情况下 当一个中断被响应时 禁止同级或较低级别的中断请求 在特殊屏蔽方式下 当一个中断被响应时 仅屏蔽同级别的再次中断 较低或较高级别的中断请求可被允许进入 8259A中断管理 工作 方式 续 93 中断优先级别管理方式 完全嵌套方式 固定优先级方式 IR7 IR0的优先级固定 IR0为最高级 IR1次之 IR7为最低级 CPU响应某一级中断时 8259A将ISR中与该中断源对应的那一位置 1 并自动禁止同级和较低级的中断请求 但高优先级中断可中断当前的服务 实现中断嵌套 8259A中断管理 工作 方式 续 94 特殊全嵌套方式 当CPU正处理某级中断请求时 只禁止较低级别的中断请求 而允许同级或较高级的中断请求进入 特殊全嵌套方式用于多片级连系统 当主片处于该方式 可响应来自同一从片的其它中断请求 8259A中断管理 工作 方式 续 95 自动循环方式 IR7 IR0中断源轮流为最高优先级 当任一级中断服务结束后 该中断源自动降为最低级 而它的下一级的中断源自动升为最高级 例如 现正为IR3引入的中断服务 若中断服务程序完毕 IR3被赋予最低优先级 IR4被赋予最高优先级 各级中断源的优先级从高到低依次为 IR4 IR5 IR6 IR7 IR0 IR1 IR2 IR3 8259A中断管理 工作 方式 续 96 特殊循环方式 用户可置优先权命令指定最低优先级 例如 设置IRi为最低优先级 则最高优先级赋予IRi 1 其它各级按循环方式类推 8259A中断管理 工作 方式 续 97 中断结束方式 把ISR寄存器的中断服务标志ISRi位清0 意味着结束IRi引入的中断服务 如何将ISRi位清0 8259A提供了6种中断结束方式 自动EOI AutomaticEndofInterrupt 方式8259A在收到第2个中断响应脉冲信号之后 自动把ISR中置1的最高优先级服务标志ISRi位清0 不需要在中断服务程序中向8259A送中断结束 EOI 命令字 8259A中断管理 工作 方式 续 98 普通EOI EndofInterrupt 方式 执行IRET之前 向8259A送一个EOI命令字 将把ISR中相应位清0 在完全嵌套方式下 采用普通EOI方式 特殊中断结束方式该种方式下 在中断服务程序结束 执行IRET之前 向8259A送一个 特殊EOI 命令字 可将ISR中指定位清0 8259A中断管理 工作 方式 续 99 普通EOI 优先级循环方式执行IRET之前 向8259A送一个 普通EOI 优先级循环方式 命令字 将ISR中级别最高的置1位清0 同时完成优先级循环 自动EOI优先级循环方式在CPU响应中8259A在收到第2个中断响应脉冲信号之后 自动把ISR中置1的最高优先级服务标志ISRi位清0 并完成优先级循环 8259A中断管理 工作 方式 续 100 特殊EOI 优先级循环方式 当前中断服务结束 执行IRET之前 向8259A送一个 特殊EOI 优先级循环方式 命令字 可将ISR中指定位清0 并完成优先级循环 8259A中断管理 工作 方式 续 101 总线连接方式 缓冲方式如果8259A通过总线驱动器和系统数据总线相连 则8259A应采用缓冲方式 此时SP EN为输出端 它输出一个低电平信号 可作为总线驱动器的启动信号 非缓冲方式如果8259A数据线和系统数据总线直接相连 则8259A应工作于非缓冲方式下 8259A中断管理 工作 方式 续 102 三 8259A的级联主8259A的中断请求端IR0 IR7用于接收从8259A的中断输出 最多可扩展至64级优先权中断 CAS0 CAS1 CAS2作为从片识别码 103 7 3 28259A的编程 8259A的两种命令字初始化命令字 ICW1 ICW4操作命令字 OCW1 OCW38259A的启动 必须先通过编程写入初始化命令字 使它处于工作起始状态 初始化过程 按照固定的顺序进行 ICW1 ICW2必须写 ICW3 ICW4视具体情况而定 104 初始化命令字ICW 有4个初始化命令字ICW8259A在开始工作前必须写入必须按照ICW1 ICW4顺序写入ICW1和ICW2是必须写ICW3和ICW4由工作方式决定是否写 105 ICW1 中断请求触发方式设定 ICW1是第一个初始化命令字ICW1使用偶端口 A0 0 D4 1 作为ICW1特征写入ICW1时 自动将中断屏蔽寄存器IMR清0 并恢复各中断源的优先级为IR0最高 IR1次高 IR7最低 106 ICW1的格式 芯片控制字 107 D0 IC4 位 是否写ICW4选择 D0 需要写ICW4 D0 不写ICW4 D1 SNGL 位 单片多片选择 D1 0 多片级连使用 D1 1 单片使用 D3 LTIM 位 触发方式选择D3 0 边沿触发 D3 1 电平触发 D7 D6 D5 D24位 8086CPU不用 置0 D4位 特征位D4 1 表示写ICW1字 108 ICW2 中断类型号设定 ICW2的功能是设置中断类型号 它使用奇端口 A0 1 紧跟在ICW1之后设置 109 ICW2的格式 110 D7 D3 T7 T3 中断类型号的高5位 由用户写入中断类型码的低3位由8259A自动设定IR0为000 IR1为001 IR7为111它在第一个INTA到来时 将这个编码写入低3位D2 D1 D0三位固定为0 111 例若对8259A采用电平触发 单片使用 需写ICW4 则程序段为 例在PC系列中断系统中 硬盘的中断类型号的高5位是08H 它的中断请求线连到8259A的IR5上 写ICW2字的程序段为 MOVAL 08H 中断类型号高5位 00001000BOUT21H AL 写入ICW2端口 A0 1 MOVAL 1BH ICW1的内容 00011011BOUT20H AL 写入ICW1端口 A0 0 112 ICW3 中断级连方式设定 ICW3仅在多片级连方式中使用ICW3使用奇端口 A0 1 113 主8259A 若Si 1 表示IRi引脚上接有从片 从8259A 用ID2ID1ID0的编码表示本从片接在主8259A的哪根引脚上 IR0 IR7对应的编码为000 111 ICW3的格式 114 ICW4 中断结束 嵌套方式设定 ICW4使用奇端口 A0 1 它确定中断结束的方式和中断嵌套的方式ICW4的格式为 115 D0 PM 位 系统选择 D0 0 用于8085系统 D0 1 用于8086系统D1 AEOI 位 中断结束方式选择 D1 0 普通EOI方式 D1 1 自动EOI方式D3 BUF 位 缓冲方式选择 D3 1 工作于缓冲方式D3 0 工作于非缓冲方式在缓冲方式下 SP EN引脚输出给总线收发器 此时 由M S位来定义本8259A是主片或是从片 116 D2 M S 位 主 从片选择 当BUF 1时 缓冲方式 D2 0为从片 D2 1表示主片 当BUF 0时 M S位无意义 D4 SFNM 位 中断嵌套方式选择 D4 0表示普通全嵌套方式 D4 1表示特殊全嵌套方式 D7D6D5 000 117 例多片8259A级连方式连接 从片A和B的中断请求线INT分别接到主片的IR3和IR6 故 从片A的ICW3 00000011B 03H从片B的ICW3 00000110B 06H主片的ICW3 01001000B 48H从片A程序段为 MOVAL 03H 写从片A的ICW3OUT0A1H AL ICW3的端口地址 A0 1 118 从片B的程序段 MOVAL 06H 写从片B的ICW3OUT0B1H AL ICW3的端口地址 A0 1 主片的程序段 MOVAL 48H 写主片的ICW3OUT81H AL ICW3的端口地址 A0 1 119 例PT86单板机中 CPU为8086 非自动结束方式 使用2片8259A 非缓冲方式 主片为特殊全嵌套方式 主片的ICW4 00010101B 15H程序段为 MOVAL 15H ICW4的内容MOVDX 0FFDFH ICW4的端口地址 A0 1 OUTDX AL 120 操作命令字OCW 8259A工作期间 可以随时接受操作命令字OCWOCW共有3个 OCW1 OCW3OCW的写入时没有顺序要求 121 OCW1中断屏蔽字 对IRi输入中断请求进行屏蔽控制 OCW1占用奇地址 A0 1 OCW1格式为 Di Mi 1 则IRi位中断请求被屏蔽 置中断屏蔽 Di Mi 0 则IRi位中断请求被开放 清中断屏蔽 122 例要使IR3开放 其余均被屏蔽 则OCW1 11110111B 0F7H程序段为 MOVAL 0F7HOUT21H AL 21H是8259A奇端口 A0 1 例5 12IMR寄存器的内容可读出 MOVAL 0 置IMR为全 0 OUT21H AL OCW1的口地址 奇地址 INAL 21H 读IMR 奇地址 123 ORAL AL 检查是否为全 0 JNZERR 不为 0 则转错误处理MOVAL 0FFH 置IMR为全 1 OUT21H AL OCW1的口地址INAL 21H 读IMRADDAL 1 检查是否为全 1 JNZERR 不为全 1 转错误处理 124 OCW2优先级循环及结束方式操作字 设定8259A的中断优先级循环和结束方式OCW2占用偶地址 A0 0 OCW2格式为 125 D7 R 中断优先级循环设定D7 0 固定优先权方式D7 1 循环优先权方式D6 SL 中断级别指定D6 0 不指定中断级 L0 L2编码无效D6 1 用L0 L2编码来指定中断优先级 126 D5 EOI 中断结束命令位当ICW4中的AEOI位 0时 D5 1可使ISR寄存器中相应位清 0 即中断结束 D2D1D0 L2L1L0 中断等级编码 L2L1L0的8种编码 000B 111B分别与IR0 IR7对应D4D3 特征位 D4D3 00 表示是OCW2 128 R SL EOI不同设置的意义说明编码 001 普通EOI命令 它在中断服务程序结束时发出 8259A接到该命令后 将当前ISR中优先级最高的置 1 位清 0 编码 011 特殊EOI命令 当中断处理结束 8259A接收到该命令后 将ISR中由L2L1L0编码指定的相应位清 0 129 编码 101 普通EOI循环命令 将ISR中优先级最高的置 1 位清 0 并将刚结束的中断请求IRi赋予最低优先级 把最高优先级赋予IRi 1 其它级别按循环排序 编码 111 特殊EOI循环命令 将ISR中由L2L1L0编码指定的相应位清 0 并将最低优先级赋予这一中断请求 最高优先级赋予它的下一级中断请求 其它级别按循环方式依次改变 130 编码 000和100 使8259A取消自动EOI循环方式 复位 和设置自动EOI循环方式 置位 在自动EOI循环方式下 8259A在接收到中断响应信号后 将ISR中相应位清 0 并将最低优先级赋予这一中断请求 最高优先级赋予它的下一级中断请求 其它级别按循环方式依次改变 编码 110 向8259A发置优先权命令 将最低优先级赋予由由L2L1L0编码指定的中断请求IRi 其它中断请求的级别按循环方式分别赋给 131 OCW3查询中断方式和特殊屏蔽方式操作 OCW3的端口为偶地址 A0 0 OCW3格式为 132 133 D4D3 01是OCW3的特征位D6 ESMM 特殊屏蔽方式允许位ESMM 0 将SMM位屏蔽 使其无效 ESMM 1 开放SMM位 使其有效 D5 SMM 特殊屏蔽方式设定当ESMM 1时 若SMM 1 选择特殊屏蔽方式 SMM 0 不选择特殊屏蔽方式D2 P 查询命令标识位P 1 CPU将执行一条读状态字指令 并使读其它寄存器命令无效 P 0 不读中断状态字 134 D1 RR D0 RIS 读ISR和IRR中的状态信息标识位 仅当P 0时有效 RR 1 RIS 0表示在下一条 IN 指令时从偶地址 A0 0 读IRR中的状态信息 RR 1 RIS 1表示在下一条 IN 指令时从偶地址 A0 0 读ISR中的状态信息 RR 0 则RIS位无效 IMR中的信息可直接用 IN 指令从奇地址 A0 1 端口读出 135 查询中

温馨提示

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

评论

0/150

提交评论