流⽔灯c语⾔代码switch,单⽚机C语⾔⼊门之六switchcase语句
流⽔灯
除了if else语句,C语⾔还提供了另⼀种⽤于多分⽀选择的switch语句, 其⼀般形式为:
switch(表达式)
{
case常量表达式1:
语句1;
break;
case常量表达式2:
语句2;
break;
…
case常量表达式n:
语句n;
break;
default:
语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相⽐较,当表达式的值与某个常量表达式的值相等时, 即执⾏其后的语句,然后不再进⾏判断,继续执⾏后⾯所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执⾏default后的语句。看个例⼦:输⼊⼏就输出星期⼏。
main(){
int a;
printf("input integer number: ");
scanf("%d",&a);
switch (a){
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:printf("error\n");
}
}
在使⽤switch语句时还应注意以下⼏点:
在case后的各常量表达式的值不能相同,否则会出现错误。
在case后,允许有多个语句,可以不⽤{}括起来。
各case和default⼦句的先后顺序可以变动,⽽不会影响程序执⾏结果。
default⼦句可以省略不⽤。
在case语句结束应要加break语句,否则将不能跳出switch语句,输出不应有的结果。
switch的用法c语言下⾯我要提⼀下break和continue语句,先了解下:
break语句通常⽤在循环语句和开关语句中。当break⽤于开关语句switch中时,可使程序跳出switch⽽执⾏switch以后的语句;如果没有break语句,则将成为⼀个死循环⽽⽆法退出。
当break语句⽤于do-while、for、while循环语句中时,可使程序终⽌循环⽽执⾏循环后⾯的语句,通常break语句总是与if语句联在⼀起。即满⾜条件时便跳出循环。
continue语句的作⽤是跳过循环本中剩余的语句⽽强⾏执⾏下⼀次循环。continue语句只⽤在for、while、do-while等循环体中,常与if条件语句⼀起使⽤,⽤来加速循环。其执⾏过程可⽤下图表⽰。
关于switch就说这么多,下⾯来看在单⽚机中的例⼦,使⽤switch case语句实现流⽔灯。
#include //STC12系列头⽂件 复制到⼯程⽬录下
sbit LEDK = P1^4;// 控制三极管基极
void main(void)
{
unsigned char i=0; //声明变量i
unsigned int k;
LEDK=0; //置0使PNP型三极管导通LED负极接地
P0M1=0x00;
P0M0=0xff; //P0⼝全部设置为推挽输出 见⼿册87页 IO⼝模式配置
while(1)
{
switch(i) //i等于⼏就执⾏相应的case语句块
{
case 0:
{
P0=0x01; //点亮最低位的LED 下⾯的语句⼋个LED依次点亮
}break; //执⾏完case遇到break就跳出当前switch循环
case 1:
{
P0=0x02;
}break;
case 2:
{
P0=0x04;
}break;
case 3:
{
P0=0x08;
}break;
case 4:
{
P0=0x10;
}break;
case 5:
{
P0=0x20;
}break;
case 6:
{
P0=0x40;
}break;
case 7:
{
P0=0x80;
}break;
default:
break;
}
i++; //执⾏完上⼀个case后出来i增1
if(i==8)i=0; //i=8 ⼋个case执⾏完 i赋值为0 继续从头开始for(k=0;k<50000;k++); //延时⼀会
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论