单片机编程课件.ppt

上传人:小** 文档编号:23764315 上传时间:2021-06-10 格式:PPT 页数:60 大小:509KB
收藏 版权申诉 举报 下载
单片机编程课件.ppt_第1页
第1页 / 共60页
单片机编程课件.ppt_第2页
第2页 / 共60页
单片机编程课件.ppt_第3页
第3页 / 共60页
资源描述:

《单片机编程课件.ppt》由会员分享,可在线阅读,更多相关《单片机编程课件.ppt(60页珍藏版)》请在装配图网上搜索。

1、 - 1 - 课 程 讲 义第 三 章 : 单 片 机 汇 编 语 言 与程 序 设 计 基 础 - 2 - 主 要 内 容v3.1 程 序 设 计 语 言v3.2 汇 编 语 言 的 语 句 结 构v3.3 伪 指 令v3.4 汇 编 语 方 程 序 设 计 步 骤v3.5 顺 序 程 序v3.6 分 支 程 序v3.7 循 环 程 序v3.8 数 制 转 换 程 序v3.9 位 操 作 程 序 v3.10 子 程 序 - 3 - 3.1 程 序 设 计 语 言v按 照 语 言 的 结 构 及 其 功 能 可 以 分 为 三 种 :v1机器语言:机 器 语 言 是 用 二 进 制 代 码 0

2、和 1表 示 指 令 和 数 据 的 最 原 始 的 程 序 设 计 语 言 。v2汇编语言:在 汇 编 语 言 中 , 指 令 用 助 记 符表 示 , 地 址 、 操 作 数 可 用 标 号 、 符 号 地 址 及 字符 等 形 式 来 描 述 。v3高级语言:高 级 语 言 是 接 近 于 人 的 自 然 语言 , 面 向 过 程 而 独 立 于 机 器 的 通 用 语 言 。 - 4 - 3.2 汇 编 语 言 的 语 句 结 构v1汇编语言的指令类型v MCS-51单 片 机 汇 编 语 言 , 包 含 两 类 不 同 性 质的 指 令 。v( 1) 基 本 指 令 : 即 指 令

3、系 统 中 的 指 令 。 它 们都 是 机 器 能 够 执 行 的 指 令 , 每 一 条 指 令 都 有 对应 的 机 器 码 。v( 2) 伪 指 令 : 汇 编 时 用 于 控 制 汇 编 的 指 令 。它 们 都 是 机 器 不 执 行 的 指 令 , 无 机 器 码 。v进 一 步 区 别 : 指 令 的 控 制 对 象 是 单 片 机 , 伪 指令 的 控 制 对 象 是 汇 编 程 序 。 - 5 - v2汇编语言的语句格式v汇 编 语 言 源 程 序 是 由 汇 编 语 句 ( 即 指 令 ) 组 成的 。 汇 编 语 言 一 般 由 四 部 分 组 成 。v其 典 型 的

4、汇 编 语 句 格 式 如 下 :v 标 号 : 操 作 码 操 作 数 ; 注 释v START: MOV A, 30H ; A( 30H) - 6 - 3.3 伪 指 令v1ORG:汇编起始地址v用 来 说 明 以 下 程 序 段 或 数 据 块 在 程 序 存 储 器 中存 放 的 起 始 地 址 。v格 式 : 标 号 : ORG 16位 地 址v例 如 程 序 : ORG 1000Hv START: MOVA, #20Hv MOVB, #30Hv v2EQU:赋值 格 式 : 字 符 名 称 EQU 项v给 变 量 标 号 赋 予 一 个 确 定 的 数 值 。v例 : START

5、EQU 1000H - 7 - v 3DB:定义数据字节v格 式 : 标 号 : DB 8位 二 进 制 数 表v例 1: ORG 1000H DB 21H, 25H, 36H, -5 注 : 负 数 是 以 一 字 节 补 码 数 的 形 式 存 放 ; 存 储 位 置 是 在 程 序 存 储 器 。v例 2: ORG 2000H TAB: DB 22H, 78, 01011100B, “5” , “A B” 注 : 单 位 为 字 节 , 分 隔 用 “, ”, 形 式 可 为 :二 进 制 、 十 进 制 、 十 六 进 制 及 ASCII码 。 如 “5” ASCII码 为 35H。

6、- 8 - v例 3: ORG 1000H TAB; DB 23H, 73, “6”, “B” TABl: DB 110B 以 上 伪 指 令 经 汇 编 以 后 , 将 对 从 1000H开 始 的 若干 内 存 单 元 赋 值 : (1000H)=23H (1001H)=49H (1002H)=36H (1003H)=42H (1004H)=06H 其 中 36H和 42H分 别 是 字 符 6和 B的 ASCII码 , 其 余的 十 进 制 数 ( 73) 和 二 进 制 数 ( 110B) 也 都 换 算 为 十六 进 制 数 了 - 9 - 4DW:定义数据字 格 式 : 标 号 :

