手把手教你学单片机(六).pdf_第1页
手把手教你学单片机(六).pdf_第2页
手把手教你学单片机(六).pdf_第3页
全文预览已结束

下载本文档

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

文档简介

钐据 套 件 供 应 】 你学单片机 ( 六 ) 控 制 转 移 类 指 令 学 习 单 片 机 有 一 定 的 智 能 作 用 , 主 要 是 控 制 转 移 类 指 令 的 功 劳 。 这 一 类 指 令 的 功 能 主 要 是 控 制 程 序 从 原 顺 序 执 行 地 址 转 移 到 其 他 指 令 地 址 上( 需 要 改 变 程 序 运 行 方 向 , 或 者 需 要 调 用 - 3 = 程 序 , 或 需 要 从 子 程 序 中 返 回 ) 。 由 于 该 类 指 令 用 于 控 制 程 序 的 走 向 , 所 以其 作 用 区 间 必 然 是 程 序 存 贮 器 空 间 , 此 时 都 需 要 改 变 程 序 计 数 器 P C 的 内容 , 控 制 转 移 类 指 令 可 实 现 这 一 要 求 。 MC S - 5 1指 令 系 统 中 的 控 制 程 序 转 移 类 指 令 , 它 们 是 无 条 件 转 移 和 条 件 转 移 、绝 对 转 移 和 相 对 转 移 、 长 转 移 和 短 转 移 , 还 有 调 用 和 返 回 指 令 等 。 这 类 指 令 多 数 不 影 响 程 序 状 态 标 志 寄 存 器 。 1 无 条 件 转 移 指 令 : 无 条 件 转 移 指 令 功 能 是 , 当 程 序 执 行 无 条 件 转 移 指 令 时 , 程 序 就 无 条 件 地 转 移 到 该 指 令 所 提 供 的 地 址 去 。 A J MP a d d r l l ( 绝 对 无 条 件 转 移 指 令 ) 这 是 两 字 节 指 令 , 指 令 中 包 含 a d d r l l共l l位 地 址 码 , 转 移 的 目 标 地 址 必 须 和 A J I P 指 令 的 下 一 条 指 令 首 字 节 位 于 程 序 存 储 器 的 同 一 2 KB 区 内 。 绝 对 转 移 指 令 仅 为 2个 字 节 指 令 , 却 能 提 供 2 K 范 围 的 转 移 空 间 。 它 比相 对 转 移 指 令 的转 移 范 围 大 得 多 。 但 是 要 求 A J IP指 令 的 转 移 目 标 地 址 和 P C+ 2的 地 址 处 于 同 一2 KB 区 域 内 , 故 受 一 定 的 限 制 。 L J MP a d d r 1 6 ( 长 转 移 指 令 ) 长 转 移 指 令 是 3字 节 指 令 , 这 条 指 令 执 行 时 把 指 令 操 作 数 提 供 的 l 6 位 目标 地 址 a l 5 - a O装 入 P C 中 , 即 周兴华 P C= a l 5 a O 。 所 以 用 长 转 移 指 令 可 以 跳 到 6 4 KB 程 序 存 储 器 的 任 何 位 置 。 s l MP r e l( 短 转 移 指 令 ) 短 转 移 指 令 是 两 字 节 指 令 , 首 字 节 为 操 作 码 , 第 二 字 节 为 相 对 偏 移 量 。 它 是 一 条 无 条 fl= 相 对 转 移 指 令 , 转 移 的 目标 地 址 为 : 目标 地 址 = 源 t l L + 2 + r e l 。 源 地 址 是 S J MP指 令 操 作 码 所 在 的 地 址 , 相 对 偏 移 量 r e l 是 一 个 用 补 码 表 示 的 8位 带 符 号 数 ,转 移 范 围 为 一 l 2 8 + l 2 7共 2 5 6个 单 元 , 即 从 ( P C l 2 6 ) ( P C+ 1 2 9 ) , 因 此 转 移 目标 地 址 可 以 在 s j MP指 令 的 下 条 指 令 首 字 节 前 1 2 8个 字 节 和 后1 2 7个 字 节 之 间 。 J MP A+ Df r r R( 间 接 转 移 指 令 )这 条 指 令 的 功 能 是 把 累 加 器 A 中 的 8位 无 符 号 数 与 数 据 指 针 DP TR 的 l 6位 数 相 加 , 相 加 之 和 作 为 下 一 条 指 令 的 地 址 送 入 P C 中 ,不 改 变 A 和 Df r r R 的 内 容 , 也 不 影 响 标 志 。 间 接 转 移 指 令 采 用 变 址 方 式 实 现 无 条 件 转 移 , 其 特 点 是 转 移 地 址 可 以 在 程 序 运 行 中 加 以 改 变 。 例 如 , 当 把 DP TR 作 为 基 地 址 且 确 定 时 , 根 据 A 的 不 同 值 就 可 以实 现 多 分 支 转 移 , 故 一 条 指 令 可 完 成 多 条 条 件 判 断 转 移 指 令 功 能 , 这 种 功 能 称 为 散 转 功 能 , 所 以 间接 转 移 指 令 又 称 为 散 转 指 令 。 2 条 件 转 移 指 令 : 条 件 转 移 指 令 是 依 某 种 特 定 条 件 转 移 的 指 令 。条 件 满 足 时 转 移 ( 相 当 于 执 行 一 条 相 对 转 移 指 令 ) , 条 件 不 满 足 时 则 按 顺 序 执 行 下 面 一 条 指 令 。MC S - 5 1的 条 件 转 移 指 令 非 常 丰 富 , 包 括 累 加 器 判 零 转 移 、 判 位 ( b i t ) 状 态 转 移 、 比较 转 移 和 循 环 转 移 共 四 组 。 J Z r e l ( 累 加 器 判 零 转 移 ) 若 A 为 0,程 序 跳 转 至 P C+ r e l 处 执 行 ; 若 A 不 为 0, 则 程 序 顺 序 执 行 。 J N Z r e l ( 累 加 器 判 非 零 转 移 ) 若 A 不 为 0, 程 序 跳 转 至 P C+ r e l处 执 行 ; 若 A 为 0, 则 程 序 顺 序 执 行 。 J B b i t 。 r e l( 判 位 为 l状 态 转 移 )若 位 ( b i t ) 为l , 程 序 跳 转 至 P C+ r e l处 执 行 ; 若 位 ( b i t ) 为 0, 则 程 序 顺 序 执 行 。 J NB b i t 。 r e l ( 判 位 非 l状 态 转 移 ) 若 位 ( b i t ) 为 0, 程 序 跳 转 至 P C+ r e l处 执 行 ; 若 位 ( b i t ) 为l , 则 程 序 顺 序 执 行 。 J B C b i t , r e l 若 位( b i t ) 为 l, 将 位 清 0, 程 序 跳 转 至 P C+ r e l 处 执 行 ; 若 位 ( b i t ) 为 0, 则 程 序 顺 序 执 行 。 J C b i t , r e l 若 进 位 位 C Y 为 l , 程 序 跳 转 至 P C+ r e l处 执 行 ; 若 C Y 为 0, 则 程 序 顺 序 执 行 。 J N C b i t 。 r e l 若 进 位 位C Y 为 0 , 程 序 跳 转 至 P C+ r e l 处 执 行 ; 若 C Y 为 l , 则 程 序 顺 序 执 行 。 3 比较 转 移 指 令 : 比 较 转 移 指 令 的 功 能 是 比 较 前 两 个 无 符 号 操 作 数 的 大 小 。 若 不 相 等 , 则 转 移 , 否 则 顺 序 往 下 执 行 。 如 果 第 一 个 操 作 数 大 于 或 等 于 第 二 个 操 作 数 , 则 C Y 清 0, 否 则 C Y 置 l 。指 令 执 行 结 果 不 影 响 其 它 标 志 位 和 所 有 的操 作 数 。 这 组 指 令 为 3字 节 指 令 , 因 此 转 移 目标 地 址 应 是 P C+ 3以 后 再 加 偏 移 量 t e l 所 得 的 P C 的 值 。 即 : 目标 地 址 = 源 地 t l k + 3 + r e l 。 源 地 址 是 比 较 转 移 指 令 所 在 位 置 的 首 字 节 地 址 。 C J N E A, d t r e e t o r e l 若 ( d i r e c t ) ( A 中 内 容 , 则 程 序 跳 转 至 P C+ r e l处 , C Y= 0; 若 ( d i r e c t ) A 中 内 容 , 则 程 序 也 跳 转 至 P C + t e l处 , C Y= l ; 若 ( d i r e c t ) = A 中 内 容 , 则 程 电子翻作 卿| | 簟O期 一2 3 维普资讯 序 顺 序 执 行 , CY= 0。 换 言 之 , 当 ( d i r e c t ) A 中 内 容 , 则 程 序 跳 转 至 P C + r e l 处 。 CY 是 0或 是l要 看 ( d i r e c t ) 与 A 中 内 容 的 大 小 。 C J NE A, # d a t a , r e l 若 d a t a A 中 内 容 , 则 程 序 也 跳 转 至 P C+ r e l处 , CY= l ; 若 d a t a = A 中 内 容 , 则 程 序 顺 序 执 行 , C Y- O 。 换 言 之 , 当 d a t a A 中 内容 , 则 程 序 跳 转 至 P C+ r e l处 , C Y 是 0 或 是 l要 看 d a t a与 A 中 内 容 的 大 小 。 C J NE Rn , # d a t a , r e l 若 d a t a Rn 中 内 容 , 则 程 序 也 跳 转 至 P C+ l -e l处 , CY=l ; 若 d a t a = Rn中 内 容 , 则 程 序 顺 序 执 行 , CY= 0。 换 言 之,当 d a t aR n 中 内 容 ,则 程 序 跳 转 至 P C+ r e l处 , CY 是0 或 是l要 看 d a t a与 R n 中 内 容 的 大 小 。 C J NE Ri , # d a t a , t e l 若 d a t a 以 Ri中 内 容 为 地 址 的 另 一 单 元 内 容 , 则 程 序 也 跳 转 至 P C+ t e l处 。 C Y=l ; 若 d a t a =以 Ri 中 内 容 为 地 址 的 另 一 单 元 内 容 中 内容 , 则 程 序 顺 序 执 行 , CY- - O 。 换 言 之 , 当 d a t a ( R i ) , 则 程 序 跳 转 至 P C+ t e l处 , C Y 是 0或 是 l要 看 d a t a与 ( Ri ) 的 大 小 。 4 循 环 转 移 指 令 : D J N Z Rn 。 r e l ( 寄 存 器 R n减 l 不 为 0循 环 转 移 指 令 ) 该 指 令 是 把 R n 中 内容 减 l ,结 果 送 回 到 Rn中 去 。如 果 结 果 不 为 0则 转 移 , 为 0顺 序 进 行 。 DJ N Z d i r e c t 。 r e l ( 直 接 寻 址 单 元 d i r e c t减 l不 为 0循 环 转 移 指 令 ) 该 指 令 是 把 d i r e c t中 内 容 减 l , 结 果 送 回到 d i r e c t中 去 。 如 果 结 果 不 为 0则 转 移 , 为 0顺 序 进 行 。 5 子 程 序 调 用 及 返 回 指 令 : 一 2 4一电子 制作 2 0 o 3年 第 6期 A CAL L a d d r l l ( 绝 对 调 用 指 令 ) 绝 对 调 用 指 令 AC AL L上 是 一 条 两 字 节 指 令 ,该 指 令 提 供 了 l l位 目标 地 址 a d d r l l , 产 生 调 用 地 址 的 方 法 和 绝 对 转 移 指 令 A J MP 产 生 转 移 地 址 的 方 法 相 同 , ACAL L 是 在 同 一 2 K 区 范 围 内 调 用 子 程 序 的 指 令 。 指 令 执 行 过 程 是 : 执 行 AC AL L指 令 时 。 P C+ 2后 获 得 了 下 一 条 指 令 的 地 址 ,然 后 把 P C 的 当 前 值 压 栈( 栈 指 针 S P加 l , P C L进 栈 , S P 再 加 l , P C H 进 栈 ) 。 最 后 把 P C 的 高 5位 和 指 令 给 出 的 l l位 地 址 a d d r I 1连 接 组 成 1 6位 目 标 地 址 ( P Cl 5 l l a l O a O) , 并 作 为 子 程 序 人 口地 址 送 人 P C 中 , 使 CP U转 向 执 行 子 程 序 。 因 此 , 所 调 用 的 子 程 序 人 口 地 址 必 须 和 AC AL L指 令 下 一 条 指 令 的 第 一 个 字 节 在 同 一 个 2 KB 区域 的 程 序 存 储 器 空 间 。 L C AL L a d d r 1 6( 长 调 用 指 令 ) 长 调 用 指 令 I A 2 AL L是 一 条 可 以 在 6 4 KB 程 序 存 储 器 内 调 用 于 程 序 的 指 令 ,它 是 三 字 节 指 令 。 指 令 执 行 过 程 是 :把 P C加 3获 得 的 下 一 条 指 令 的 地 址 进 栈 ( 先 压 人 低 字 节 , 后 压 人 高 字 节 ) 。进 栈 操 作 使 S P加 l两 次 。 接 着 把 指 令 的 第 二 和 第 三 字 节 ( a 1 5- 8, a 7- 0) 分 别 装 入 P C 的 高 位 和 低 位 字 节 中 , 然 后 从 该 地 址 a d d r l 6 ( a 1 5 0) 开 始 执 行 子 程 序 。 RE T( 子 程 序 返 回 指 令 ) 这 条 返 回 指 令 的 功 能 是 从 堆 栈 中 取 出 断 点 地 址 , 送 给 P C, 并 从 断 点 处 开 始 继 续 执 行 程 序 。 RE T应 放 在 一 般 子 程 序 的 末 尾 。 RE T I ( 中 断 返 回 指 令 ) 这 条 返 回 指 令 的 功 能 也 是 从 堆 栈 中 取 出 断 点 地 址 , 送 给 P C, 并 从 断 点 处 开 始 继 续 执 行 程 序 。 RE T I也 应 放 在 中 断 服 务 子 程 序 的 末 尾 。 在 执 行 RE r r I指 令 时 。 还 将 清 除 MCS 一 5 l 中 断 响 应 时 所 置 位 的 优 先 级 状 态 触 发 器 , 开 放 中 断 逻 辑 , 使 得 已 申 请 的 较 低 级 中 断 源 可 以 响 应 , 但 必 须 在 RE T I指 令 执 行 完 之 后 ,至 少 要 再 执 行 一 条 指 令 才 能 响 应 这 个 中断 。 下 面 开 始 做 实 验 , 具 体 体 验 这 些 指 令 在 程 序 中 的 作 用 。 在 S 2板 上 做 一 个 实 验 ,通 电 后 右 边 三 个 数 码 管 显 示 0 0 0, 按 下 ( 任 何 ) 一 个 按 键 , 寄 存 器 R0从 0 起 递 加 ( 1 、 2 9 一 l 、 2 ) , 根 据 R0 的 内 容 , 程 序 散 转 到 P Rl 、 P R2 P R9子 程 序 执 行 , 右 边 三 个 数 码 管 分 别 显 示1 1 1 、 2 2 2 9 9 9- + l l l 、 222 o o 。 在 我 的 文 档 中 建 立 一 个 文 件 目录 ( S l O) 。 然 后 建 立 一 个 S l O u v 2 的 工 程 项 目 , 最 后 建 立 源 程 序 文 件 ( S l O 1l s m) 。 输 入 下 面 的 程 序 : 序号 : l 0R G 0 0 0 o H; 2 I J MP MA ; 3 0RG 0 3 o H: 4 M : MO V P 0 1 抻 D c 0 H ; 5 MOV PI , t M I t ; 6 MOV P 2,I t ; 7 MOV R0,I t ; 8 S T: MOV P3 ,) F I t ; 9 MOV A。P3 ; l 0 F H, F l ; l l ACAI 工 DEk l 2 J MP fir ; l 3 F 1 : ACAI 工 DEL: l 4 a E A, ) FIt , F 2 ; l 5 J MP fir ; 1 6 F 2 :I NC R0 : l 7 a E I 1 0 , ) At t , F 3 ; l 8 MOV R0 , I t ; l 9 F 3 : MOV DP , I I l# , Pr AB; 2 1 ) MO V A J I , 2 l CL R C: 2 2 I U A: 2 3 J N C N AD D ; 2 4 I NC DP I t ; 2 5 NADD:J MP A+ DI r R; 2 6 J Pr AB: NoP ; 2 7 N0P : 2 8 Am P P Rl ; 2 9J MP PR2 : 3 0J MP PR 3: 3lJ MP PR 4; 3 2 J 眦 P P R 5 ; 3 3 A J MP P R 6 ; 3 4 Am P P l 玎; 维普资讯 DEL DEL1 : DEI 2: DEL 3 : P R4 : P R7: P R8: AJ MP PR8 ; A J I I P P R9 : M0V 1t 7 , # 0 1 4 I t ; MOV R6 ,# O FF I t ; M0V R5 ,# O1 F H; D N Z 1 t 5 , D E I 3 ; D N Z R 6 , D E L 2 ; DJ NZ R7 , DELI ; I t ET ; M0V P O , # O F 9 H: M0V PI , # O F 9 H: M0V P 2 , # O F 9 H: ACALL DEL: AJ I I P S T ; M0V P O , # OA4 H: M0V P 1 , # o A4 H: MOV P 2 , # O A4 H; ACALL DEL: AJ I I P S T; M0V P O , # O BO H; M0V P1 , # O BO H; M0V P 2 , # O1 3 0 H; ACALL DEL: AJ I I P S T ; M0V P 0 , # 9 9 H: M0V P1 # 9 9 H; M0V P 2 , # 9 9 H; ACALL DEL: AJ I I P S T; MOV P O , # 9 2 H; M0V Pl , # 9 2 H; NOV P 2 , # 9 2 H: ACAU DEL: AJ I I P S T; M0V P 0 , # 8 2 H: M oV Pl , # 8 2 H; M0V P 2 榴 2 H: ACALL DEk AJ I I P S T ; M0V P O , # O F 8 H: M0V PI , # O F8 H: M0V P 2 , # O F8 H: ACAU DEL: AJ IV l P S T; M0V P O , # 8 0 H: MOV Pl , # 8 O H; M0V P 2 8 0 H: ACAI 工 DEL: A JMP S T; M0V P O , # 9 0H: M0V P1 撑 9 0 H: M0V P 2 , 撑 9 0 H: ACAU DEL: A JMP S T : 8 9 END 编 译 通 过 后 , 将 其 烧 录 到 8 9 C 5 l芯 片 中 ,将 芯 片 插 入 到 S 2 型 试 验 板 上 。 通 电 运 行 后 , 右 边 三 个 数 码 管 显 示 0 0 0 。 按 一 下 S 1 - S 1 2 按 键 中 的 任 意 一 个 , 右 边 三 个 数 码 管 显 示l l l ; 再 按 一 下 , 显 示 变 为 2 2 2 按 第 9下 , 显 示 变 为 9 9 9 。 按 第 l 0下 起 ,显 示 又 从 l l l起 开 始 循 环 。 下 面 我 们 对 程 序 进 行 详 细 分 析 解 释 。 序号 l ( 程序解释 , 以下同) : 程序开始。 序号 2 : 跳转到 MA I N主程序处 。 序号 3: 主程序 M J N从地址 O 0 3 0 H开始 。 序号 4 - 6: P O P 2口 ( 右边 三位 L E D数码 管 ) 输出显示 0 0 0 。 序号 7: 寄存器 R 0清零。 序号 8 : P 3口置 0 F 1 | 。 序号 9: 将 P 3口的状态读至累加器 A 中。 序号 l 0 : 判有无 按键输入 。若 A 的内容不等 于 O F H ( 说 明有按键输入 ) ,程序 跳转至 F 1 处 ; 若 A 的内容等于 O F H( 说 明无 按键输入) , 程序顺序执行 。 序号 l l : 调用延时子程序 , 维持数码管点亮。 序号 1 2: 程序跳转至 S T处 。 序号 l 3 : 调用延时子程序 , 避开按键的抖 动期 后再判。 序号 l 4 : 再判 有无按键输入 。若 A的内容不 等于 O F H, 程序跳 转至 F 2处 ; 若 A 的内容等 于 O F H, 程序顺序执行。 序号 1 5: 程序跳转至 s T处 。 序号 1 6: 寄存器 R 0内容加 l 。 序号 1 7 : 如 R 0内容不等于 O AH( 1 O ) , 跳转至 F 3 ; 否则 , 向下执行 。 序号 1 8 : 寄存器 R O清零 。 序 号 1 9 :取 直 接 转 移地 址 表 的 首 地 址 送 DFr R。 序号 2 0: 寄存器 R O内容送 累加器 A。 序号 2 1 : 清除进位位 C Y。 序号 : 累加器 A的内容左移一位( 相当于 x 2 ) 。 序号 2 3 : 判断是否有进 位?无进位转 N A DD; 有进位向下执行。 序号 2 4 : 有进位 , DP H加 l 。 序号 2 5 : 转向形成散转地址 。根据 A的内容 , 跳转至 P Rl 、 P R 2 。 序号 2 6 - 3 6 : 直接转 移地址表 。 序号 3 7 H 4 3 : 延时子程序 。 序号 4 4 l 6 : P O - - P 2口显示 l l l 。 序号 4 7 : 调用延时子程序 , 维持点亮。 序号 4 8 : 跳转至 s T。 序号 4 9 - 5 1 : P O - - P 2口显示 2 2 2 。 序号 5 2: 调用延时子程序 , 维持点亮。 序号 5 3 : 跳转至 S T。 序号 5 4 - 5 6 : P O - - P 2口显示 3 3 3 。 序号 5 7: 调用延时子程序, 维持点亮。 序号 5 8 : 跳转 至 S T 。 序 号 5 9 6 l : p O - l 2口曼示 4 4 4 。 序号6 2 : 调用延时子程序, 维持点亮。 序号 6 3 : 跳转 至 S T 。 序号 6 6 : P O - - P 2口显示 5 5 5 。 序号 6 7 : 调用延时子程序, 维持点亮。 序号 6 8 : 跳转 至 S T 。 序号 6 9 - 7 1 : P O - - P 2口显示 6 6 6 。 序号 7 2: 调用 延时子程序 , 维持点 亮。 序号 7 3 : 跳转至 。 序号 7 4 7

温馨提示

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

评论

0/150

提交评论