单片机C语言入门之五do while循环语句流水灯
上面讲过while语句,这节来看do……while语句,do-while语句的一般形式为:
do
{语句;}
while(表达式);
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此, do-while循环至少要执行一次循环语句。来看个例子,用do-while语句计算从1加到100的值。
#include <stdio.h>
int main(void)
{
int i,sum=0;
i=1;
do
{
sum=sum+i;
i++;
}while(i<=100);
printf("%d\n",sum);
return 0;
}
使用do while循环语句和运算符实现的流水灯代码如下:
#include<stc12.h> //STC12头文件
sbit LEDK = P1^4;//控制三极管基极
void main(void)
{
unsigned int i,t; //定义局部变量
LEDK=0; //置0使PNP型三极管导通LED负极接地
P0M1=0x00;
P0M0=0xff; //P0口全部设置为推挽输出 见手册87页 IO口模式配置
while(1)
{
i=1;//i重新赋值为1
do //do while先执行后判断 while条件成立继续循环 不成立结束循环
{
P0=i; //i的值赋到P0口
i=i*2;//每次i*2 循环 1 2 4 8 16 32 64 128转为16进制即为点亮每个灯的值
for(t=0;t<50000;t++); //延时一会
}while(i<256); //i小于128时条件成立 继续循环
P0=0x00; //i大于256时不成立跳出do while循环 关闭所有LED
for(t=0;t<50000;t++);//延时一会
}
}
以上代码完整工程在\STC51 Discovery\实验例程\基础实验\实验八