7、 DW 16位 二 进 制 数 表 例 如 , ORG 1000H TAB: DW 1234H , 0ABH , 10 汇 编 后 : ( 1000H) =12H (1001H ) = 34H (1002H ) = 00H ( 1003H ) = ABH (1004H ) =00H (1005H) =0AH DB、 DW伪 指 令 都 只 对 程 序 存 储 器 起 作 用 , 不 能用 来 对 数 据 存 储 器 的 内 容 进 行 赋 值 或 进 行 其 它 初 始 化的 工 作 。 - 10 - v 5DS:定义存储区v从 指 定 的 地 址 单 元 开 始 , 保 留 一 定 数 量

8、存 储 单元 。v例 : ORG 0310H DS 3 即 从 0310H地 址 开 始 空 3个 字 节 以 便 使 用 。v 6BIT:位定义v 确 定 字 符 名 为 确 定 的 位 地 址 值 。v例 : BNAM BIT 25H; BNAM 为 25H位 地 址 。 - 11 - v 7END:汇编结束 格 式 : 标 号 : END 表 达 式 功 能 : 结 束 汇 编 。 例 如 : ORG 2000H START: MOV A , # 00H END START 表 示 标 号 START开 始 的 程 序 段 结 束 。 - 12 - 3.4 汇 编 语 方 程 序 设 计

9、 步 骤v1分析问题v2确定算法v3设计程序流程图v4分配内存单元v5编写汇编语言源程序v6 程序优化v7调试程序 - 13 - 3.5 顺 序 程 序v顺 序 程 序 是 一 种 最 简 单 , 最 基 本 的 程 序 。v特 点 : 程 序 按 编 写 的 顺 序 依 次 往 下 执 行 每 一 条指 令 , 直 到 最 后 一 条 。 v【 例 3.5.1】 将 30H单 元 内 的 两 位 BCD码 拆 开并 转 换 成 ASCII码 , 存 入 RAM两 个 单 元 中 。 程序 流 程 如 图 3-5-1所 示 。 参 考 程 序 如 下 :v ORG 2000Hv MOV A,

10、30H ; 取 值v ANL A, #0FH ; 取 低 4位 - 14 - vADD A, #30H ; 转 换 成 ASCII码vMOV 32H, A ; 保 存 结 果vMOV A, 30H ; 取 值vSWAP A ; 高 4位 与 低 4位 互 换vANL A, #0FH ; 取 低 4位 ( 原 来 的 高 4位 )vADD A, #30H ; 转 换 成 ASCII码vMOV 31H, A ; 保 存 结 果 vSJMP $ vEND 结 束 取 数 据 低 4位转 换 成 ASCII码存 ASCII码取 数 据 高 4位转 换 成 ASCII码存 ASCII码开 始 图3-5-

11、1 拆字程序流程图 - 16 - v【 例 3.5.2】 设 X、 Y两 个 小 于 10的 整 数 分 别 存于 片 内 30H、 31H单 元 , 试 求 两 数 的 平 方 和 并将 结 果 存 于 32H单 元 。v 解 : 两 数 均 小 于 10, 故 两 数 的 平 方 和 小 于 200,可 利 用 乘 法 指 令 求 平 方 。 程 序 流 程 如 图 4-2所示 。 参 考 程 序 如 下 :v ORG 2000Hv MOV A, 30H ; 取 30H单 元 数 据v MOV B, A; 将 X送 入 B寄 存 器 - 17 - vMUL AB ; 求 X2, 结 果 在

12、 累 加 器 中vMOV R1, A ; 将 结 果 暂 存 于 R1寄 存器 中vMOV A, 31H ; 取 31H单 元 数 据vMOV B, A; 将 Y送 入 B寄 存 器vMUL AB ; 求 Y2, 结 果 在 累 加 器 中vADD A, R1 ; 求 X2+ Y2vMOV 32H, A ; 保 存 数 据vSJMP $ ; 暂 停vEND 结 束取 数 据 X求 X2暂 存 X2取 数 据 Y求 Y2求 X2+Y2 开 始保 存 平 方 和 图3-5-2 例3.2 程序流程图 - 19 - 例 3.5.3 ( P57 例 2)v编 制 一 段 程 序 , 要 求 在 端 口

