单片机c语言教程:C51循环语句
= I + SUM; //累加
printf (%d SUM=%dn,I,SUM); //显示 I++;
}
while(I=10);
while(1);
}
在上面的程序看来 do while 语句和 while 语句似乎没有什么两样,但在实际的应用中要注
意任何 do while 的循环体一定会被执行一次。如把上面两个程序中 I 的初值设为 11,那么 前一个程序不会得到显示结果,而后一个程序则会得到 SUM=11。
for 语句
在明确循环次数的情况下,for 语句比以上说的循环语句都要方便简单。它的语法如下: for ([初值设定表达式];[循环条件表达式];[条件更新表达式]) 语句 中括号中的表达式是可选的,这样 for 语句的变化就会很多样了。for 语句的执行:先
代入初值,再判断条件是否为真,条件满足时执行循环体并更新条件,再判断条件是否为 真……直到条件为假时,退出循环。下面的例子所要实现的是和上二个例子一样的,对照着 看不难理解几个循环语句的差异。
#include AT89X51.H>
#include stdio.h>
void main(void)
{
unsigned int I;
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; //启动定时器
for (I=1; I=10; I++) //这里能设初始值,所以变量定义时能不设
{
SUM = I + SUM; //累加
printf (%d SUM=%dn,I,SUM); //显示
}
while(1);
}
如果我们把程序中的 for 改成 for(; I=10; I++)这样条件的初值会变成当前 I 变量的值。如果改成 for(;;)会怎么样呢?试试看。
continue 语句
continue 语句是用于中断的语句,通常使用在循环中,它的作用是结束本次循环,跳 过循环体中没有执行的语句,跳转到下一次循环周期。语法为:
continue;
continue 同时也是一个无条件跳转语句,但功能和前面说到的 break 语句有所不一样, continue 执行后不是跳出循环,而是跳到循环的开始并执行下一次的循环。在上面的例子 中的循环体加入 if (I==5) continue;看看什么结果?
return 语句
return 语句是返回语句,不属于循环语句,是要学习的最后一个语句所以一并写下了。 返回语句是用于结束函数的执行,返回到调用函数时的位置。语法有二种:
return (表达式);
return; 语法中因带有表达式,返回时先计算表达式,再返回表达式的值。不带表达式则返回的值不确定。
下面是一个同样是计算 1-10 的累加,所不一样是的用了函数的方式。
#include AT89X51.H>
#include stdio.h>
int Count(void); //声明函数
void main(void)
{
unsigned int temp;
SCON = 0x50; //串行口方式 1,允许接收 TMOD = 0x20; //定时器 1 定时方式 2
TCON = 0x40; //设定时器 1 开始计数
TH1 = 0xE8; //11.0592MHz 1200 波特率 TL1 = 0xE8;
TI = 1;
TR1 = 1; //启动定时器
temp = Count();
printf (1-10 SUM=%dn,temp); //显示
while(1);
}
int Count(void)
{
unsigned int I, SUM;
for (I=1; I=10; I++)
{
SUM = I + SUM; //累加
}
return (SUM);
}
- 高效的C编程之:C循环结构(08-30)
- FPGA中定时循环启动开销测试(01-09)
- 三菱PLC循环与移位应用指令(12-19)
- “彻查”PROFINET循环通信(12-16)
- avr单片机LED灯循环位移汇编程序(12-02)
- AVR 串口收发 使用循环链表实现的程序源代码(12-02)