- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7_汇编程序设计2
3.3 循环程序设计 3.3.1 循环程序设计方法 3.3.2 循环程序设计实例 3.3.1 循环程序设计方法 循环程序的结构一般包括以下几部分。 循环初始化——是进入循环处理前必须要有的一个环节,用于完成循环前的准备工作。循环初始化包括给工作寄存器(或其他存储单元)设置计数初值、地址指针、数据块长度等。 循环处理——是需要多次重复执行的程序段。循环处理是循环程序的核心,用于完成主要的计算和操作任务。 循环控制——是用条件转移指令控制循环是否继续。每循环一次,根据循环结束条件进行一次判断;当满足条件时,停止循环,继续执行其他程序;否则,再作循环。 循环结束——用于存放循环程序的执行结果,同时恢复相关工作单元的初值。 3.3.1 循环程序设计方法 循环程序一般有两种编写方法。 先循环处理后循环控制(即先处理后判断),其流程如下图所示。 先循环控制后循环处理(即先判断后处理),其流程如下图所示。 循环处理和循环控制构成循环体,若循环程序的循环体内不再包含其他循环程序,则称为单重循环程序。若循环程序的循环体内包含有其他循环程序,则称为多重循环程序,又称为循环嵌套。 多重循环程序中的各重循环不能有交叉,不能从外循环跳入内循环,只能外循环内嵌套内循环。两重循环程序流程如下图所示。 先判断后处理 先处理后判断 两重循环 循环程序流程图 循环程序流程图 程序流程图 3.3.1 循环程序设计方法 循环程序的特点和设计方法。 程序结构紧凑,占用存储单元较少,程序中间有分支,循环程序本质上是分支程序的一种特殊形式。 DJNZ指令使用得较多,凡是分支程序中可以使用的控制转移类指令,循环程序一般都可以使用。 循环控制的形式有多种。计数循环是最常用的一种,它先预置计数初值,再用 DJNZ指令控制循环次数;条件循环也是较常用的一种,它先预置结束循环的条件,再用CJNE指令、JZ指令或JB指令控制循环的结束。 3.3.2 循环程序设计实例 【例3】 片内RAM中存放有10个数据,首地址为30H,编程将数据块传送到片外RAM以1000H为首地址的存储单元中。 解:该程序是单重循环程序,片内RAM首地址30H、片外RAM首地址1000H和数据块长度10都是循环初始化的内容。 循环控制是对数据块长度进行判断,每传送一个数据,存放数据块长度的寄存器减1;10个数据传送完,存放数据块长度的寄存器内容正好为零,退出循环。 3.3.2 循环程序设计实例 【例4】 P1口做输出口,控制8盏灯(P1口输出低电平时灯被点亮),编程使灯按以下规律显示:同一时间只有两盏灯点亮,从P1.7、P1.6控制的灯开始,每盏灯闪烁5次,再移向下两盏灯,同样闪烁5次,循环往复,延时时间1s。晶振频率6MHz。 解:主程序是双重循环程序,循环移位是外循环,灯闪烁5次是内循环,内循环程序不能与外循环程序交叉。 延时1S采用三重循环程序。晶振频率为6MHz时,机器周期为2?s,延时程序的延时时间计算方法如下: {1+[1+(1+(1+1+2)×125+2)×200+2]×5+2}×2?s =1006036?s=1.006036s 3.3.2 循环程序设计实例 【例5】 P1口做为输出口控制步进电动机的四相绕组,编写程序,控制步进电动机每2s正向转动一步。晶振频率6MHz。 解:步距角:θb=360/mZ (°) 电机转速:n=60f/mZ (r/min) 上式中:f 为脉冲频率,单位:Hz或步/s。 m 为拍数,本例中为4。 Z 为转子齿数,本例中取5。 拍数m=4,若使用的步进电动机转子齿数Z为5,则步距角θb=18°。题目要求步进电动机每2s正向转动一步,即T=2s,则f=0.5Hz,电机转速n=1.5r/min。 用三重循环设计2s的循环程序。晶振频率为6MHz时,机器周期为2?s,延时程序的延时时间计算方法如下: {1+[1+(1+1+2×123+2)×200+2]×20+2}×2?s =2000126?s=2.000126s 3.3.2 循环程序设计实例 【例6】 片内RAM从50H单元开始存放了10个无符号数,编程将它们按由小到大的顺序排列。 解:数据排序的方法有很多,本例采用常
您可能关注的文档
最近下载
- 镇痛治疗规范.docx VIP
- 数字文化与娱乐:2025年动漫IP衍生品市场洞察报告.docx
- 护理安全管理在新生儿病房的应用课件教学教材演示幻灯片.pptx VIP
- 2025至2030中国动物园行业产业运行态势及投资规划深度研究报告.docx
- NB-T 47047-2015 承压设备用镍及镍合金无缝管.pdf VIP
- 气道净化护理(2024年中华护理学会团体标准).pptx VIP
- 高中数学函数的单调性教学设计比赛一等奖.doc VIP
- 《电子商务概论》(附微课 第5版)课件 第7、8章 新媒体运营、 电子商务安全.pdf
- 深圳市育才教育团育才三中语文新初一分班试卷含答案.doc VIP
- 测绘地形图图技术总结.doc VIP
文档评论(0)