手把手教你学单片机(四)【套件供应】.pdf_第1页
手把手教你学单片机(四)【套件供应】.pdf_第2页
手把手教你学单片机(四)【套件供应】.pdf_第3页
手把手教你学单片机(四)【套件供应】.pdf_第4页
全文预览已结束

下载本文档

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

文档简介

据 套 件 供 应 你 学单 片机 ( 四 ) 一 周 兴 华 算 术运 算指令 学 习 MC S - 5 1具有 较 强的 加 、 减 、 乘 、 除 四 则 运算指 令及加 1 、 减 1 和 2 1 O进制 调整 指令 。 加 、 减 、 乘 、 除指令会影 响程序状态字 P S W , 只有 加 1 和减 1 指令 不影响 P S W 。 I 加 法 指 令 AD D A, # d a t a 表示 把 立 即数 d a t a 与 累加器 A 的 内容相 加 ,相 加 的结 果 送 累 加 器 A。 AD D A, d i r e c t表 示 把 直 接 寻 址 单 元 d i r e c t 中 的 内容 与 累 加 器 A 的 内 容 相 加 , 相加 的结 果送 累加器 A。 A D D A, 表示 将 寄存 器 中内 容作 为地址 的单元 内容 ( 寄存器 间接寻址 单元) 与 累加 器 A的内容相 加 , 相 加 的结 果 送 累 加 器 A。 A D D A R n表 示将 寄 存 器 R n中 的 内容 与 累加 器 A 的 内容 相加 ,相 加 的 结 果 送 累 加 器 A。 上 述 指 令 , 把 源 字 节 变 量 f 立 即 数 , 直接 、 间接地 址 单元 , 工 作寄 存器 内容) 与 累加 器 相 加 , 结 果 保存 在 累加 器 中 , 影 响 标 志 AC、 C Y、 0 V、 P 。 i 2 带进位 加法 指令 j AD D C A, # d a t a表 示 把 立 即 数i d a t a与 累 加 器 A 的 内容 及 进 位 标 志 C Y 相 加 , 相加 的结 果送 累加 器 A。 l A D D C A, d i f e e t表 示 把 直 接 寻 址 单 元 d i r e c t 中的内容与 累加器 A 的内容及 进 位标 志 C Y相加 , 相加 的结果 送累加 器 A。 ; A DD C A, R i 表 示 将 寄 存 器 R i 中内容作 为地 址 的单元 内容( 寄存 器 间 接 寻址单 元) 与 累加 器 A 的内 容及进 位 标 志 C Y相 加 , 相加 的结 果送 累加器 A。 A DD C A, R n表 示 将 寄 存 器 R n 中 的 内容 与 累加 器 A 的 内容及 进 位 标 志l C Y相 加 , 相加 的结 果送 累加 器 A。 l 3 带借位减法指令 【 S UB B A, # d a t a 表 示 累 加 器 A 中f 一 2 0一电子 制作 2 0 0 3年 第 4期 的 内容 减立 即 数 d a t a及 借 位 标 志 C Y, 结 果送 累加 器 A。 S UB B A, d i rec t 表 示 累 加 器 A 中 的 内 容 减 直接 寻 址 单 元 d i rec t中 的 内 容及借 位标 志 C Y 结 果送 累加 器 A。 S U B B A, R i 表 示 累 加 器 A 中 的 内容 减 寄存 器 间 接寻 址 单 元 中 的 内容 及借 位标 志 C Y, 结果 送 累加器 A。 S U B B A, R n 表 示 累 加 器 A 中 的 内容 减 寄 存 器 R n中 的 内 容 及 借 位 标 志 C Y, 结果 送 累加器 A。 上述 减 法指 令 寻址 方式 ,执行 过程 与加 法指 令类 似 , 只须 把加 操 作改 为减操 作 即可 。 在 加 法 中 C Y= I 表 示 有 进 位 , C Y- 0 表示 无 进 位 , 在 减 法 中 C Y- l 则表 示 有借 位 , C Y= 0表示 无借 位 。 4 乘法 指令 MU L A B 该 指 令 把 累加 器 A 和 寄存 器 B中 的 8位 无 符 号 整 数 相乘 , 1 6 位乘 积 的低 字 节在 累加 器 A 中 ,高 字节 在寄 存 器 B中 ,如 果 积 大 于 2 5 5 ( O F F H ) , 则 使溢 出标志 位 OV置 1 , 否则 清 0, 运 算 结果 总 使进 位标 志 C Y清 0 。 5 除法指 令 D I V AB 指令 把 累加 器 A 中的 8位 无 符号 整 数 除 以寄 存 器 B 中 8位 无符 号 整数 所得 商放 在 累加 器 A 中 , 余 数 存 在 寄存 器 B中 ,标 志 位 C Y和 O V均 清 零 。 若 除数 ( B中 内容 ) 为 o 0 H, 则执 行后 结 果 为 不 定 值 , 并 置 位 溢 出 标 志 OV, 在 任 何 情况 下 , 进 位标志 C Y总清零 。 6 加 1指 令 I N C A表 示 累 加 器 A 中 的 内 容 加 1 , 结果 送 累加器 A。 I N C d i r e c t 表 示 直 接 寻 址 单 元 d i r e c t 中的 内容加 1 , 结果 送 回原单元 中。 I N CR i 表 示 寄 存 器 间 接 寻 址 单元 中 的 内容 加 1 , 结果 送 回原单元 中 。 I NC R n 表 示 寄 存 器 R n中 的 内容加 l , 结 果送 回 Rn中。 I N C D P I R 表 示 数 据 指 针 D f r r R 中的 内容加 1 , 结 果送 回 D f r I R中 。 C指 令把 所 指 出的变 量 加 1 , 结 果 仍 送 回原 地址 单元 运 算结 果 不影 响任 何 标志 位 。指令 共使 用三 种寻 址方 式 : 寄 存 器寻址 、 直接 寻址 、 寄存器 间接寻址 。 7 减 1指令 D E C A 表示 累加器 A 中的 内容 减 1 , 结果 送 累加器 A。 D EC d i rec t表 示 直 接 寻 址 单 元 d i rec t 中的 内容减 1 , 结 果送 回原单 元 中 。 D E CR i 表 示 寄 存 器 间 接 寻 址 单 元 中的 内容减 1 , 结 果送 回原单 元 中 。 D E C R n 表 示寄存 器 R n中的 内 容减 1 , 结果 送 回 R n中 。 上 述 指 令将 指 定 变 量减 1 ,结 果 仍 存 在原指 定单 元 , 不影 响 任何 标志 位 。有 三 种寻址 方 式: 寄存 器 寻 址 、 直接 寻址 、 寄 存器 间接 寻址 。 8 2 1 0进制 调整 指令 D A A 本指 令 是 对 2 1 0进 制 的 加 法 进 行 调 整 的 指 令 。 两 个 压 缩 型 B C D码 按二 进 制数 相 加 ,必 须经 过 本 条 指 令 调整 后 才能得 到 压缩 型 的 B C D码 和 数 。由于指 令要 利用 A C、 C Y 等标志 位 才 能起 到正确 的调整 作用 , 因此它 必 须跟 在 加 法( A D D、 AD D C ) 指令后 面 才能使 用 。指 令的操 作过 程 为 : 若相加 后 累加 器低 4位 大 于 9或 半 进 位 位 A C= l ,则 加 0 6 H 修 正 1 ;若 累 加 器 高 4位 大 于 9或 进 位 位 C Y = I , 则 加 6 0 H修 正 ; 若两 者 同时 发 生或 高 4位虽 等 于 9但 低 4位 修正有 进 位 , 则 应进 行加 6 6修 正 。 好 了 , 介绍 了一 下指 令 , 可 能 初学 的 人 又觉得 枯燥 了。 不急 , 下 面 开始做 实验 , 实 验做 完 后 再 请你 回头 仔 细地 反 复 想 想 这 些 指令 和 实 验 之 间 的关 系 ,多琢 磨 琢 磨 , 这样 理解 吸 收得 就快 。 现 在我 们做 一 个加 法实 验 要 求 实 现 5 2 H、 F C H 两数 相加 。 在我 的文档 中建 立 一 个 文 件 目录 ( 如 S 3 ) , 然 后 建 立 一 个 S 3 u v 2的工程 项 目, 最后 建立 源 程序 文件 ( 如 S 3 IS I I 1 ) 。 维普资讯 输入下面的程序 : 序 号: 1 3 4 6 , 8 9 l O l l l 2 l 3 1 4 l 5 l 6 1 7 0RG 0 O0 o H: L J MP MA I N; 0RG 0 3 0H: MAI N: ACALL DEL; M 0V A,# O5 2H; M 0V R0 # 0F CH; ADD A R0; NOP; M0V P1 A: DEL:M OV R7, # 0 FFH; DELl : M0V R6, # 0 FF H; DEL 2: M OV 1 1 5 # ol FH; DEL3 : DJ NZ 1 1 5 DEL3 ; DJ NZ R6 , DEL2 ; DJ NZ R7, DELl ; RET: END 编译 通过 后 ,将 其烧 录 到 8 9 C 5 1芯 片 中 , 将 芯片插 入 到 S 1型 L E D输 出试验 板 上 在 S 1 实 验板 上 通 电运行 后 , P 1口 的输 出为 0 1 0 0 1 1 1 0 ( 0代表 LE D亮 ) , 那 么输 出结 果正确 吗 ? 让 我们 做一 下 二进制 加 法 ,立 即 数 5 2 H = 0 1 0 1 0 0 1 0 B,立 即数 FC H=I 1 l l l 1 0 0 B, 相 加 后 为 : 01 01 001 0B l 1 l 1 l 1 0 O B l 1 01 00l1 1 0 B 转换 成 1 6进 制 后 即为 1 4 E H。其 中 的 1为 进 位 ,在 P 1口上 是 无 法 观 察 的 ( P 1口只有 8位输出) 。打开模拟仿真界 面进 行软件 仿真 , 从左边 的寄 存 器窗 口可 看 到 P s W , 点 一 下 前 面 的+ 号 , 展 开 后 可 看 到进 位位 C Y= l 。 下面我 们解 释程 序 。 序号 1 ( 程序解释 , 以下同 ) : 程序开始。 序号 2 : 跳 转 到 MA I N主程序 处 。 序号 3 : 主程 序 MAI N从地 址 0 0 3 0 H 开 始 。 序号 4 : 延 时一会 儿 , 做好 观察准备 。 序号 5 :将立 即数 5 2 H传 送 给 累加 器 A。 序 号 6:将立 即数 F C H 传送 给寄 存 器 R0。 序号 7 : 将 寄存 器 R 0中 的 内容与 累 加 器 A 的内容 相加 ,相 加 的结 果 送 累加 器 A。 序号 8 : 空 操作 ( 稍 等一 下 ) 。 序 号 9 :将 累加 器 A中 的 内容传 送 给 P 1口。 序号 1 0 - 1 6: 延 时子程 序 。 序 号 1 7 : 程序 结束 。 再做 一 个乘 法指 令 实验 ,要 求 实 现 两个 数 F F H、 0 3 H相 乘 , 被 乘数 放 A, 乘 数 放 B,乘法 运算 结果 的低 8位 放 A,高 8 位放 B。若 积大 于 2 5 5时 , 结果 溢 出 , OV 位置 1 。建 立一 个文 件 目录 ( 如 s 4 ) , 然后 建立 一 个 s 4 u v 2的 工程 项 目 ,最 后 建 立 源程 序 文件 ( s 4 a s m) 。 输入以下程序: j 序 号 : 1 O RG 0 0 0 O H ; 2 L J MP MAI N ; j 3 ORG 0 3 0 H; 4 M A I N : A C A L L D E L ; 5 M O V A , # 0 F F H ; ; 6 MOV B ,# 0 3 H; 1 7 MUL A B; 8 MOV P 0 , A : l 9 MOV P 1 , B ; 1 1 0 D E L :MOV R 7 # 0 F F H; ; 1 1 D E L l : M O V R 6 ,# 0 F F H ; l 1 2 D E L 2 : MO V R S , # 0 1 F H ; f 1 3 D E L 3 : D J N Z R 5 , D E L 3 ; J l 4 D J N Z R 6 ,DE L 2 ; 1 5 DJ NZ R7 DELl ; 1 6 RE T; 1 7 EN D j 编译通过后 ,将其烧录到 8 9 C 5 1芯f 片中 , 将芯片插入到 s 1型 LE D输出试验I 板上,在 s 1实验板上通电运行后, P O口J 的输 出为 l 1 l 1 l 1 0 1( 即 P O 1的发光点1 亮 ) , P I口 的输 出为 0 0 0 0 0 0 1 0 ( 即除 P 1 1 的 发 光 管 熄 灭 外 其 它 七 个 发 光 管 均 点 亮) 。 说明执行 的结果是 A内容为 F D H, B 的 内容 为 0 2 H, 即 F F H* 0 3 H- 0 2 F D H。这【 个 结 果 对 吗 ? F F H= 2 5 5 , 0 3 H= 3 , 2 5 5 3 : f 7 6 5 , 而 0 2 F D H= 2 * 1 6 2 + 1 5 “ 1 6 + 1 3 = 7 6 5 , 结l 果 正确 。 【 我们解 释一 下程 序 。 序号 l ( 程序解释 , 以下同) : 程序开始 。 : 序号 2: 跳 转到 MA I N 主程序 处 。 序号 3 : 主程序 MAI N从 地址 0 0 3 0 H : 开 始 。 序号 4 : 延时一会 儿 , 做好 观察 准备 。 序号 5: 将 立即数 F F H传送 给 累加 器 A。 序号 6 :将 立 即数 0 3 H传 送 给 寄存 器 B。 序号 7 :进 行乘 法 运算 。结 果 是 l 6 位乘积的低字节在累加器 A中,高字节I 在寄存器 B中,如果积大于 2 5 5 ( o v r a a ) , l 则使 溢 出标 志位 OV置 1 , 否 则清 0 运 算 结果 总 使进 位 标志 C Y清 0 。 序 号 8 :将 累加器 A 中的 内容 传送 给 P O口观 察 。 序 号 9:将 寄 存器 B中 的 内容 传送 给 P1口观 察 。 序 号 1 0 -1 6: 延 时子 程序 。 序 号 1 7 : 程序结 束 。 进 行软 件仿 真 时 ,从 寄存 器 窗 口中 展 开 P s W 后 可 看到溢 出位 O V= I 。 下来 做 加 l指 令的 实验 , 让 P 1口的 8个 LE D发 光管模 拟 二进 制 的加 法运 算。 还是 老样 子做( 反 复练 习有助 于记 牢 ) 在 我 的 文档 中建立 一 个文件 目录 ( S 4 ) 然后 建立 一 个 s 4 u v 2的工 程项 目,最 后 建立 源 程序 文件 ( s 4 a s m) 。 输 入以下 程 序 : 序 号: 1 OR G 0 0 0 O H; 2 L J MP MAI N; 3 ORG 0 30 H; 4 M AI N:MOV A, # 0 OH; 5 P LAY:MOV P1 A: 6 ACALI DEL 7 I NC A: 8 AJ MP PLAY: 9 DEL“MOV R7 , # 0F FH; 1 0 DELl : MOV R6 , # 0F FH; 1 1 DEL 2 : M0V R5 , # O1 FH; 1 2 DEL 3 :DJ NZ R5, DEL3 ; l 3 DJ NZ R6, DEL2 ; l 4 DJ NZ R7 DELl : 1 5 RET; l 6 END 编译 通 过 后 ,将 其 烧 录 到 8 9 C 5 1芯 片 中 , 将 芯 片插 人 到 S l型 LE D输 出 试验 板 上 ,在 S 1实验 板 上 通 电运 行后 Pl口 的输 出从 O O 0 O O O 0 0 ( 8个 LE D均 点亮 ) 起 按 二 进 制 做 加 法,- - , O 0 0 0 0 1 0 o o o 0 o1 0 一 最 后 为 l 1 l 1 l l l 1 ( 8 个 L E D均熄 灭 ) , 然后 重 复循 环 。 我 们对 程序进 行 解释 。 序号 1 ( 程序解释 , 以下同) : 程序开始。 序 号 2: 跳 转 到 MA I N 主程序处 、 序 号 3 : 主程 序 MA I N从地 址 0 0 3 0 H 开 始 。 序号 4: 累加 器 A清零 。 序 号 5 :将 累加 器 A 中的 内容 传送 给 P l口观察 。 序号 6 : 调 用 延 时 子程 序 , 便 于观 察 清楚 。 序 号 7 :累加 器 A 中的 内容 加 l , 结 电子制 作 2 0 0 3年 第 4期 一2 1 维普资讯 果 送 回 累 加 器 A。 序 号 8 : 跳转 到标 号 P L A Y 处进 行循 环运 行 。 序号 9 1 5 : 延时 子程 序 。 序 号 1 6 : 程序 结束 。 最 后我 们体会 一下 2 1 0进制 调整 指 令 的作用 。 在 我 的文 档 中建立 一个文 件 目 录 ( S 5 ) , 然后 建 立 一 个 S 5 u v 2的工 程 项 目, 最 后建立 源 程序文 件 ( s 5 a s m) 。 输 入 以下程序 : 序 号 : 1 OR G 0 0 0 0 H 2 L J MP MAI N: 3 ORG 03 0 H; 4 MAI N: 2 OH,# 0O H; 5 GOON: MOV A, 20 H; 6 ANL A, # 0 FH; 7 MOV DP TR, # TA B ; 8 M OVC A, A+DPTR; 9 MOV PO,A; 1 0 M0V A, 2 OH; 11 SAW P A: 1 2 ANL A, # 0 FH; 1 3 M OVC A, A+D R; 1 4 MO V P 1 A ; 1 5 ACAL L DEL; 1 6 I NC 2 0 H ; 1 7 AJ MP GOON; 1 8 DEL:M OV R7 , # 01 4H; 1 9 DELl : M OV R6 ,#O FFH; 2 0 DEL 2: M OV R5 , # 01 F H; 21 DEL3 : DJ NZ R 5, DEL3 ; 2 2 D J N Z R6 , D EL 2 ; 2 3 D J N Z R7 D EL l ; 2 4 B ET; 2 5 ORG 01 0 0H; 2 6 TAB: DB O COH,OF 9H,0A4H, O BO H ,O 99 H, 0 9 2H, 0 8 2H, 0F SH 2 7 DB 08 0 H, O g OH, O 8 8H,08 3 H, 0 C6 H, 0A1 H, 08 6 H, O S EH 2 8 END 编译 通过 后 ,将 其烧 录 到 8 9 C 5 1芯 片 中 , 将芯 片插 入 到 S 2型 L E D数 码 管试 验板 上 ,通 电后 右边 两个 数码 管从 0 0起 开始 加 法计 数 , P O ( 个 位 ) 加 到 9后 , 再 加 一 次就 变成 为 A,而不 是 我 们 习惯 的 0 。 它一直 要到 F ( 1 5 ) 后 , 再 加 一次才 变成 0 。 即做 的是 1 6进 制加 法 。 同理 , 整个两 位数 码 管计 数 到 9 9后下 一次 并不 显 示 0 0 , 而 是 要 到 F F后 才 计 数 到 0 0 。这 种 计 数 方 法 , 在实 用上有 些不 便 。如 一台频 率计 总 是 按 1 0进制进 行计 数显 示 ,不然 除 观察 外 还要 换算 , 非 常麻 烦 。那 么 有什 么办 法 呢?我 们再做 一 个实验 看看 。不过 先得 将 这 个程序 的指令 先解 释清 楚 。 序号 1 ( 程序解释 , 以下 同) : 程序开始。 一 2 2一电子制 作 2 O O 8年 第 4期 序 号 2 : 跳 转到 MA I N 主程序 处 。 序 号 3 : 主程序 MA I N 从地 址 0 0 3 0 H 开始 。 序 号 4:将 立 即数 0 0 H传 送 给 2 0 H 单元 中。 序 号 5 :将 2 0 H 单元 中的 内容 传送 给 累加器 A。 序 号 6 : 累加器 A 中 的内容 与 立 即 数 0 F H 相 “ 与 ” , 即结 果 是将 A 中 内 容 的 高 4位 置 0 , 保 留低 4位 的 内容 。这 个方 法 的技 术 用语 叫屏蔽 高 4位 。 序 号 7: 将 数 据 表 格 的 首 地 址 ( 0 1 0 0 H)存 入 1 6位数 据地 址 指针 DP 1 1 R 中 。 序 号 8 : 将 累加器 A中 内容 与 DP 1 1 R 中内容 相加 , 得 到 的结果作 为 另一 个 固定 存储 单元 的地 址 , 将 该单元 中的 内容取 出 后传 送 给 累加器 A。显 然 , 如果 D F r r R中 放 一常 数 , 而 A 中为 可 变量 , 则可 进 行 变 址寻 址 , 技术 上 常用作查 表 。 序 号 9 :将 累加 器 A 中内 容传送 给 P 0输 出 口 , 点 亮“ 个” 位 数码管 。 序号 1 O : 再将 2 0 H单 元 中 的 内容传 送给 累加 器 A。 序号 l 1 :将 累加器 A 中内容 的高 4 位和低 4位 互相 交换 。 序号 1 2 : 屏 蔽 A 中高 4位 。 序号 1 3 : 查 表 。 序号 1 4: 将 累加 器 A中 内容 传送 给 P 1输出 口, 点亮 “ 十” 位数 码管 。 序号 1 5 : 调用延时子程序 , 便于观察 。 序号 1 6: 2 0 H单元 内容 加 1 。 序 号 1 7 : 跳转 到标 号 G O O N处 继 续 执 行 。 序号 1 8 2 4 : 延时 子程 序。 序 号 2 5 : 数 据 表 格 的 首 地 址 为 01 00H 。 序 号 2 6 2 7 : 数据表 格 内容 。 序 号 2 8 : 程序 结束 。 再 做 一个 实验 ,建 立 一个 文 件 目录 ( S 6 ) , 然后 建 立 一个 S 6 , u v 2的 工程 项 目 , 最后 建立 源程 序 文件 ( S 6 a N m) 。 输 入 以下程 序 : 序 号 : 1 OR G 0 0 0 0 H 2 LJ MP MAI N; 3 ORG 0 3 01- t ; 4 M AI N: 20 H, # O OH; 5 MOV A 2 0 H: 6 GOON: CLR C; 7 ANL A # OF H; 8 M OV DP TR,* g r AB; 9 MOVC A A+DPTR: 1 0 MOV P 0, A; 1 1 MOV A, 2 0 H; 1 2 S A焉甲A: 1 3 ANL A,# OFH; 1 4 MOVC A A+ DP T 1 5 MOV P1 A: 1 6 ACALL DEL; 1 7 MOV A 2 0H: 1 8 I NC A: 1 9 DA A: 2 0 MOV 2 0HA; 21 AJ MP COON; 2 2 DEL: MOV R7 , # O1 4 H; 2 3 DELl : MOV R6 g OF FH; 2 4 DEL2 : MOV R S, # O1 F H; 2 5 DEL3 : DJ NZ R5 , DED : 2 6 DJ NZ R6 , DEL 2; 2 7 DJ NZ R7 DELl ; 2 8 BET; 2 9 ORG O1 0 0H; 3 0 TAB:DB 0 CO H, 0 F9 H, 0A4 H, O BOH,0 99 H, 0 92 H, 0 8 2H,0F 8H 3 1 DB 08 O H ,0 9 0H, 0 88 H,08 3 H, 0 C6 H, O A1 H, O 8 6H,O8 EH 3 2 END 编译 通 过后 ,将 其烧 录 到 8 9 C 5 1芯 片 中 , 将芯 片插 入 到 S 2型 L E D数码 管试 验板 上 ,通 电后 右边 两个 数码 管从 0 0起 开始 加 法计 数 , P 0( 个位 ) 加 到 9后 , 再 加 一 次 就变成 为 0 。 变 为 1 0进制 加法 。 整个 两位 数码 管 计数 到 9 9后 下 一次 显 示 0 0 , 然后 又开始 新 一轮 的加法 计数 。 整个 计数 过 程 完全按 1 0进制 进 行 。 哈 哈真 灵 , 问题 解 决 了 。 看 看 程 序 解 释 中 怎 么 说 。 序号 1 ( 程序解释 , 以下 同) 堵 序开始。 序号 2 : 跳 转到 MA I N主程 序处 。 序号 3 : 主程 序 MA I N从地 址 0 0 3 0 H 开 始 。 序号 4 :将立 即数 0 0 H 传 送给 2 0 H 单 元 中。 序 号 5 :将 2 0 H单 元 中 的 内容传 送 给 累加 器 A。 序 号 6: 进 位位 C Y 置 0 。 序号 7: 屏 蔽 累加器 A中高 4位 。 序 号 8 : 将数据 表格 的首 地址 ( 0 1 0 0 H) 存入 1 6位数据地址指针 D P r R中 序 号 9: 查 表 。 序 号 1 0 :将 累加 器 A中 内容传送 给 P o输出 口, 点亮“ 个 ” 位数码管 。 序 号 l l : 再 将 2 0 H单 元 中 的内 容传 转 2 4页) 维普资讯 于( ! = ) 。前 四种关 系运 算符 ( , =) 的 优 先 级 相 同 , 后两 种 关 系运 算 符( = = , ) 的优先 级 相 同 ,前 四种 优 先级 高 于后 两 种 。 与 算 术运 算 符 的优 先级 相 比 , 关 系 运算 符 的优 先 级低 于算 术运 算 符 ,但 却 高 于赋值 运算 符 ( = ) 。 例 6 u n s i g n e d c h a r f u n c t i o n ( u n s i g n e d c h a r x , u n s i gned c h ar Y ) i x = y ) r e t u r n x; e l s e r e t u r n Y ; 例 6中函数 f u n c t i o n实现 的功 能是 返 回参量 x 、 Y中 的大 者 ,如果 关 系 运算 ( x - - y ) 为真 ( 1 ) , 则 返 回 x , 否 则返 回 Y 。 八 、 C5 1中的逻 辑运 算 C 5 1 支 持三 种逻 辑 运算 符 :逻辑 与 ( ) 、 逻 辑 或( 1 1) 、 逻 辑 非 ( ! o逻 辑 与 ( ) 和逻 辑或 ( 1 1 ) 是 双 目运算 符 , 要 求 有 两 个运 算 对 象 , 逻 辑 非 ( ! ) 是 单 目运 算 符 , 只 要求 一个运 算对 象 。 只有 当逻 辑 与 ( ) 的两 个 运算 对 象 的值 同时 为真 时 , 逻辑 与 ( ) 的结 果 才 为真 ; 当逻 辑 或( 1 1)的 两个 运算 对 象 的 值 有 一 个 为真 时 , 逻 辑 或 ( 1 1 ) 的 值 就 为真 。 i 例 7 u n s i gned c h a r f u n c t i o n ( u n s i gned c h ar f x , un s i g n ed c h ar Y, u n s i gn ed c h a r z) i f ( x = y ) ( x z )r e t u r n 1 0 0 ; l s e r e t u r n 0 ; 例 7中只有 当( x = y ) 和 ( xz ) 同时 为真 时 , 才返 回 1 0 0 , 否则 返 回 0 。 九 、 C51中 的 位 操 作 C 5 1提 供 了丰 富 的位 操 作 运 算 , 如 下 表 所 示 : 表 4 C5 1的位操 作 运算 符 0x 02 。 十 、 自增运 算 、 自减 运算及 复合运算 自增 运 算 符 ( + +) 的 作 用 是 使 变 量 值 自动 加 1 ; 自减运 算符 ( 一 ) 的作 用是使 变量 的值 自动减 1 。对 于变量 i : i + + ;使 用 i之后再 使 i的值加 1 + + i ;先 使 i的值加 1 , 再使 用 i 。 i - - ; 使 用 i之后再 使 i的值减 1 。 位 操作 功能 运算 符号 运算规则 参 加运 算 的两个运 算 对象 ,若 两者相 应 的位 都 为 l ,则该位 结果 值 为 按位 与 1 否则 为 0 。 参 加运 算 的两 个运 算对 象 , 若 两者 相应 的位 中 , 只要有 一 个 为 l , 则该 按位 或 l 位 结果 值就 为 l 。 参 加运 算 的两 个运 算对 象 , 若 两者 相应 的位 值 相 同 , 则结 果 为 O : 若两 按 位 异或 者 相应 的位值 不 同 , 该 位结 果为 l 。 按 位取 反 是 一个 单 目运 算符 用 来对一 个 二进 制数按 位取 反 , 即 1变 0, 0变 1 。 位左 移 ( ( 将 一个 二进 制数左 移若 干位 , 移位 后 空 白位 补 0, 移 出的位舍 弃 。 位 右 移 将 一个 二进制 数右 移若 干位 , 移位 后 空 白位 补 0, 移 出的位舍 弃 。 例 8 ma i n ( ) uns i gn e d c ha r X = 0 x6 6, y= 0x 02 , z ; z=x =, =, = ,l= 。 采 用 复合赋 值运算 的 目的是 简化 程 序 , 提高 C程 序 的编译效 率 。 a + = b; 相 当于 a = a + b; a = b ; 相 当于 a = a * b; - -。 - - - - - - 。- - - -。 - - - - 。 - - - - 。 - - - -。 。 - 。 。 。 。 。 ( 上接 页) 送给累加器 A。 l 序号 1 2 : 交换 累加器 A中的高 、 低 4位。 1 序号 1 3 : 屏蔽 A中高 4位。 ; 序 号 1 4 : 查表 。 : 序 号 1 5 : 将 累 加器 A 中 内容传 送 给 P1 输 出 口 , 点亮 “ 十 ” 位 数码 管 。 序号 1 6 : 调用延时子程序 , 便于观察 。 序 号 1 7: 2 0 H 单 元 中 的 内容 传 送 给 累加 器 A。 序 号 1 8 : 累加器 A 内容加 1 。 序 号 1 9 : 2 1 0

温馨提示

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

评论

0/150

提交评论