《微机技术第06章中断修改.ppt》由会员分享,可在线阅读,更多相关《微机技术第06章中断修改.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章 中断控制接口教学重点n8088CPU 的中断系统n 8259A 的中断工作过程和工作方式n 中断服务程序的编写6.1 中断的定义 n CPU 执 行 程 序 时,由 于 发 生 了 某 种 随 机的 事 件(外 部 或 内 部),引 起CPU 暂 时 中断 正 在 运 行 的 程 序,转 去 执 行 一 段 特 殊的 服 务 程 序(称 为 中 断 服 务 程 序 或 中 断 处理 程 序),以 处 理 该 事 件,该 事 件 处 理 完后 又 返 回 被 中 断 的 程 序 继 续 执 行,这 一过程称为中断。中断源n 引起CPU 中断的事件 中断源。例如:n 外设 请求输入输出数据
2、,报告故障等n 事 件 掉 电、硬 件 故 障、软 件 错 误、非 法 操 作、定 时时间到等n 中断源分为:外部中断、内部中断n 内部中断:CPU 内部执行程序时自身产生的中断n 外部中断:CPU 以外的设备、部件产生的中断n 8086/8088 的外部中断信号:INTR、NMIn INTR 可 屏 蔽 中 断 请 求,高 电 平 有 效,受IF 标 志 的 控制。IF=1 时,执行完当前指令后CPU 对它作出响应。n NMI 非 屏 蔽 中 断 请 求,上 升 沿 有 效,任 何 时 候CPU都要响应此中断请求信号。为何计算机中要引入中断?n 提高数据传输率;n 避 免 了CPU 不 断
3、检 测 外 设 状 态 的 过 程,提高了CPU 的利用率。n 实现对特殊事件的实时响应。中断过程n 五个步骤:n 中断请求n 中断判优(有时还要进行中断源识别)n 中断响应n 中断服务n 中断返回以下以外部中断为主介绍这五个步骤。1)中断请求n 外 设 接 口(中 断 源)发 出 中 断 请 求 信 号,送 到CPU 的INTR 或NMI 引脚;n 中断请求信号:边沿请求,电平请求例如,NMI 为边沿请求,INTR 为电平请求n 中断请求信号应保持到中断被处理为止;n CPU 响应中断后,中断请求信号应及时撤销。n 在8086/8088 系 统 中,外 设 的 中 断 要 经 过8259A可
4、编程中断控制器(PIC)的排队判优后向CPU 发出:(I/O 接口)PIC CPU2.1)中断源识别n 计 算 机 中 的 中 断 源 有 很 多,CPU 必 须 识 别 是哪 一 个 设 备 产 生 中 断。识 别 中 断 源 有 两 个 方法:n 软 件 查 询。将 中 断 信 号 从 数 据 总 线 读 入,用 程 序进行判别。n 中 断 矢 量 法。由 中 断 源 提 供 中 断 类 型 号,CPU 根据 类 型 确 定 中 断 源。(8086/8088 即 采 用 此 种方法)中断查询接口A0A15锁存器INTR三态缓冲器译码 8001HD0D7中断A中断B中断CIOR2.2)中断判
5、优n 多个中断源产生中断,CPU 首先为谁服务?中断优先级排队问题。n 中断优先级控制要处理两种情况:n 对 同 时 产 生 的 中 断:应 首 先 处 理 优 先 级 别 较 高 的 中 断;若 优 先 级 别 相同,则按先来先服务的原则处理;n 对 非 同 时 产 生 的 中 断:低 优 先 级 别 的 中 断 处 理 程 序 允 许 被 高 优 先 级 别的中断源所中断 即允许中断嵌套。n 中断优先级的控制方法n 硬件判优 链式判优、并行判优(中断向量法)n 软 件 判 优 顺 序 查 询 中 断 请 求,先 查 询 的 先 服 务(即 先 查 询 的 优 先级别高)n 通常将中断判优与
6、中断源识别合并在一起进行处理。n x86 系统中,这项任务由PIC 和CPU 共同完成。链式中断优先权排队电路A2A1C2C1D2D1B2B1中断源A触发器中断源B触发器中断源C触发器中断矢量D中断矢量C中断矢量B中断矢量A中断源D触发器缓冲器缓冲器缓冲器缓冲器INTA3)中断响应n 在 每 条 指 令 的 最 后 一 个 时 钟 周 期,CPU 检 测INTR 或NMI 信 号。若 以 下 条 件 成 立,则CPU响应中断:n 当前指令执行完。对INTR,还应满足以下条件n 当前指令是STI 和IRET,则下条指令也要执行完。n 当 前 指 令 带 有LOCK、REP 等 指 令 前 缀 时
7、,则 把 它 们看成一个整体,要求完整地执行完;n 对INTR,CPU 应处于开中断状态,即IF=1;n 当前没有复位(RESET)和保持(HOLD)信号。n 若NMI 和INTR 同时发生,则首先响应NMI。3)中断响应(续)n CPU 中断响应时,要做下述三项工作:n 向中断源发出INTA 中断响应信号;n 断 点 保 护,包 括CS、IP 和PSW(FLAGS)。这主要是保证中断结束后能返回被中断的程序。n 获得中断服务程序首地址(入口)。如何得到中断处理程序的首地址?n 中断向量法 常用4)中断处理(中断服务)n 中断服务子程序特点n 为”远”过程(类型为FAR)n 要用IRET 指令
8、返回n 中断服务子程序要做的工作n 保护现场(PUSHregs)n 开中断(STI)n 进行中断处理n 恢复现场(POPregs)n 中断返回(IRET)5)中断返回n 执行中断返回指令IRETn IRET 指 令 将 使CPU 把 堆 栈 内 保 存 的 断 点 信 息 弹出 到IP、CS 和FLAG 中,保 证 被 中 断 的 程 序 从 断点处能够继续往下执行。IPLIPHCSLCSHFLAGLFLAGHSPIPLIPHCSLCSHFLAGLFLAGHSPIPCSFLAG进入中断服务程序时中断返回后的中断系统 n 与中断有关的控制线为:NMI、INTR、INTA#n 8088 系统的中断
9、源n 内部中断n 除法溢出:类型号0,商大于目的操作数所能表达的范围时产生。n 单步中断:类型号1,TF=1 时产生(当前指令需执行完)n 断点中断:类型号3,这是一个软件中断,即INT3 指令。n 溢出中断:类型号4,这是一个软件中断,即INTO 指令。n 软件中断:即INTn 指令,类型号n(0-255)。n 外部中断n 非屏蔽中断NMI:类型号2,不可用软件屏蔽,CPU 必须响应它。n 可屏蔽中断INTR:类型号由PIC 提供。IF=1 时CPU 才能响应。6.1.1 8088 的中断类型非屏蔽中断源中断逻辑INTO指令单步中断除法错误INT N指令CPUINTRNMI可屏蔽中断源825
10、9A中断控制器IR0IR1IR2IR3IR4IR5IR6IR7外设中断源 INTAn 内部中断n 除法错中断n 指令中断n 溢出中断n 单步中断n 外部中断n 非屏蔽中断n 可屏蔽中断中断源的识别n 8088 系 统 采 用 中 断 类 型 码 来 识 别 不 同 的 中 断源,每 个 中 断 源 都 有 一 个 与 它 相 对 应 的 中 断类型码。n 溢 出、断 点、除 法 溢 出、单 步、非 屏 蔽 中 断 的类型码为固定值n 软件中断的类型码由指令给出n 可屏蔽中断的类型码由PIC 给出n CPU 响 应INTR 中 断 时,会 产 生 两 个 中 断 响应 总 线 周 期,要 求PI
11、C 在 第2 个 中 断 响 应 总 线周 期 把 中 断 类 型 码 放 到 数 据 总 线 上,供CPU读入。6.1.3 8088 的中断向量表n 中断向量:中断服务程序的入口地址(首地址)n 逻辑地址含有段地址CS 和偏移地址IP(32位)n 每 个 中 断 向 量 的 低 字 是 偏 移 地 址、高 字 是 段 地 址,需占用4个字节n 8088微 处 理 器 从 物 理 地 址000H 开 始,依 次 安 排 各个中断向量,向量号也从0开始n 256个中断占用1KB 区域,就形成中断向量表向量号为N 的中断向量的物理地址N4返回中断向量表的初始化n 初 始 化 将 中 断 服 务 程
12、 序 的 入 口 地 址 放 入 向量表 例:中 断 类 型 码 为48H 的 中 断 处 理 子 程 序 的名 字 为int48h,编 写 程 序 段 将 该 中 断 处 理 子程序的入口地址放入向量表。中断向量表的初始化CLIMOVAX,0MOVDS,AXMOVSI,48H*4MOVAX,OFFSETint48hMOVSI,AXMOVAX,SEGint48hMOVSI+2,AXSTI8086/8088 CPU 的中断响应过程 n 内部中断响应过程n 无INTA#周期n 中断类型码固定或由指令给出n 响应过程主要步骤:PUSH FLAG IF=0 PUSH CS PUSH IP 取中断向量送
13、入IP和CS中断响应过程(续)n 外部中断响应过程n 非屏蔽中断,与内部中断响应过程类似n 可屏蔽中断 INTA#(1),PIC 进行优先级排队判优处理 INTA#(2),PIC 把中断类型码放到DB 上,CPU 读入 PUSH FLAG IF=0 PUSH CS PUSH IP 取中断向量送入IP和CS与内部中断一样7.1.2 8088 的中断响应过程NMIN软件中断INTRTF=1中断响应周期读中断向量号下条指令现行指令IF1NNNNYYYYY查询中断的顺序,决定了各种中断源的优先权n 软件中断n 除法错中断n 指令中断n 溢出中断n 非屏蔽中断n 可屏蔽中断n 单步中断高低7.1.2 8
14、088 的中断响应过程(续)Y还有NMITEMP 1标志寄存器入栈TEMP TF,IFTF 0CS:IP入栈获取中断向量执行服务程序弹出CS:IP弹出标志寄存器返回被中断程序(1)(2)(3)(4)(5)NNY(6)n 8088各种中断源的优先权,实际上是指被识别出来的先后n 多种中断同时请求时,最先响应的则可能是单步中断或NMI 中断返回7.2 内部中断服务程序n 编写内部中断服务程序与编写子程序类似n 利用过程定义伪指令PROC/ENDPn 第1条指令通常为开中断指令STIn 最后用中断返回指令IRETn 通常采用寄存器传递参数n 主程序需要调用中断服务程序n 调用前,需要设置中断向量n
15、利用INT n 指令调用中断服务程序7.3 8259A 中断控制器n Intel 8259A 是可编程中断控制器PICn 可 用 于 管 理Intel 8080/8085、8086/8088、80286/80386 的可屏蔽中断n 8259A 的基本功能n 一片8259A 可以管理8级中断,可扩展至64级n 每一级中断都可单独被屏蔽或允许n 在中断响应周期,可提供相应的中断向量号n 8259A 设计有多种工作方式,可通过编程选择7.3.1 8259A 的内部结构和引脚D7D0INTAINT中断请求寄存器中断屏蔽寄存器数据总线缓冲器IR0IR7读/写控制逻辑级联缓冲器比较器RDWRA0CSCAS
16、0CSA1CAS2SP/EN优先权判别电路中断服务寄存器控制逻辑1.中断控制n 中断请求寄存器IRRn 保存8条外界中断请求信号IR0 IR7 的请求状态n Di位为1表示IRi 引脚有中断请求;为0表示无请求n 中断服务寄存器ISRn 保存正在被8259A 服务着的中断状态n Di位为1表示IRi 中断正在服务中;为0表示没有被服务n 中断屏蔽寄存器IMRn 保存对中断请求信号IR 的屏蔽状态n Di位为1表示IRi 中断被屏蔽(禁止);为0表示允许n 中断优先权判别电路 n 确 定 是 否 向CPU 发 出 中 断 请 求,中 断 响 应 时 确 定ISR 的哪位应置位及把相应中断的类型码
17、放到数据总线上 2.与处理器接口A0RD*WR*CS*功能01001100001010101101写入ICW1、OCW2 和OCW3写入ICW2 ICW4 和OCW1读出IRR、ISR 和查询字读出IMR数据总线高阻状态数据总线高阻状态3.中断级连n 一 个 系 统 中,8259A 可 以 级 连,有 一 个 主8259A,若干个(最多8个)从8259An 级 连 时,主8259A 的 三 条 级 连 线CAS0 CAS2 作为输出线,连至每个从8259A 的CAS0 CAS2n 每 个 从8259A 的 中 断 请 求 信 号INT,连 至 主8259A的一个中断请求输入端IRn 主8259
18、A 的INT 线连至CPU 的中断请求输入端n SP*/EN*在 非 缓 冲 方 式 下,规 定 该8259A 是 主 片(SP*1)还是从片(SP*0)动画 示例7.3.2 8259A 的中断过程CAS0CAS2D0D7SP/ENIR0IR7CPU 响应周期8259A 工作波形INT第一个周期T1 T2 T3 T4ALECLK 第二个周期T1 T2 T3 T4第一个前保持为高电平 INTALOCK动画7.3.3 8259A 的工作方式普通全嵌套方式特殊全嵌套方式自动循环方式特殊循环方式优先权固定方式优先权循环方式设置优先权方式普通中断结束方式特殊中断结束方式自动中断结束方式非自动中断结束方式
19、结束中断处理方式屏蔽中断源方式普通屏蔽方式特殊屏蔽方式中断触发方式边沿触发方式电平触发方式数据线连接方式缓冲方式非缓冲方式中断优先方式与中断嵌套n 中断优先方式两类优先级控制方式:固定优先级和循环优先级n 固定优先级方式n 所有中断请求IRi的中断优先级固定不变n 优先级排列顺序可编程改变n 加 电 后8259A 的 默 认 方 式,默 认 优 先 级 顺 序 从 高 到低为IR0IR7IR7IR6IR5IR4IR3IR2IR1IR07 6 5 4 3 2 1 0 3 2 1 0 7 6 5 4最低级最高级 最高级 最低级优先级IR7IR6IR5IR4IR3IR2IR1IR0默认优先级 优先级
20、可编程改变中断优先方式与中断嵌套(续)n 循环优先级方式n 中断源轮流处于最高优先级,即自动中断优先级循环n 初始优先级顺序可用编程改变n 某 中 断 请 求IRi被 处 理 后,其 优 先 级 别 自 动 降 为 最 低,原来比它低一级的中断上升为最高级IR7IR6IR5IR4IR3IR2IR1IR07 6 5 4 3 2 1 0 2 1 0 7 6 5 4 3最低级最高级 最高级 最低级ISR 内容IR7IR6IR5IR4IR3IR2IR1IR0IR4 的服务结束以前0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0IR4 的服务结束以后ISRi中断优先方式与中断嵌套(续)n
21、中断嵌套方式n 在 中 断 处 理 过 程 中 允 许 被 更 高 优 先 级 的 事 件 所 中断称为中断嵌套。8259A 有两种中断嵌套方式:n 普通全嵌套方式(默认方式)一 中 断 正 被 处 理 时,只 有 更 高 优 先 级 的 事 件 可 以 打断当前的中断处理过程而被服务。n 特殊全嵌套方式一 中 断 正 被 处 理 时,允 许 同 级 或 更 高 优 先 级 的 事 件可以打断当前的中断处理过程而被服务。注:特 殊 全 嵌 套 仅 用 于 多 个8259A 级 连 时 的 主8259A,而不能用于从属8259A 或单8259A 系统。D.主8259AIR0IR1IR2IR3IR
22、4IR5IR6IR7一般嵌套方式:从 片 的 INT 被 主 片封 锁,故 更 高 级 别的IR0-IR2 中 断 也 无法得到响应特殊嵌套方式:因 主 片 不 封 锁 从 片 的INT,故 级 别 高 的IR0-IR2 中 断 可 以 得 到 响 应。(但 IR3-IR7 仍 被 本 从片封锁)C.假定IR7 发生中断,并获得服务一 般 嵌 套 方 式:IR4 的 中 断 被 服 务时,这 些 中 断 将被封锁。B.特 殊 嵌 套 方 式:IR4 的 中 断 被 服务 时,只 封 锁IR5-IR7。A.INTE.从8259AINTIR0IR1IR2IR3IR4IR5IR6IR7一般全嵌套方式
23、与特殊全嵌套方式的区别 去CPU中断结束处理方式n 当 某 一IRi中 断 被 服 务 时,ISR 中 的 相 应 位ISRi=1。当 服 务 结 束 后,则 必 须 清 零 该ISRi位。使ISRi=0 是 通 过 向8259A 发 出 中断结束命令(EOI 命令)实现的。n 三种EOI 命令n 自动EOI(AEOI)(自动EOI 方式)n 非指定EOI(NSEOI)(正常EOI 方式)n 指定EOI(SEOI)(特殊EOI 方式)n AEOI:在 第2 个INTA#结 束 时,由8259A 使ISRi自动复位;n 因 不 保 留 当 前 正 在 服 务 的 中 断 的 状 态,故AEOI
24、不 能 用于中断嵌套方式n SEOI:由CPU 发 出 一 条SEOI 命 令,该EOI 命 令中指出了所要复位的ISR 的位号。n 用于特殊屏蔽方式n NSEOI:由CPU 发 出 正 常EOI 命 令,该EOI 命 令使ISRi=1 的位中优先级最高的那一位复位。n 用于普通全嵌套方式中断服务程序向从PIC 发EOI 命令读从PIC 的ISR全0?向主PIC 发EOI 命令YIRET恢复现场N 特殊全嵌套方式下的EOI 处理只有当从PIC 的中断全部处理完后,才能向主PIC 发EOI 命令屏蔽中断源的方式n IMR 屏 蔽 字 决 定 了 允 许 或 禁 止 某 位IRi所 对 应的中断:IMi=1 禁止,IMi=0 允许。n 特殊屏蔽方式:n 提 供 了 允 许 较 低 优 先 级 的 中 断 能 够 得 到 响 应 的 特殊手段。n 原 理:假 定 当 前 正 在 处 理IR6,先 进 入 特 殊 屏 蔽 方式,然 后 设 置IM6=1。这 时,除IR6外 的 所 有 中 断请求均能得到响应。n 特殊屏蔽方式中只能用SEOI 命令结束中断。