找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 28811|回复: 5
打印 上一主题 下一主题
收起左侧

C语言中Switch语句在单片机编程中的使用

[复制链接]
跳转到指定楼层
楼主
ID:115111 发表于 2016-4-28 03:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为:
switch(表达式){
    case 常量表达式1:  语句1;
    case 常量表达式2:  语句2;
    …
    case 常量表达式n:  语句n;
    default:  语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。



用swtich语句的控制P0口8位LED的点亮状态程序如下:


#include<reg51.h>  //包含单片机寄存器的头文件
sbit K5=P1^4;     //将K5位定义为P1.4
/*****************************
函数功能:延时一段时间
*****************************/
void delay(void)
{
unsigned int n;
for(n=0;n<20000;n++)
        ;
}
/*****************************
函数功能:主函数
*****************************/
void main(void)
{  
   unsigned char i;
        i=0;    //将i初始化为0
        while(1)
         {
                if(K5==0)     //如果S1键按下
                {
                        delay();  //延时一段时间 按键消抖
                        if(K5==0) //如果再次检测到S1键按下
                                 i++;    //i自增1
                        if(i==9)  //如果i=9,重新将其置为1
                         i=1;               
                 }
                 switch(i)   //使用多分支选择语句
                        {
                        case 1: P0=0xfe;  //第一个LED亮
                                break;
                        case 2: P0=0xfd;  //第二个LED亮
                            break;
                        case 3:P0=0xfb;   //第三个LED亮
                                break;
                        case 4:P0=0xf7;   //第四个LED亮
                                break;
                        case 5:P0=0xef;   //第五个LED亮
                                break;
                        case 6:P0=0xdf;   //第六个LED亮
                                break;
                        case 7:P0=0xbf;   //第七个LED亮
                                break;
                        case 8:P0=0x7f;   //第八个LED亮
                                break;
                        default:   //缺省值,关闭所有LED
                                P0=0xff;
                        }
        }          
}

在使用switch语句时还应注意以下几点:
  • 在case后的各常量表达式的值不能相同,否则会出现错误。
  • 在case后,允许有多个语句,可以不用{}括起来。
  • 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
  • default子句可以省略不用。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:79544 发表于 2016-4-28 19:23 | 只看该作者
谢谢楼主,学习啦。楼主辛苦!
回复

使用道具 举报

板凳
ID:47652 发表于 2018-2-19 22:14 | 只看该作者
写的很详细
回复

使用道具 举报

地板
ID:285300 发表于 2018-2-25 00:33 来自手机 | 只看该作者
谢谢分享。
回复

使用道具 举报

5#
ID:411120 发表于 2018-10-17 14:56 | 只看该作者
谢谢楼主解答
回复

使用道具 举报

6#
ID:853098 发表于 2020-12-29 19:37 | 只看该作者
谢谢楼主解答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表