13、线 P1.0和 P1.1上 分 别 产 生 周期 为 200us 和 400us的 方 波 , 设 单 片 机 外 接 晶 体 频 率 为12MHz。v分 析 : 方 法 定 时 中 断 设 置 T0为 工 作 方 式 3, 即 TL0定 时 为 200us,TH0定 时 为 400us, 到 时 取 反 。 初 值 (64H)求 补 =9CH (按 8位 求 补 ) (C8H)求 补 =38Hv程 序 : ORG 0000HAJMP STARTORG 000BHAJMP IT0 ORG 001BH AJMP IT1 - 20 - 例 3.5.3 ( 续 )ORG 0100HSTART:MOV

14、 SP , #40 ;MOV TMOD ,#03HMOV TL0 ,#9CHMOV TH0 ,#38HMOV TCON ,#50HMOV IE, #8AHSJMP $ ORG 0130HIT0: MOV TL0 ,#9CHCPL P1.0 RETI - 21 - 例 3.5.3 ( 续 )IT1: MOV TH0 ,#38HCPL P1.1RETIEND - 22 - 3.6 分 支 程 序v1分支程序的基本形式v分 支 程 序 有 三 种 基 本 形 式 , 如 图 3-6-1所 示 。v分 支 程 序 的 设 计 要 点 如 下 :v( 1) 先 建 立 可 供 条 件 转 移 指 令 测

15、 试 的 条 件 。 v( 2) 选 用 合 适 的 条 件 转 移 指 令 。v( 3) 在 转 移 的 目 的 地 址 处 设 定 标 号 。 条 件 满 足 ?A Y N( a) 条 件 满 足 ?A BNY( b)( c)A0 A1 AnK=0 K=1 K=nK=?图 3-6-1 分 支 程 序 结 构 流 程 图 - 24 - v2双向分支程序设计举例v【 例 3.6.1】 设 X存 在 30H单 元 中 , 根 据 下 式v X+2 X0vY = 100 X=0 求 出 Y值 , 将 Y值 存 入 31H单 元 。v X XT55,程 序 转 向 JW( 降 温 处 理 程 序 )

16、 ; 若 TaT55, 转 降 温 处 理 程 序 CJNE A, 54H, LOOP2 ; TaT54, 转 向 LOOP2 AJMP FH ; Ta=54, 返 回LOOP2: JC SW ; 若 (CY)=1, 表 明 TaT54, 转 升 温 处 理 程 序FH: RET ; T55TaT54, 返 回 主 程 序 - 29 - 例 3.6.3 (p59 例 2)v单 片 机 单 步 运 行 程 序 电 路 如 图 , 程 序 如 下 , 画出 其 程 序 流 程 图 , 并 说 明 为 什 么 每 按 下 再 松 开一 次 键 后 , 单 片 机 执 行 一 条 指 令 。v程 序

17、: ORG 0000H SJMP STARTORG 0003HJNB P3.2, $ JB P3.2, $RETISTART:MOV IE ,#81HMOV TCON, #00HLOOP:INC A MOV P1 ,ASJMP LOOPEND - 30 - 例 3.6.3 (续 : )v分 析 :q不 按 键 , P3.2为 低 电 平 , 进 入 中 断 , 并 停 在 JNB P3.2 ,$上 ;q按 下 键 , P3.2为 高 电 平 , 跳 出 循 环 , 并 停 在 JB P3.2 ,$上 ;q松 开 键 , P3.2为 低 电 平 , 跳 出 循 环 , 并 从 中 断 返 回 ;

18、 根 据 从 中 断 返 回 且 又 立 即 进 入 中 断 的 条 件 , 中 断 必 须 是 在执 行 完 中 断 点 处 的 一 条 指 令 后 才 能 完 成 , 故 可 实 现 单 步 。 - 31 - v3多向分支程序设计举例v【 例 3.6.3】 根 据 R0的 值 转 向 7个 分 支 程 序 。vR010, 转 向 SUB0;vR020, 转 向 SUB1;v vR0=60, 转 向 SUB6;v解 : 利 用 JMP A+DPTR 指 令 直 接 给 PC赋 值 ,使 程 序 实 现 转 移 。 程 序 流 程 如 图 3-6-3所 示 。 - 32 - v参 考 程 序

19、如 下 :v ORG 2000Hv MOV DPTR, #TAB; 转 移 指 令 表 首 地 址v MOV A, R0 ; 取 数 v MOV B, #10 v v DIV AB ; A10, 商 在 A中v CLR Cv RLC A ; A2Av JMP A+DPTR ; PC A+DPTRvTAB: AJMP SUB0 ; 转 移 指 令 表v AJMP SUB1v AJMP SUB2 v v AJMP SUB5 v AJMP SUB6 K=?转 SUB0 转 SUB1 转 SUB6K=0 K=1 K=6开 始图 3-6-3 多 向 分 支 程 序 流 程 图 - 34 - 3.7 循

