7_汇编程序设计2.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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个无符号数,编程将它们按由小到大的顺序排列。 解:数据排序的方法有很多,本例采用常

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档