一个较复杂的程序,总是包含多个分支程序段,为防止分支流向的混乱,应采用程序流程图具体标明每个分支的确切条件和走向。
单片机循环结构程序:
循环结构程序是控制主机多次、重复执行同一个程序段的一种基本程序结构。从本质上讲,它是分支结构程序中的一个特殊形式。由于它在程序设计中的重要性,故而配以专用指令,单独作为一种程序结构的形式进行设计。
在某些情况下采用循环程序结构,可使原程序大大缩短和简化。例如,利用软件延时lms,若采用NOP指令来实现,当fosc=12MHz时,需近1000条NOP指令组成。如果采用循环结构程序,只需少数几条指令即可完成。可见其程序的简化效率。
①循环结构程序的组成
循环结构程序由下述4个主要部分组成。
A、初始化部分
程序在进入循环处理程序段部分之前需设备初值,如循环次数、有关单元清0、变量设置、地址指针等。
B、循环处理部分
循环处理部分又称循环程序主体。是循环结构程序的核心,是循环执行需完成某种功能的主体。
C、循环控制部分
在重复执行循环体的过程中,不断修改和判断循环控制变量,直到符合结束循环条件。循环控制变量可以是循环递减计数或条件控制。前者是每循环执行一次,控制变量减1,并判是否减为0,若不为0,继续执行循环体程序;若控制变量减1后结果值为0,则结束循环程序的执行,进入结束处理。这些工作均由循环指令自动完成。后者判别结束条件上是否成立,例如计算结果达到给定精度要求或达到某一给定条件时就结束循环,这时的循环次数是不固定的。常用条件判跳指令来完成。
D、结束处理部分
这是对循环程序全部执行结束后的结果进行处理和存储。
有两条功能极强的循环转移指令:
DJNZ Rn,rel ;以工作寄存器Rn为控制寄存器
DJNZ direct,rel ;以直接寻址单元作控制寄存器
这两条基本指令可派生出很多条不同控制计数器的循环转移指令,大大扩展了应用范围和多重循环的层次。
控制计数器的计数方式一般均为不断减1计数(递减方式),即每循环一次,计数器自动减1计数,并判控制计数器是否为0,若不为0,继续执行循环;若为0,则结束循环程序的执行,脱离循环程序顺序往下执行。循环次数在初始化时预置,循环次数范围1-255,如超过此范围,则要采用多重循环方式。多重层次原则上不受限。
③单片机多重循环结构程序
某些复杂问题或者循环数超过256,则需采用多重循环的程序结构,即循环程序中包含循环程序或一个大循环中包含多个小循环程序,称多重循环程序结构,又称循环嵌套。循环的重数不限,但必须每循环的层次分明,不能有相互交叉!
例如:双重软件延时。
START:MOV R3,#DATA1 ;外层循环计数初值
LOOP1:MOV R2, ;内层循环计数初值
LOOP2:NOP
NOP
NOP
DJNZ R2,LOOP2 ;(R2)-1≠0,转LOOP2
DJNZ R3,LOOP1 ;(R3)-1≠0,转LOOP1
END ;结束
此例为典型的二重循环程序结构,可根据实际需要设计任意重循规蹈矩环。其执行过程是由内向外逐层展开。内层循环全部执行完后,外层则执行一次循环,依此类推。如内层循环次数为M,外层循规蹈矩环次数为N,则总的循规蹈矩环次数为NM次。
微信公众号
湖北松翰单片机哪家实惠?湖北NIKOSEM哪家好?湖北单向可控硅怎么样?博昌达电子科技有限公司专业提供湖北单向可控硅产品,欢迎咨询!
CopyRight © 2020 版权所有 深圳市博昌达电子科技有限公司