单片机按键程序如何使用switch语句

main()
{
set();
while(1)
{
// uint8 mod=1;
uint8 mod;
if(KeyIn1==0)
{
delay(1000);
if(KeyIn1==0)
{ while(!KeyIn1)
{
di();
delay(200);
mod++;
}

if(mod==3)
{
mod=0;
}
}
}
if(KeyIn2==0)
{
delay(1000);
if(KeyIn2==0)
{
while(!KeyIn2)
{
di();
delay(200);
//LED=~LED;
switch(mod)
{
case1:
LED=0;
break;
case2:
LED1=0;
break;
default:
break;
}
}
}
}
}
}
这个是我编的程序 我想实现的功能是用key1来选择key2中switch执行哪一条指令,就是按一下key1,然后按key2使灯1亮,按两下key1,然后按key2使灯2亮,求大神指教,我调试了很多次,发现switch语句根本没执行

while(!KeyIn1)
{
    di();
    delay(200);
    mod++;// 这里,你按下按键1的时候,按键1应该会保持接触至少50毫秒,在这段时间,mod的值早不知道飞到哪里去了
}
   
if(mod==3)    // 这里的判断已经没有意义了
{
    mod=0;
}

就用你的思路,不过换这里的判断的地方就可以了。
改成
while(!KeyIn1);
di();
delay(200);
mod++;

if(mod==3)    
{
    mod=0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-30
修改后:
main()
{
set();
while(1)
{
// uint8 mod=1;
uint8 mod;
if(KeyIn1==0)
{
delay(1000);
if(KeyIn1==0)
while(!KeyIn1);
di();
delay(200);
mod++;
if(mod>2)
{
mod=0;
}
}
if(KeyIn2==0)
{
delay(1000);
if(KeyIn2==0)
while(!KeyIn2);
di();
delay(200);
//LED=~LED;
switch(mod)
{
case 1:
LED=0;
break;
case 2:
LED1=0;
break;
default:
break;
}
}
}
}

单片机按键程序如何使用switch语句
KeyIn1){ di(); delay(200); mod++;\/\/ 这里,你按下按键1的时候,按键1应该会保持接触至少50毫秒,在这段时间,mod的值早不知道飞到哪里去了} if(mod==3) \/\/ 这里的判断已经没有意义了{ mod=0;}就用你的思路,不过换这里的判断的地方就可以了。改成while(!KeyIn1)...

单片机switch语句怎么用
case 1: call_1(); break;\/\/当变量值=1时,调用call_1();函数,跳出 ...case n: call_n(); break;\/\/当变量值=n时,,调用call_n();函数,跳出 default: break;\/\/默认值,跳出 }

...按键分别控制8个LED,当按下时亮,松手时灭,用switch语句
void delay(unsigned int a){ unsigned int i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);} uchar kbscan(void){ unsigned char sccode,recode;P1=0x0f; \/\/发0扫描,列线输入 if ((P2 & 0x0f) != 0x0f) \/\/有键按下 { delay(20); \/\/延时去抖动 if ((P1&0x0f)!...

单片机C51语言中用switch语句来实现,怎么写这个功能?
switch((left<<4)|right){ case 0x00:led_left=1;led_right=1;break;case 0x01:led_left=0;led_right=1;break;case 0x10:led_left=1;led_right=0;break;case 0x11:led_left=1;led_right=1;break;}

C51 单片机P1.0-P1.4口用作按键输入时,使用switch语句怎么定义?
你好 简单的键功能用if语句较好如 if(key0==0)\/\/P1.0为0 delay;\/\/延时10ms if(key0==0)\/\/P1.0为0 消抖再次确认 程序语句。。。if(key1==0) \/\/P1.1为0 同上。。。共5个键分别检测,执行。对端口要求简单,也不会受邻居的影响,或干扰邻居(如你的P1.7端口)。你的问题...

单片机switch case语句使用
switch(参数){ case 0:\/*需要做的事情*\/;break;\/\/0是一个假设,即是当参数为0时的情况;case 1:;break;\/\/...\/\/以此类推;default:break;\/\/ }

单片机编程,switch语句
main(){ uchar tmp = 0xff;where(1){ tmp = 0xff;while( tmp == 0xff) tmp = P3;switch(tmp){ ...} } }

单片机中switch case是如何用法,
当程序需要根据一个变量值进行多种选择时,就可以用这一对语句了。一般有三,四个以上的选择时使用比较好。如果只有一,两个条件判断选择时,用if else 比较好,程序简洁。

单片机switch case语句使用
{ if(P3^7==0){delay(10); \/\/消抖 if(P3^7==0){ i++;if(i==4)i=0;while(i==0); \/\/松手检测 ---这里错了 while(p3.7==1)} } 另外 switch语句最好加上defult:break;

用单片机C51中switch语句编程,P1口接八个开关分别控制P0口八个LED灯...
switch(P1){ case 0xfe:P0=0x01;break;case 0xfd:P0=0x02;break;case 0xfb:P0=0x04;break;case 0xf7:P0=0x08;break;case 0xef:P0=0x10;break;case 0xdf:P0=0x20;break;case 0xbf:P0=0x40;break;case 0x7f:P0=0x80;break;default:break;} ...

相似回答