- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 单片机程序设计;项目引入;??START: ORG???? 0100H ???? ?
????MAIN: MOV??? R0,#00H????
???? ?? MOV??? DPTR,#TABLE
????DISP: MOV??? A,R0???????
???? ???????MOVC?? A,@A+ADPTR?
???????? ?? MOV????P1,A???????
?????????? ??ACALL??DELAY??????
???????????? INC????R0?????????
?????????? CJNE???R0,#0AH,DISP
AJMP???MAIN;单片机汇编语言程序设计的基本步骤如下:
(1) 题意分析。熟悉并了解汇编语言指令的基本格式和主要特点,明确被控对象对软件的要求,设计出算法等。
(2) 画出程序流程图。编写较复杂的程序,画出程序流程图是十分必要的。程序流程图也称为程序框图,是根据控制流程设计的,它可以使程序清晰,结构合理,便于调试。
(3) 分配内存工作区及有关端口地址。分配内存工作区,要根据程序区、数据区、暂存区、堆栈区等预计所占空间大小,对片内外存储区进行合理分配并确定每个区域的首地址,便于编程使用。;;语句 3; 简单程序也就是顺序程序,它是最简单、最基本的程序结构,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。不管多么复杂的程序,总是由若干顺序程序段所组成的。本节通过实例介绍简单程序的设计方法。
例3.1 4字节(双字)加法。将内部RAM 30H开始的4个单元中存放的4字节十六进制数和内部RAM 40H单元开始的4个单元中存放的4字节十六进制数相加,结果存放到40H开始的单元中。; (1) 题意分析。
题目的要求如图3.1所示。
; ORG 0000H
LJMP MAIN
MAIN: ORG 0080H
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 ;第四字节加法并送结果,进位
SJMP $ ; 位在CY中
END
;例3.2、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。 ;ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV R0,#30H
MOV R1,#40H
MOV R7,#08H
LOOP:MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOOP
SJMP $;;;例3.3、设a存放在累加器A中,b存放在寄存器B中,要求按下式
计算Y值,并将结果Y存于累加器A 中,试编写程序。
a-b (a≥0)
Y =
a+b (a 0) ; 分支程序实例
1.两分支程序设计
例3.4 两个无符号数比较(两分支)。内部RAM的20H单元和30H单元各存放了一个8位无符号数,请比较这两个数的大小,比较结果显示在实验板上:
若(20H)≥(30H),则P1.0管脚连接的LED发光;
若(20H)(30H),则P1.1管脚连接的LED发光。
如何让LED发光?给该引脚送低电平即可。
; (1) 题意分析。
本例是典型的分支程序,根据两个无符号数的比较结果(判断条件),程序可以选择两个流向之中的某一个,分别点亮相应的LED。
比较两个无符号数常用的方法是将两个数相减,然后判断有否借位CY。若CY=0,无借位,则X≥Y;若CY=1,有借位,则XY。程序的流程图如图3.2所示。 ;图3.2 两数比较流程图; (2) 汇编语言源程序。
X DATA 20H ;数据地
文档评论(0)