单片机C语言入门之三if判断语句流水灯
下面来看if语句,用if语句可以构成分支结构。它根据给定的条件进行判断,以决定执行某个分支程序段。C语言的if语句有三种基本形式。第一种形式为基本形式if:
if(表达式) 语句。
其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。
例子:
unsigned char a = 5;
unsigned char a = 6;
if(a < b)
{
printf("a小于b\n");
}
第二种形式为: if-else
if(表达式)
语句1;
else
语句2;
其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。
例子:
unsigned char score = 100;
if(score==100)
{
printf("你考了一百分\n");
}
else
{
printf("不及格,把党章再抄一遍\n");
}
第三种形式为if-else-if形式,前二种形式的if语句一般都用于两个分支的情况。 当有多个分支选择时,可采用if-else-if语句,其一般形式为:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
…
else if(表达式m)
语句m;
else
语句n;
其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。
例子:
unsigned char age = 35;
if(age < 18)
{
printf("你是小孩子\n");
}
else if(age >= 60)
{
printf("你是位老人\n");
}
else
{
printf("你正当青年啊, 小伙子!\n");
}
下面来看,定义一个整形变量初值设为256,用它来除以一个数,使用if语句判断值是否相等,相等就点亮LED。先抄一遍吧,然后再理解其含义,代码如下:
#include<stc12.h> //STC12系列头文件 复制到工程目录下
sbit LEDK = P1^4;// 控制三极管基极
void main(void)
{
unsigned int i=256,t=0; //变量i的值初始化为256
LEDK=0; //置0使PNP型三极管导通LED负极接地
P0=0x00; //P0口电平初始化为0 关闭全部LED
P0M1=0x00;
P0M0=0xff; //P0口全部设置为推挽输出 见手册87页 IO口模式配置
while(1)
{
if(i/2==128)//判断除以2是否等于128,等于则进入if语句执行
{
P0=0x01;//P0赋值0x01 点亮P0口最低位的LED
}
for(t=0;t<50000;t++); //延时一会
if(i/4==64)//判断除以4是否等于64,等于则进入if语句执行
{
P0=0x02;//P0赋值0x02 点亮P0口第二个LED
}
for(t=0;t<50000;t++);
if(i/8==32)
{
P0=0x04;
}
for(t=0;t<50000;t++);
if(i/16==16)
{
P0=0x08;
}
for(t=0;t<50000;t++);
if(i/32==8)
{
P0=0x10;
}
for(t=0;t<50000;t++);
if(i/64==4)
{
P0=0x20;
}
for(t=0;t<50000;t++);
if(i/128==2)
{
P0=0x40;
}
for(t=0;t<50000;t++);
if(i/256==1)
{
P0=0x80;
}
for(t=0;t<50000;t++);
}
}
以上代码完整工程在\STC51 Discovery\实验例程\基础实验\实验五