c语言switch如何让程序退出,求助这个C语言程序,怎么样修改才能退出case9模式?...

该代码实现了一个基于单片机的RGB灯光控制系统,通过定义颜色常量和控制函数,可以展示不同颜色的灯光效果。同时,有一个按键交互功能,用户可以通过按键切换显示颜色,包括绿色、红色、蓝色、蓝绿、红蓝、绿黄和白色,以及一个自动循环显示模式。
摘要由CSDN通过智能技术生成

#include

#include

#define u8 unsigned char

#define u16 unsigned int

#define u32 unsigned long

#define r 0x00ff00

#define g 0xff0000

#define b 0x0000ff

#define black 0x000000

#define white 0xffffff

#define bor 0x00ffff

#define bog 0xff00ff

#define gor 0xffff00

u32 grb;

sbit ws2812b=P5^4;

sbit led2=P5^5;

sbit key1=P3^3;

void delay(u16 z)

{

u16 x;

u8 y;

for(x=z;x>0;x--)

for(y=112;y>0;y--);

}

void write0()

{

ws2812b=1;

_nop_();

ws2812b=0;

_nop_();

_nop_();

}

void write1()

{

ws2812b=1;

_nop_();

_nop_();

_nop_();

ws2812b=0;

_nop_();

}

void sendGRB(u32 grb)

{

u8 i;

for(i=24;i>0;i--)

{

if(grb&0x800000)

write1();

else

write0();

grb<<=1;

}

}

void zidong()

{

u8 j;

for(j=10;j>0;j--)

{

sendGRB(g);

}

delay(65535);

for(j=10;j>0;j--)

{

sendGRB(r);

}

delay(65535);

for(j=10;j>0;j--)

{

sendGRB(b);

}

delay(65535);

for(j=10;j>0;j--)

{

sendGRB(bor);

}

delay(65535);

for(j=10;j>0;j--)

{

sendGRB(bog);

}

delay(65535);

for(j=10;j>0;j--)

{

sendGRB(gor);

}

delay(65535);

for(j=10;j>0;j--)

{

sendGRB(white);

}

delay(65535);

}

void key()

{

u8 j;

static u8 cnt=0;

key1=1;

if(key1==0)

{

delay(10);

if(key1==0)

{

while(!key1);

cnt++;

if(cnt>=10)

cnt=0;

}

}

/* if(key2==0)

{

delay(10);

if(key2==0)

{

while(!key2);

zidong();

}

}*/

switch(cnt)

{

case 1:

for(j=10;j>0;j--)

{

sendGRB(g);

}

//delay(65535);

break;

case 2:

for(j=10;j>0;j--)

{

sendGRB(r);

}

//delay(65535);

break;

case 3:

for(j=10;j>0;j--)

{

sendGRB(b);

}

//delay(65535);

break;

case 4:

for(j=10;j>0;j--)

{

sendGRB(bor);

}

//delay(65535);

break;

case 5:

for(j=10;j>0;j--)

{

sendGRB(bog);

}

//delay(65535);

break;

case 6:

for(j=10;j>0;j--)

{

sendGRB(gor);

}

//delay(65535);

break;

case 7:

for(j=10;j>0;j--)

{

sendGRB(white);

}

//delay(65535);

break;

case 8:

for(j=10;j>0;j--)

{

sendGRB(black);

}

//delay(65535);

break;

case 9:

for(j=10;j>0;j--)

{

zidong();

}

//delay(65535);

break;

default:

ws2812b=1;

break;

}

}

void main()

{

while(1)

{

key();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值