除了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语句,输出不应有的结果。

下面我要提一下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++); //延时一会

}

}

流水灯c语言代码switch,单片机C语言入门之六switch case语句流水灯相关推荐

  1. 单片机c语言编程下载,单片机C语言编程.doc

    单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...

  2. c语言流水灯仿真程序设计框图,基于单片机c语言控制的流水灯程序设计及prtes仿真图.docx...

    基于单片机c语言控制的流水灯程序设计及prtes仿真图 89c51与8个发光二极管相连流水控制 一.不同花样的控制源程序代码: /*#include #define uchar unsigned ch ...

  3. 青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  4. 简单谱子C语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  5. 单片机C语言仿真图,单片机C语言程序设计代码和仿真图.doc

    word完美格式 精心整理 学习帮手 <单片机C语言程序设计实训100例-基于8051+Proteus仿真>案例 第 01 篇 基础程序设计 01闪烁的LED /* 名称:闪烁的LED 说 ...

  6. 74hc595点亮点阵式led交通灯灯 c语言程序,89C51单片机C语言用四个74hc595控制四个LED实现交通灯...

    89C51单片机C语言用四个74hc595控制四个LED实现交通灯 (2009-05-16 18:52:38) 标签: 教育 #include #define uchar unsigned char ...

  7. 单片机C语言节日彩灯,单片机c语言节日彩灯控制器设计.docx

    单片机c语言节日彩灯控制器设计 湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:节日彩灯控制器的设计学生姓名:所在学院:信息科学与工程学院专业班级:电子信息工程1102班学生学号:指导 ...

  8. stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf

    STC单片机C语言指针 主讲:何宾 Email :hebin@mail.buct.edu.cn 2016.03 C51编译器中指针的分类 Cx51编译器支持使用字符"*"声明变量指 ...

  9. 软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

    基于AT89C1单片机C语言编写的计算器 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; ...

  10. keil的c语言基础,KeilC单片机C语言应用研究入门基础篇要点S.doc

    KeilC单片机C语言应用研究 系 别 计算机系 专 业 计算机科学与技术 姓 名 刘志远 指导教师 张连生 Keil C单片机C语言应用研究 刘志远 (太原师范学院计算机系200202班 山西·太原 ...

最新文章

  1. 2022-2028年中国乙酸钴行业发展现状调研及市场前景规划报告
  2. 6行代码,带你学会Python最有用的小技巧【收藏不后悔】
  3. java 给窗口加菜单_程序求助:如何给窗口添加菜单?
  4. 怎么可以查到AD里面长时间没有登录的帐号
  5. DIV与Table布局在大型网站的可用性比较
  6. vue e-charts按需引入
  7. leetcode - 538. 把二叉搜索树转换为累加树
  8. PyQt5笔记(04) -- 文本框的使用
  9. oracle 偶尔登录超时,OracleClient,间歇性连接问题:应用程序挂起在OracleConnection.Open()上,没有超时,没有引发异常...
  10. Mysql插入中文时错误:ERROR 1366 (HY000): Incorrect string value: '\xE6\x9D\x8E\xE5\x8B\x87' for column
  11. 利用爬虫技术清理微博“僵尸粉”
  12. mac php fpm 502,nginx+php-fpm出现502(Bad Gateway)错误的分析与解决 | linux系统运维
  13. IP属地靠谱吗?或是一把双刃剑
  14. JavaScript 使用
  15. A-priori算法的优化实现
  16. python matplotlib pColor 网格线 消除
  17. ocv特性_锂离子电池的三大特性分析
  18. pwm占空比的c语言编程详解,盘点占空比、PWM、GPIO三者含义及原理分析
  19. 上海东华计算机分数线,2020年东华大学上海分专业录取分数线
  20. 03_基于wiringPi的GPIO控制-蜂鸣器

热门文章

  1. java 一年 周数_Java获取一年有多少周、某周的第一天和最后一天,当前时间所在当年的实际周数...
  2. 把“友商”装进芯里威联通运行黑群晖最新DSM系统
  3. python bin文件读写_Python读写文件
  4. linux字体美化包,linux字体美化
  5. 统计学(第七版 贾俊平)第七章 期末复习笔记(详细 附例题详解及公式)
  6. 用R语言生成均匀设计
  7. 保存网页文章为PDF文件
  8. arm架构与体系结构
  9. 人脸识别库Dlib介绍
  10. arm64位的Centos7镜像安装JDK