单片机原理及其应用第五章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
循环程序 图 1 图 2 例:使00H---7FH单元清0。 数组清0 分析命题 确定算法 画流程图 编写程序 上机调试 7FH … 00H 00H 00H 00H 用MOV @R0,A 做循环主体,修改R0的值,可以将0送入00H—7FH单元中。 MOV R0,#128 CLR A UP:DEC R0 MOV @R0,A CJNE R0,#00H,UP SJMP $ 开始 给R0赋128、 A清0 A送@R0 R0减1 结束 R0=00H? Y N 数组清0 思考:如下程序能使00H—7FH单元清0吗?为什么? MOV R0,#0 MOV R7,#128 CLR A UP:MOV @R0,A INC R0 DJNZ R7,UP SJMP $ 例:内存中以STRING开始的区域有若干个字符和数字,一般称为一个字符串,最末一个字符为$,试统计这些字符数字的数目,结果存人NUM单元 字符串长度 分析命题 确定算法 画流程图 编写程序 上机调试 NUM DATA 2DH STRING DATA 21H ORG 0030H CLR A MOV R0,#STRING LOOP: CJNE @R0,#24H,NEXT SJMP COMP NEXT: INC A INC R0 SJMP LOOP COMP: INC A MOV NUM,A SJMP $ 开始 给R0赋21H 、A清0 A加1,并 送2DH单元 A加1 R0加1 结束 @ R0=24H? Y N 例:从外部RAM中BLOCK单元开始有一个无符号数数据块,其长度存于LEN单元,试求出数据块中最大的数,并存入MAX单元。 求最大值 分析命题 确定算法 画流程图 编写程序 上机调试 LEN DATA 30H MAX DATA 31H BLOCK DATA 0100H ORG 0400H FMAX: MOV DPTR,#BLOCK DEC LEN MOVX A,@DPTR LOOP: CLR C MOV B,A INC DPTR MOVX A,@DPTR SUBB A,B JNC NEXT MOV A,B SJMP NEXT1 NEXT: ADD A,B NEXT1: DJNZ LEN, LOOP MOV MAX,A SJMP $ END 开始 给DPTR赋BLOCK, LEN-1,取出第一个数 A与下一个RAM内容相减 结束 Cy=0? Y N LEN减1 A-B LEN=0? A送MAX单元 N Y 恢复A 多重循环程序设计 【例1】 【功能】设计一个延时10ms的程序。 【分析】延时程序的延时主要与所用晶振和延时程序中的循环次数 有关。已知AT89C51单片机使用的晶振为12MHz,则可知一个机器周期T为1us。 【入口参数】(R0)=毫秒数,(R1)=1ms延时预定值。 【出口参数】定时到,退出程序。 ORG 2000H 指令机器周期数 1 MOV R0 , #0AH ;毫秒数→R0 1 2 DL2: MOV R1 , #MT ;1ms延时值→R1 1 3 DL1: NOP 1 4 NOP 1 5 DJNZ R1 , DL1 ;1ms延时循环 2 6 DJNZ R0 , DL2 ;10ms延时循环 2 循环程序设计 该延时程序是一个双重循环程序,内循环1ms延时的预定值MT需计算: (1+1+2)×1T×MT=1000T ?  MT=250=0FAH 用0FAH代替程序中的MT,则该程序执行后,能实现10ms的延时。 若考虑第1、2、6行延时参数配置指令的时间

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档