-
C51
单片机循环语句
循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操
作。如一个
12M
的
51
芯片应用电路中要求实现
1
毫秒的延时,那么就要执行
1000
次
空语句
才
能达到延时的目的
(当然能使用定时器来做,
这里就不讨论)<
/p>
,
如果是写
1000
条
空语
句那
是多么麻烦的事情,再者就是要占用很多的存储空间。我们能知道这
1000
条空
语句,
无非就是一条空语句重复执行
1000
次,因此我们就能用循环语句去写,这样不但
使程序
结构清晰明了,而且使其编译的效率大大的提高。在
C
语言中构成循环控制的语句
有
while,do-while,for
和
goto
语句。同样都是起到循环作用,但具体的作用和使用方法又
大不一
样。我们具体来看看。
goto
语句
这个语句在很多高级语言中都会有,
记得小时候用
BASIC
时就很喜欢用这个语句。
它
是
一个无条件的转向语句,只要执
行到这个语句,程序指针就会跳转到
goto
后的标号所
在的
程序段。它的语法如下:
goto
语句标号
;
其中的语句标号为一个带冒号的标识符。示例如下
void
main(void)
{
unsigned
char
a;
start:
a++;
if
(a==10)
goto
end;
goto
start;
end:;
}
上面一段程序只是说明一下
goto
的使用方法,
实际编写很少使用这样的手法。这段程
序的意思
是在程序开始处用标识符
“start:”
标识,
表示程序这是程序的开始,
“end:”
标识程序的
结
束,标识符的定义应遵循前面所讲的标识符定义原则,不能用
C
的关键字也不能和其它变
量和函数名相同,不然就会出错了。程序执行
a++,a
的值加
1
,当
a
等于
10
时程序会跳
到
end
标识处结束程序,不然跳回到
start
标识处继续
a++,
直到
a
等于
1
0
。上面的示例
说明
goto
不但能无条件的转向
,
p>
而且能和
if
语句构成一个循环结构,这些在
C
程序员的
程
序中都不太常见,常见的
goto
语句使用方法是用它来跳出多重循环,不过它只能从内
层循环<
/p>
跳到外层循环,不能从外层循环跳到内层循环。在下面说到
for
循环语句时再略为
提一提。
为何大多数
C
程序员都不喜欢用
goto
语句?那是因为过多的使用它时会程序结
构不清晰,
< br>
过多的跳转就使程序又回到了汇编的编程风格,使程序失去了
C
的模块化的优点。
while
语句
while
语句的意思很不难理解
,
在英语中它的意思是
“
当
…
的时候
…”
,
在这里我们可
以
理解
为
“
当条件为真的时候就执行后面的语句
”
,它的语法如下:
while
(
条件表达式
)
语句
;
使用
while
< br>语句时要注意当条件表达式为真时,它才执行后面的语句,执行完后再次
回
到
while
执行条件判断,为真时重复执行语句,为假时退出循环体。当条件一开始就
为假时,
那么
while
后面的循环体(语句或复合语句)将一次都不执行
就退出循环。在调
试程序时要
注意
while
的判断条件不能为假而造成的死循环,
调试时适当的在
while
处加入断点,
也许
< br>会使你的调试工作更加顺利。当然有时会使用到死循环来等待中断或
IO
信号等,如
在第一
篇时我们就用了
while(1)<
/p>
来不停的输出
“Hello
World
!
”
。
p>
下面的例子是显示从
1
到
10
的累
加和,读者能修改一下
while
中的条件看看结果会如果,从而体会一下
while
的
使用方法。
#include
#include
void
main(void)
{
unsigned int I
= 1;
unsigned int SUM = 0;
//
设初值
SCON =
0x50; //
串行口方式
1,
允许接收
TMOD = 0x20;
//
定时器
1
定时方式
2
TCON = 0x40;
//
设定时器
1
开始计数
TH1 = 0xE8;
//11.0592MHz 1200
波特率
TL1 = 0xE8;
TI = 1;
TR1 = 1;
//
启动定时器
while(I<=10)
{
SUM = I + SUM;
//
累加
printf
(
显示
I++;
}
while(1); //
这句是
为了不让程序完后,程序指针继续向下造成程序
“
跑飞
”
}
//
最后运行结果是
SUM=55;
do
while
语句
do while
语句能说是
while
语句的补充,
while
是先判断条件是否成立再执行循环体,
而
do
while
则是先执行循环体,
再根据条件判断是否要退出循
环。
这样就决定了循环
体无
论在任何条件下都会至少被执行一次。它的语法如下:
do
语句
while
(
条件表达式
)
用
do
while
怎么写上面那个例程呢?先想一想,再参考下面的程序。
#include
#include
void
main(void)
{
unsigned
int
I
=
1;