第七讲 循与查表程序设计.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文档。上传文档
查看更多
第七讲 循与查表程序设计

第七讲 循环与查表程序设计 本讲要求: 掌握循环程序结构 掌握DJNZ指令的使用 掌握延时程序设计的方法 掌握LED数码显示器字型码概念 掌握查表指令MOVC的使用 掌握在ROM中设置表格的方法 一、循环程序设计 例1 求算数和 题目:若从内部存储器20H单元开始的顺序32个单元中,存放着8位二进制无符号数。现欲求这32个无符号数的算术和,并将和存放着片外RAM的8000H和8001H单元中,8000H中存放高字节。 例2、延时程序的设计 已知51单片机使用的晶振频率为6MHz,采用循环程序进行软件延时,延时时间为0.2ms。 0.2ms延时程序 多重循环结构 2、使用多重循环。先实现1ms延时,然后循环执行1ms程序20次,也可实现20ms的延时,因1ms延时也是使用循环结构,故20ms延时共使用了两种循环: 20ms延时程序 循环程序设计注意事项 循环体一定不能包含其循环变量赋初值的语句; 外循环一定要包含内循环变量赋初值的语句; 赋循环变量时一定要先赋值外循环变量,后赋值内循环变量; 循环体内或循环控制部分必须要有改变循环变量使循环朝向结束的方向发展。 二、查表程序设计 二、查表程序设计 字形与字段关系 例2 利用1个LED数码管显示“8” LED显示程序中查表指令的应用 例3 0~9循环显示 题目:利用1个LED数码管,已知为共阴极结构,要求循环显示数字0、1、……、9,数字变换间隔为1s。 例3 0~9循环显示流程图设计 * * MOV R0, #60H MOV R1,#32 L0: MOV @R0,#0 INC R0 DJNZ R1,L0 SJMP $ 循环初态(初始条件) 1、循环程序结构 设置循环次数计数器、地址指针初值和其他初始数据、地址等 循环体 完成主要的计算或操作任务,同时修改地址指针 循环控制部分 完成主要的计算或操作任务,同时修改地址指针 1、流程图设计 R0——数据指针 R1——循环变量 R2——存放和的低字节 R3——存放和的高字节 流程图 2、程序清单 ORG 0 MOV R0 , #20H MOV R1 , #32 CLR A CLR R2 CLR R3 LOOP: MOV A , R2 ADD A , @R0 MOV R2 , A MOV A , R3 ADDC A , #00H MOV R3 , A INC R0 DJNZ R1 , LOOP MOV DPTR , #8000H MOV A , R3 MOVX @DPTR , A INC DPTR MOV A , R2 MOVX @DPTR , A SJMP $ ;R0指向数据区首地址 ;R1赋值32,循环次数 ;清零累加和 ;和低字节送至A ;和低字节与下一个数相加 ;新和低字节送R2 ;和高字节送至A ;和高字节与本次进位位相加 ;新和高字节送R3 ;R0自增1,指向下一个数 ;32次到否?未到则跳至LOOP循环 ;将和送至片外RAM 故:机器周期数= 循环次数:设每次循环需4个机器周期,则需循环25次。 解: ∵f=6MHz ∴机器周期 ORG 0000H START: MOV R1,#25 DELAY: NOP ;1个机器周期 NOP ;1个机器周期 DJNZ R1, DELAY SJMP $ ;结束部分 END 请大家自己编程,延时1ms 题目:已知f=6MHz,请用循环程序实现20ms延时。 解: 1、首先计算需机器周期10000个,按照最大循环次数256计算,则每次循环需耗费机器周期39个,则需NOP指令37个,显然效率太低。 1ms延时循环——内循环 循环执行1ms程序20次——外循环 ORG 0000H MOV R0,#20 DELAY0: MOV R1,#250 DELAY1: NOP NOP DJNZ R1, DELAY1

文档评论(0)

kxiachiq + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档