历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2018年03月10日 | 循环程序设计

2018-03-10 来源:eefocus

  循环程序结构的特点是程序中含有可以反复执行的程序段,该程序段通常称为循环体。例如,求100个数的累加和,没有必要连续安排100条加法指令,可以只用一条加法指令并使其循环执行100次。因此循环程序不仅可以缩短程序长度和使程序所占的内存单元数量更少,也能使程序结构紧凑,可读性强。
  
  1.循环程序的结构
  
  循环结构程序主要由以下四部分组成。
  
  (1)循环初始化循环初始化
  
  程序段用于完成循环前的准备工作。例如,循环控制计数初值的设置、地址指针的起始地址的设置、为变量预置初值等。
  
  (2)循环处理
  
  这是循环程序结构的核心部分,完成实际的处理工作,它是需反复循环执行的部分,故又称循环体。这部分程序的内容,取决于实际要处理的问题本身。
  
  (3)循环控制
  
  在重复执行循环体的过程中,不断修改循环控制变量,直到符合结束条件,就结束循环程序的执行。循环结束控制方法分为循环计数控制法和条件控制法。
  
  (4)循环结束
  
  这部分是对循环程序执行的结果进行分析、处理和存放。
  
  上面介绍的四部分有时能较明显地划分,有时则相互包含,不一定能明显区分。
  
  2.循环结构的控制
  
  根据循环控制部分不同,循环程序结构可分为循环计数控制结构和条件控制结构。左图是计数循环控制结构,图右是条件控制结构。
  
  (1)计数循环控制结构  计数循环控制结构是依据计数器的值来决定循环次数,一般为减1计数器,计数器减到O时,结束循环。计数器的初值是在初始化时设定的。
  
  MCS-51指令系统提供了功能极强的循环控制指令:
  
  例如,计算n个数据的和,计算公式为
  
 

   按这个公式,可以很容易地画出相应的程序框图,如图右所示。从这个框图中,也可以看出循环程序的基本结构。
  
  1. 求n个单字节无符号数xi的和,xi按i顺序存放在AT89S51单片机内部RAM从50H开始的单元中,n放在R2中,现将要求的和(双字节)放在R3R4中,程序如下:
  
  在这里,用寄存器R2作为计数控制变量,RO作为变址单元,用它来寻址xi。一般来说,循环工作部分中的数据应该用间接方式来寻址,如这里用
  
  ADD  A,@RO
  
  计数控制方法只有在循环次数已知的情况下才适用。对循环次数未知的问题,不能用循环次数来控制,往往需要根据某种条件来判断是否应该终止循环。
  
  (2)条件控制结构  条件控制结构如图4-9所示。条件控制就是在循环控制中,设置一个条件,判断是否满足该条件,如满足条件,则循环结束;如果不满足该条件,则循环继续。
  
  2. 设有一串字符,依次存放在内部RAM从30H单元开始的连续单元中,该字符串以OAH为结束标志,编写测试字符串长度的程序。
  
  本例采用逐个字符依次与“0AH”比较(设置的条件)的方法。为此设置一个长度计数器和一个字符串指针。长度计数器用来累计字符串的长度,字符串指针用于指定字符。如果指定字符与“0AH”不相等,则长度计数器和字符串指针都加1,以便继续往下比较;如果比较相等,则表示该字符为“0AH”,字符串结束,长度计数器的值就是字符串的长度。程序如下:
  
  上面介绍的两个例子都是在一个循环程序中不再包含其他循环程序,该循环程序称为单循环程序。如果一个循环程序中包含了其他循环程序,则称为多重循环程序。
  
  最常见的多重循环是由DJNZ指令构成的软件延时程序。
  
  3. 50 ms延时程序。
  
  软件延时程序与指令执行时间有很大的关系。在使用12 MHz晶振时,一个机器周期为1”s,执行一条DJNZ指令的时间为2μs。这时,可用双重循环方法写出如下程序:
  
  以上延时程序不是太精确,如把所有指令的执行时间计算在内,它的延时时间为
  
  如果要求比较精确的延时,应该考虑对上述程序进行修改。但要注意,用软件实现延时程序,不允许有中断,否则将严重影响定时的准确性。
  
  对于需延时更长的时间,可采用更多重的循环,如1s延时,可用三重循环。


推荐阅读

史海拾趣

CoolerMaster公司的发展小趣事

随着业务的不断发展,Cooler Master逐渐将触角延伸至全球。集团总部位于中国台北,同时在大陆设立了制造基地,并在北美、欧洲、东亚及北京、上海等地设有办事处或研发中心。这种全球化的布局使得Cooler Master能够更好地了解各地市场的需求,进而提供更加精准的产品和服务。此外,公司还与多家全球500强品牌合作,为其提供散热解决方案,进一步巩固了其在全球散热领域的领导地位。

DBS Microwave Inc公司的发展小趣事

随着公司产品的不断成熟和技术的不断进步,DBS Microwave开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户建立了联系。同时,公司还积极寻求与国际知名企业的合作机会,通过技术交流和合作研发等方式,不断提升自身的技术水平和市场竞争力。这些努力使得DBS Microwave在国际市场上取得了良好的业绩。

