单片机原理及应用系统设计第四章单片机程序设计语言.ppt

单片机原理及应用系统设计第四章单片机程序设计语言.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.1 汇编语言程序设计 4.2 C51语言程序设计 习题四 4.1.1 汇编语言程序设计步骤   根据要求, 采用汇编语言编写程序的过程称为汇编语言程序设计。汇编语言程序设计的基本流程如图4-1所示。 4.1.2 汇编语言程序结构   单片机汇编程序由主程序、若干子程序和中断服务程序组成, 其总体结构如图4-2所示。   1. 主程序   单片机主程序一般由一些顺序程序组成。主程序通常有两种结构形式: 中断方式和循环方式。中断方式是指主程序根据中断处理的标志执行不同的功能模块, 如图4-3(a)所示。循环方式则指主程序依次调用各功能模块,如图4-3(b)所示。   2. 子程序   一般情况下, 单片机的子程序都是具有一定功能的程序模块。子程序的结构如图4-4所示, 它的子程序名、 子程序的具体功能、子程序返回组成。   3. 中断服务程序   中断服务子程序也是具有一定功能的程序模块, 其结构如图4-5所示。 由图可以看出, 在结构上中断服务程序与子程序基本相同。但中断服务程序的进入方式与子程序不同,子程序的进入方式是由主程序或其他子程序进行调用,其进入时间是可控的。 4.1.3 汇编语言程序设计方法   1. 顺序程序设计   【例 4-1】 四字节(双字)加法。将内部RAM 30H开始的4个单元中存放的四字节十六进制数和内部RAM 40H单元开始的四个单元中存放的四字节十六进制数相加, 结果存放到40H开始的单元中。 ORG 0000H LJMP MAIN ; 跳转到主程序中 MAIN: MOV A, 30H ADD A, 40H MOV 40H, A ; 最低字节加法并送结果    MOV A, 31H    ADDC A, 41H    MOV 41H, A ; 第二字节加法并送结果    MOV A, 32H    ADDC A, 42H    MOV 42H, A ; 第三字节加法并送结果    MOV A, 33H    ADDC A, 43H    MOV 43H, A ; 第四字节加法并送结果, 进位位在CY中    END   2. 分支程序设计   分支程序设计是指根据指定的条件选择程序流向的程序设计方法。   1) 简单分支程序   简单分支程序在设计中应用最广, 拥有的指令也最多。简单分支程序结构一般为一个入口、 两个出口。简单分支程序有两种典型形式, 即并列分支和跳转分支, 如图4-6所示。   【例 4-2】 两个无符号数比较。内部RAM的20H单元和30H单元各存放了一个8位无符号数, 请比较这两个数的大小, 若(20H)=(30H), 则将P1.0置0; 若(20H)(30H), 则将P1.1置0。 X DATA 20H ; 数据地址赋值伪指令DATA Y DATA 30H ORG 0000H LJMP MAIN ; 跳转到主程序中 MAIN: MOV A, X ; (X) →A CLR C ; Cy=0 SUBB A, Y ; 带借位减法, A-(Y)-Cy →A JC L1 ; Cy=1, 转移到L1 CLR P1.0 ; Cy=0, (20H)=(30H), P1.0置0 SJMP FINISH ; 直接跳转到结束等待 L1: CLR P1.1 ; (20H)(30H), P1.1置0 FINISH: SJMP$ END   2) 多路分支程序   在实际应用中, 常常需要从两个以上的出口中选一个, 将这种称为多分支程序或散转程序。多路分支程序的基本形成如图4-7所示。   【例 4-3】 两个有符号数比较。内部RAM的20H单元和30H单元各存放了一个8位有符号数,请比较这两个数的大小, 若(20H)=(30H), 则P1.0置0; 若(20H)(30H), 则P1.1置0;若(20H)(30H), 则P1.2置0。 X DATA 20H Y DATA30H ORG 0000H LJMP MAIN ; 跳转到主程序中  MAIN: MOV A, X XRL A, Y ; (X)与(Y)进行异或操作 JB ACC.7, NEXT1 ; 累加器A的第7位为1, 两个数 ;符号不同, 转移到NEX

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档