- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.1.2 分支程序 分支结构可以分成单分支、双分支和多分支几种情况 : 4.1.3 循环程序 按某种控制规律重复执行的程序称为循环程序。循环程序有先执行后判断和先判断后执行两种基本结构 : 一、计数控制的循环程序 例3-13 编程ACSII BCD转换为二进制(65536), 已知内部RAM41H单元开始存ASCII BCD数,ASCII BCD位数存40H,结果存R6R7中 算法:((an*10+an-1)*10+an-2)*10+an-3...,n=5 ORG 1000H MOV R6,#0 MOV R7,#0 MOV R5,40H;位数 MOV R0,#41H;地址指针 LOOP: MOV A,R7 MOV B,#10 MUL AB MOV R7,A MOV A,R6 MOV R6,B MOV B,#10 MUL AB ADD A,R6 MOV R6,A MOV A,R7 ADD A,@R0 MOV R7,A MOV A,R6 ADDC A,#0 MOV R6,A INC R0 DJNZ R5,LOOP SJMP $ END 二、条件控制的循环程序 ORG 1000H CLR A MOV 31H,A MOV 32H,A MOV 33H,A MOV R0,#33H MOV A,30H LOOP:MOV B,#10 CJNE A,#0,NEZ MOV A,32H SWAP A ORL A,33H MOV R7,A MOV R6,31H SJMP END1 NEZ: DIV AB MOV @R0,B DEC R0 SJMP LOOP END1:SJMP $ END 三、双重控制的循环程序 四、多重循环程序 例3-8 无符号数排序程序。在片内RAM中起始地址为20H的20个单元中存放有无符号数。试对这些无符号数进行升序排序。 方法:常用的方法是冒泡排序法。执行时从后向前进行相邻数的比较,如数据的大小次序与要求的顺序不符就将这两个数互换,否则不互换。对于升序排序,通过这种相邻数的互换,使小数向前移动,大数向后移动。从后向前进行一次冒泡,就会把最小的数换到最前。再进行一次冒泡就会把次小的数排在数第二的位置。 ORG 1000H PAO: MOV R7,#19 LOOP1:MOV A,R7 MOV R2,A MOV R0,#33H LOOP: MOV A,@R0 DEC R0 MOV 50H,@R0 CJNE A,50H,$+3 JNC NECH MOV @R0,A INC R0 MOV @R0,50H DEC R0 NECH: DJNZ R2,LOOP DJNZ R7,LOOP1 SJMP $ END 例 50ms延时程序。 若晶振频率为12MHz,则一个机器周期为1μs。采用循环计数法实现延时,循环次数可以通过计算获得,并选择先执行后判断的循环结构。程序段如下: DEL: MOV R7,#200 ;1 μs DEL1: MOV R6,#123 ;1 μs NOP ;1 μs DEL2: DJNZ R6,DEL2 ;2μs,计(2×123)μs DJNZ R7,DEL1 ;2μs, RET ;2μs 4.3.4 子程序及其调用 4.4 常用程序举例 4.4.1 算术运算程序 一、多字节数的加、减运算 80C51单片机的指令系统提供的是字节运算指令,所以在处理多字节数的加减运算时,要合理地运用进位(借位)标志。 MOV R0,#DATA1 ; MOV R1,#DATA2 ; MOV R7,#N ; 置字节数 CLR C ; LOOP:MOV A,@R0 ; ADDC A,@R1 ;求和 MOV @R1,A ;存结果 INC R0 ;修改指针 INC R1 ; DJ
原创力文档


文档评论(0)