Bellin Dynamic Systems公司的发展小趣事

随着公司规模的扩大和业务范围的拓展,Bellin Dynamic Systems开始注重品牌建设和市场推广。公司加大了对品牌形象的宣传力度,通过参加行业展会、举办技术研讨会等方式提升品牌知名度。同时,公司还加强了与媒体和客户的沟通互动,积极传递公司的价值观和企业文化。这些举措有效地提升了Bellin Dynamic Systems在市场上的影响力和竞争力。

格瑞宝(GP)公司的发展小趣事

为了更好地服务客户和市场,格瑞宝在深圳、南京等地设立了分公司等派出机构。这些分公司的设立不仅加强了公司在华南、华东等地区的业务覆盖能力,也提高了公司的市场响应速度和客户服务水平。通过区域布局的优化,格瑞宝能够更加灵活地应对市场变化,抓住发展机遇,实现更快速的发展。

H&D Wireless公司的发展小趣事

2017年,高创被美的集团全资收购,成为美的工业技术事业群的重要业务板块之一。这一转变标志着高创进入了一个全新的发展阶段。借助美的集团的平台力量,高创在技术研发、生产制造、供应链管理等方面得到了显著提升。同时,与美的集团旗下其他业务板块如库卡机器人等的协同合作,进一步拓宽了高创的市场应用领域。

China Semiconductor Corp公司的发展小趣事

CSC公司成立于21世纪初,当时正值中国半导体产业刚刚起步。面对国际巨头的垄断和技术封锁,CSC公司从零开始,凭借一腔热血和坚定的信念,开始了艰难的创业之路。公司初期,资金匮乏、人才短缺,但CSC人凭借着对技术的执着追求和对市场的敏锐洞察,成功研发出多款具有自主知识产权的半导体产品,打破了国外技术的垄断,为中国半导体产业的崛起奠定了基础。

问答坊 | AI 解惑

组装印制电路板的检测

为完成印制电路板检测的要求,已经产生了各种各样的检测设备。自动光学检测( AOI) 系统通常用于成层前内层的测试;在成层以后,X 射线系统监控对位的精确性和细小的缺陷;扫描激光系统提供了在回流之前焊盘层的检测方法。这些系统,加之生产线直观检 ...…

查看全部问答>

ce的bootload问题

最近学习搞ce的bootload和eboot等. 我用原开发板QQ2440供应商提供的bootload烧eboot及nk.bin时候. 从串口打印出来的如下. .... Now, Downloading [ADDRESS:30058000h,TOTAL:18773945] Downloaded file at 0x30000000, size = 18773935 bytes Ma ...…

查看全部问答>

在关闭或者跳转某对话框的时候出现堆栈错误!

设断点跟踪到OnDestroy()结束,都没出现错误,跳到下一个对话框或者OnCancel()自己,都会出现 [Stack fault]: Thread=8f8755d8 Proc=8e44c7b0 \'Unicom.exe\' AKY=00002001 PC=00108b00(Unicom.exe+0x000f8b00) RA=0010e468(Unicom.exe+0x000fe46 ...…

查看全部问答>

vc++插件下载

vc++的一些插件,随便下吧,呵呵:D         1.Visual Assist(强烈推荐)   http://www.wholetomato.com/      VA从5.0一直到现在的VAX,功能越来越强大,除了以前版本中的自动识别 ...…

查看全部问答>

天津xilinx fpga竞赛题目已经出了,麻烦大家帮分析一下

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 高教社&xilinx 竞赛 天津赛区是星期六开始 ,比赛时间是早8点到下午4点,时间很短。要求自带VGA显示器,估计就是VGA的题了。麻烦大家帮分析一下,大概题目会是什么样。有什么话就说 ...…

查看全部问答>

办公室乱发脾气很危险

对一些上班族作过调查,50%以上的人都承认,他们在办公室中曾经有过愤怒的情绪,而谈到把这种愤怒的情绪压抑在心里的感受,大多数人都感叹,那 是一种很可怕的感觉:郁闷、焦躁,最后对工作产生厌倦。我们不妨学习做一只“职场刺猬”,大胆地提出你 ...…

查看全部问答>

电子设计竞赛培训最后的书

本帖最后由 paulhyde 于 2014-9-15 03:32 编辑 目 录第1 章 常用电子元器件.................................................................................................................51.1 电子元器件的质量参数..................... ...…

查看全部问答>

LF2407A程序在CCS编译出错

请各位比较熟悉DSP的人给点指导:        我建好的工程在CCS3.3中编译时报错“ Cannot open source file \'D:\\TempData\\Softs\\include.if\'”,工程新建在CCStudio_v3.3\\MyProjects\\下,主要代码是例程,无语法错 ...…

查看全部问答>

【MSP430超低功耗时钟】乐泡的系统框图

这个帖子应该乐泡来发的,他把自己做的框图直接贴在了方案讨论贴的后面,我单独拿出来方便讨论。系统框图:其实我想让乐泡画一个软件流程图,我没说清楚说的是软件框图,然后乐泡画了这个系统框图出来。本来就应该这个图在前面的,倒是我搞忘了。@ ...…

查看全部问答>