51单片机中断原理

上传人:sha****en 文档编号:22118796 上传时间:2021-05-20 格式:PPT 页数:34 大小:653KB
返回 下载 相关 举报
51单片机中断原理_第1页
第1页 / 共34页
51单片机中断原理_第2页
第2页 / 共34页
51单片机中断原理_第3页
第3页 / 共34页
点击查看更多>>
资源描述
单 元 七 MCS - 51单 片 机 的 中 断 一 、 中 断 的 概 述 二 、 MCS - 51中 断 系 统三 、 中 断 系 统 的 应 用 5.1 中 断 的 概 述 1. 中 断 中 断 是 指 计 算 机 在 执 行 某 一 程 序 的过 程 中 , 由 于 计 算 机 系 统 内 、 外 的 某 种原 因 , 而 必 须 中 止 原 程 序 的 执 行 , 转 去 执行 相 应 的 处 理 程 序 , 待 处 理 结 束 之 后 , 再回 来 继 续 执 行 被 中 止 的 原 程 序 的 过 程 。 采 用 了 中 断 技 术 后 的 计 算 机 , 可 以 解 决CPU与 外 设 之 间 速 度 匹 配 的 问 题 , 使 计 算机 可 以 及 时 处 理 系 统 中 许 多 随 机 的 参 数和 信 息 , 同 时 , 它 也 提 高 了 计 算 机 处 理 故障 与 应 变 的 能 力 。“ 中 断 ” 与 “ 查 询 ” 相 比 : 执 行 效 率 实 时 性 2. 中 断 源 中 断 源 是 指 在 计 算 机 系 统 中 可 以 向CPU发 出 中 断 请 求 的 来 源 。 通 常 有 I/O设 备 、 实 时 控 制 系 统 中 的 随 机 参 数 和 信息 故 障 源 等 。 3. 中 断 优 先 级 中 断 优 先 级 越 高 , 则 响 应 优 先 权 就 越 高 。 当CPU正 在 执 行 中 断 服 务 程 序 时 , 又 有 中 断 优 先 级 更高 的 中 断 申 请 产 生 , 这 时 CPU就 会 暂 停 当 前 的 中 断服 务 转 而 处 理 高 级 中 断 申 请 , 待 高 级 中 断 处 理 程 序完 毕 再 返 回 原 中 断 程 序 断 点 处 继 续 执 行 , 这 一 过 程称 为 “ 中 断 嵌 套 ” 。 4. 中 断 响 应 的 一 般 过 程 (1) 在 每 条 指 令 结 束 后 , 系 统 都 自 动 检 测 中 断请 求 信 号 , 如 果 有 中 断 请 求 , 且 CPU处 于 开 中断 状 态 下 , 则 响 应 中 断 。 (2) 保 护 现 场 , 在 保 护 现 场 前 , 一 般 要 关 中 断 , 以 防 止 现 场 被 破 坏 。 保 护 现 场 一 般 是 用 堆 栈 指令 将 原 程 序 中 用 到 的 寄 存 器 推 入 堆 栈 。 (3) 中 断 服 务 , 即 为 相 应 的 中 断 源 服 务 。 (4) 恢 复 现 场 , 用 堆 栈 指 令 将 保 护 在 堆 栈中 的 数 据 弹 出 来 , 在 恢 复 现 场 前 要 关 中 断 , 以 防 止 现 场 被 破 坏 。 在 恢 复 现 场 后 应 及 时开 中 断 。 (5) 返 回 , 此 时 CPU将 推 入 到 堆 栈 的 断 点地 址 弹 回 到 程 序 计 数 器 , 从 而 使 CPU继 续 执行 刚 才 被 中 断 的 程 序 。 5.2 MCS - 51中 断 系 统图 5.1 MCS - 51中 断 系 统 结 构 框 图 5.2.1 中 断 源 表 5.1 8051 中 断 源 中 断 标 志 ( Flag)IE0: 外 部 中 断 0中 断 标 志TF0: 定 时 器 /计 数 器 0中 断 标 志IE1: 外 部 中 断 1中 断 标 志TF1: 定 时 器 /计 数 器 1中 断 标 志TI: 串 行 口 发 送 中 断 标 志RI: 串 行 口 接 收 中 断 标 志 1. 定 时 器 控 制 寄 存 器 TCON的 格 式 ( 88H ) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0(MSB) (LSB)IT0: 外 部 中 断 0触 发 方 式 选 择 位 0:低 电 平 触 发 1: 负 跳 变 触 发IE0: 外 部 中 断 0中 断 请 求 标 志IT1、 IE1 类 似 IT0、 IE0TR0: 定 时 /计 数 器 0运 行 控 制 位 0:停 止 1:运 行TF1: 定 时 /计 数 器 0中 断 请 求 标 志 位TR1、 TF1 类 似 TR0、 TF0 2. 特 殊 功 能 寄 存 器 SCON的 格 式 ( 98H) SM0和 SM1: 串 行 口 工 作 方 式 选 择 位SM2: 多 机 通 信 使 能 位REN: 接 收 允 许 位TB8: 发 送 数 据 位 8RB8: 接 收 数 据 位 8TI: 串 行 口 发 送 中 断 请 求 标 志RI: 串 行 口 接 收 中 断 请 求 标 志 SM0 SM1 SM2 REN TB0 RB0 TI RIMSB LSB 5.2.2 中 断 控 制 1. 中 断 允 许 控 制 MCS - 51单 片 机 有 5个 ( 8052有 6个 ) 中 断 源 , 为了 使 每 个 中 断 源 都 能 独 立 地 被 允 许 或 禁 止 , 以 便 用 户能 灵 活 使 用 , CPU内 部 在 每 个 中 断 信 号 的 通 道 中 设 置了 一 个 中 断 允 许 触 发 器 , 它 控 制 CPU能 否 响 应 中 断 。只 有 对 应 的 中 断 允 许 触 发 器 被 使 能 ( 置 “ 1”) , 相 应的 中 断 才 能 得 到 相 应 。 EX0: 外 部 中 断 0允 许 位ET0: 定 时 器 /计 数 器 0中 断 允 许 位EX1: 外 部 中 断 1允 许 位ET1: 定 时 器 /计 数 器 1中 断 允 许 位ES : 串 行 口 中 断 允 许 位EA : 中 断 总 允 许 位EA ES ET1 EX1 ET0 EX0(MSB) (LSB)中 断 允 许 控 制 寄 存 器 IE ( 0A8H) 2. 中 断 优 先 级 控 制 寄 存 器 IP( 0B8H) PS PT1 PX1 PT0 PX0(MSB) (LSB)PX0: 外 部 中 断 0允 许 位PT0: 定 时 器 /计 数 器 0中 断 允 许 位PX1: 外 部 中 断 1允 许 位PT1: 定 时 器 /计 数 器 1中 断 允 许 位PS : 串 行 口 中 断 允 许 位 当 两 个 以 上 的 中 断 源 同 时 提 出 申 请 时 ,CPU到 底 相 应 哪 个 中 断 呢 ? 中 断 响 应 遵 循 两 条 规 则 : ( 1) 低 优 先 级 中 断 可 以 被 高 优 先 级 中 断 所中 断 , 反 之 不 能 ; ( 2) 一 种 中 断 ( 不 论 哪 个 优 先 级 ) 一 旦 得到 响 应 , 与 它 同 级 的 中 断 不 能 再 中 断 它 。 表 5.2 同 级 内 第 二 优 先 级 次 序 当 同 时 收 到 处 于 同 一 优 先 级 的 多 个 中 断请 求 时 , 哪 一 个 中 断 能 得 到 响 应 , 取 决 于“ 内 部 查 询 次 序 ” , 相 当 于 在 每 个 优 先 级 中 ,还 有 一 个 “ 内 部 优 先 级 ” , 如 下 表 所 示 : 例 如 , 某 软 件 中 对 寄 存 器 IE、 IP设 置 如 下 : MOV IE, 8FH MOV IP, 06H 则 此 时 该 系 统 中 : CPU中 断 允 许 ; 允 许 外 部 中 断 0、 外 部 中 断 1、 定 时 器 /计 数 器 0、 定 时 器 /计 数 器 1提 出 的 中 断 申 请 ; 允 许 中 断 源 的 中 断 优 先 次 序 为 : 定 时 器 /计 数 器 0外 部 中 断 1外 部 中 断 0定 时 器 /计 数器 1。 5.2.3 中 断 响 应The interrupt request flags are sampled in each machine cycle. The sampled flags are polled during the following machine cycle. If one of the flags was in a set condition in the preceding cycle, the polling cycle will find it and the interrupt controller will cause the CPU to branch to the vector address of the appropriate service routine by generating an internal LCALL. 中 断 标 志 检 测 与 响 应 过 程 5.2.3.1 中 断 响 应 的 阻 断 条 件 在 EA 1且 相 应 的 中 断 允 许 位 也 为 1的 情 况 下 ,检 测 到 的 最 高 级 的 中 断 请 求 将 会 得 到 相 应 。 但 此 时如 果 发 生 下 列 三 种 情 况 中 的 任 何 一 种 , 中 断 响 应 的过 程 将 被 阻 断 :( 1) 同 级 或 高 优 先 级 的 中 断 已 在 进 行 中 ; ( 2) 当 前 的 机 器 周 期 还 不 是 正 在 执 行 指 令 的 最 后一 个 机 器 周 期 ( 换 言 之 , 正 在 执 行 的 指 令 完 成 前 , 任何 中 断 请 求 都 得 不 到 响 应 ) ; ( 3) 正 在 执 行 的 是 一 条 RETI 或 者 访 问 特 殊 功 能寄 存 器 IE或 IP的 指 令 ( 换 言 之 , 在 RETI或 读 写 IE或 IP之 后 , 不 会 马 上 响 应 中 断 请 求 , 而 至 少 执 行一 条 其 它 指 令 之 后 才 会 响 应 ) 。 当 上 述 阻 断 条 件 存 在 时 , 中 断 不 能被 相 应 , 且 丢 弃 查 询 结 果 。 若 阻 断 条 件 结束 时 , 中 断 标 志 已 经 消 失 , 则 这 个 被 拖 延了 的 中 断 请 求 可 能 不 会 再 得 到 响 应 。 在 单 一 外 部 中 断 的 系 统 里 ( 即 不 考 虑上 述 阻 断 条 件 中 断 的 第 一 个 条 件 ) , 外 部中 断 响 应 时 间 总 是 在 38个 机 器 周 期 之 间 。 2. 单 片 机 一 旦 响 应 中 断 请 求 , 由 硬 件 完 成 以 下 功 能 : (1) 根 据 响 应 的 中 断 源 的 中 断 优 先 级 , 使 相 应 的 优 先 级 状态 触 发 器 置 1; (2) 执 行 硬 件 中 断 服 务 子 程 序 调 用 , 并 把 当 前 程 序 计 数器 PC的 内 容 压 入 堆 栈 ; (3) 清 除 相 应 的 中 断 请 求 标 志 位 ( 串 行 口 中 断 请 求 标志 RI和 TI除 外 ) ; (4) 把 被 响 应 的 中 断 源 所 对 应 的 中 断 服 务 程 序 的 入 口地 址 ( 中 断 矢 量 ) 送 入 PC, 从 而 转 入 相 应 的 中 断 服 务 程 序 。 中 断 响 应 过 程 , 相 当 于 执 行 了 一 条 隐含 的 调 用 指 令 ( 或 称 隐 指 令 ) LCALL。 例 如 当 TF0被 置 1且 得 到 中 断 响 应 时 ,CPU就 自 动 的 执 行 一 条 隐 指 令 “ LCALL 000BH”。 应 当 注 意 , 在 中 断 服 务 子 程 序 的 调 用过 程 中 , 仅 仅 保 存 了 PC的 信 息 , 其 余 的 现场 信 息 ( 如 寄 存 器 的 值 等 ) 都 要 由 编 程 人员 通 过 软 件 来 进 行 保 护 。 表 5.3 中 断 服 务 程 序 入 口 地 址 表 例 如 , 现 有 外 部 中 断 1 提 出 申 请 , 且 主 程 序 中 有R0、 R1、 DPTR、 累 加 器 A需 保 护 , 则 编 制 程 序 应为 : ORG 0000H AJMP MAIN ORG 0013H LJMP INT1 ORG 0100H MAIN: ; 主 程 序 ORG 1000H INT1: PUSH ACC ; 中 断 服 务 程 序 PUSH DPH ; 若 有 更 高 级 中 断 , PUSH DPL ; 应 先 关 闭 EA PUSH R0 ; 待 现 场 保 护 完 成 后 PUSH R1 ; 再 打 开 EA POP R1 ; 恢 复 现 场 时 相 同 POP R0 POP DPL POP DPH POP ACC RETI 编 程 中 应 注 意 : (1) 在 0000H放 一 条 跳 转 到 主 程 序 的 跳 转 指 令 , 这 是 因 为 MCS-51单 片 机 复 位 后 , PC的 内 容 变 为 0000H, 程 序 从 0000H 开 始 执 行 , 紧 接 着 0003H是 中 断 程 序 入 口 地 址 , 故 在 此 中 间 只 能插 入 一 条 转 移 指 令 ; (2) 响 应 中 断 时 , 先 自 动 执 行 一 条 隐 指 令 “ LCALL 0013H”, 而 0013H至 001BH( 定 时 器 1 溢 出 中 断 入 口 地 址 ) 之间 可 利 用 的 存 储 单 元 不 够 , 故 放 一 条 无 条 件 转 移 指 令 。 (3) 在 中 断 服 务 程 序 的 末 尾 , 必 须 安 排 一 条 中 断 返 回 指 令RETI, 使 程 序 自 动 返 回 主 程 序 。 5.3 中 断 系 统 的 应 用 例 1 单 步 操 作 的 中 断 实 现 。 把 一 个 外 部 中 断 ( 设 为 INT0) 设 置 为 电 平 激 活 方 式 。其 中 断 服 务 程 序 的 末 尾 写 上 如 下 几 条 指 令 : JNB P3.2, $ ; 在 INT0变 高 前 , 原 地 等 待 (死 循 环 ) JB P3.2, $; 在 INT0变 低 前 , 原 地 等 待 (死 循 环 ) RETI ; 返 回 并 执 行 一 条 指 令 现 在 ,若 INT0保 持 低 电 平 , 且 允 许 INT0中 断 , 则 CPU就 进入 外 部 中 断 0 服 务 程 序 , 由 于 有 上 述 几 条 指 令 , 它 就 会 停 在 JNB处 , 原 地 等 待 。 当 INT0 端 出 现 一 个 正 脉 冲 ( 由 低 到 高 , 再 到 低 ) 时 , 程 序 就 会 往 下 执 行 , 执 行 RETI后 , 将 返 回 主 程 序 , 往 下 执 行 一 条 指 令 , 然 后 又 立 即 响 应 中 断 ,以 等 待 INT0端 出 现的 下 一 个 正 脉 冲 。 这 样 在 INT0端 每 出 现 一 个 正 脉 冲 , 主 程 序就 执 行 一 条 指 令 , 实 现 了 单 步 执 行 的 目 的 , 要 注 意 的 是 , 这 个正 脉 冲 的 高 电 平 持 续 时 间 不 小 于 2 个 周 期 , 以 确 保 CPU能 采集 到 高 电 平 值 。 例 2 多 中 断 源 。 MCS - 51 单 片 机 有 两 个 外 部 中 断 输 入 端 , 当 有 2 个 以 上 中 断 源 时 , 它 的 中 断 输 入 端 就 不 够 了 。 此 时 , 可 以 将 定 时 器 /计 数 器 作 为 外 部 中 断 源 使 用 , 也 可 以采 用 中 断 与 查 询 相 结 合 的 方 法 来 实 现 。 可 以 使 每 个中 断 源 都 接 在 同 一 个 外 部 中 断 输 入 端 上 , 同 时 利 用输 入 口 线 作 为 多 中 断 源 情 况 下 各 中 断 源 的 识 别 线 。 图 5.6 多 中 断 源 ORG 0003H LJMP INT0INT0: PUSH PSW PUSH ACC JB P0.7, DV1 JB P0.6, DV2 JB P0.5, DV3 JB P0.4, DV4GOBACK: POP ACC POP PSW RETI DV1: ; 装 置 1中 断 服 务 程 序 AJMP GOBACKDV2: ; 装 置 2中 断 服 务 程 序 AJMP GOBACKDV3: ; 装 置 3中 断 服 务 程 序 AJMP GOBACKDV4: ; 装 置 4中 断 服 务 程 序 AJMP GOBACK
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!