20、环 程 序v1循环程序的结构(如 图 3-7-1所 示 )v 循 环 程 序 一 般 包 括 如 下 四 个 部 分 :v( 1) 初 始 化 ( 2) 循 环 体v( 3) 循 环 控 制 ( 4) 结 束v 循 环 程 序 按 结 构 形 式 , 有 单 重 循 环 与 多 重 循环 。v 在 多 重 循 环 中 , 只 允 许 外 重 循 环 嵌 套 内 重 循环 。v 不 允 许 循 环 相 互 交 叉 , 也 不 允 许 从 循 环 程 序的 外 部 跳 入 循 环 程 序 的 内 部 ( 如 图 3-7-2所 示 ) 。 ( a) 当 型 循 环 结 构 ( b) 直 到 型 循

21、环 结 构循 环 结 束 ?循 环 体 YN 初 始 化修 改 循 环 参 数结 束 部 分开 始 结 束 循 环 结 束 ?循 环 体 Y初 始 化修 改 循 环 参 数结 束 部 分 开 始N 结 束图 3-7-1 循 环 结 构 程 序 流 程 图 外 循 环中 循 环内 循 环 外 循 环内 循 环外 循 环内 循 环内 循 环( a) 嵌 套 正 确 ( b) 嵌 套 正 确 ( c) 交 叉 不 正 确图 3-7-2 多 重 循 环 示 意 图 - 37 - v2循环程序设计举例v【 例 3.7.1】 有 一 数 据 块 从 片 内 RAM的 30H单 元开 始 存 入 , 设 数

22、 据 块 长 度 为 10个 单 元 。 根 据 下式 :v X+2 X0vY= 100 X=0 求 出 Y值 , 并 将 Y值 放 回 原 处 。v X X0Y= 100 X=0 求 出 Y值 , 并 将 Y值 放 回 原 处 。 X X0 - 56 - vSTART: MOV A, R1 ; 取 数v ACALL DISPOSE ; 调 用 判 断 、 处 理 子 程 序vSAVE: MOV R1, A ; 保 存 数 据v INC R1 ; 修 改 地 址 指 针 , 指 向 下 一 个 地 址v DJNZ R0, START ; 数 据 未 处 理 完 , 继 续 处 理v SJMP

23、; 暂 停vORG 0200HvDISPOSE: JB ACC.7, NEG ; 若 为 负 数 ,转 NEG - 57 - v JZ ZER0 ; 若 为 零 , 转 ZER0v ADD A, #02H ; 若 为 正 数 , 求 X+2v AJMPBACK; 转 到 SAVE, 保 存 数 据vZER0: MOV A, #64H ; 数 据 为 零 , Y=100 v AJMPBACK; 转 到 SAVE, 保 存 数 据vNEG: DEC Av CPL A ; 求 XvBACK: RET - 58 - 【 例 3.10.2】 将 内 部 数 据 存 储 器 某 一 单 元 中 的 一 个

24、 字 节的 十 六 进 制 数 转 换 成 两 位 ASCII码 , 结 果 存 放 在 内 部 数 据 存储 器 的 两 个 连 续 单 元 中 。 假 设 一 个 字 节 的 十 六 进 制 数 在 内 部 数 据 存 储 器 40H单 元 ,结 果 存 于 41H、 42H单 元 中 , 用 堆 栈 进 行 参 数 传 递 。 MAIN: MOV SP, #55H MOV R1, #41H ; R1为 存 结 果 指 针 MOV A, 40H ; 取 要 转 换 的 数 据 SWAP A ; 先 转 换 高 位 字 节 PUSH ACC ; 压 栈 LCALL HEASC ; 调 用 低

25、 半 字 节 转 换 成 ASCII码 程 序 - 59 - POP ACC ; 要 转 换 的 数 据 出 栈 MOV R1 , A ; 存 高 半 字 节 转 换 结 果 INC R1 PUSH 40H LCALL HEASC POP ACC MOV R1, A ; 存 低 半 字 节 转 换 结 果 END HEASC: MOV R0, SP DEC R0 DEC R0 XCH A, R0 ; 取 被 转 换 数 据 AND A, # 0FH ; 保 留 低 半 字 节 ADD A, #2 ; 修 改 A MOVC A, A+PC ; 查 表 XCH A, R0 ; 结 果 送 回 堆 栈 RET TAB: DB 30H, 31H, 32H, - 60 - Thank You! 交 流 提 问

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

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

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


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