关于按键问题
main(){
init();
while(1)
{
switch(key_number)
case 1:opition();
case 2:action();
}
}
void action()
{
switch(key_number)
case 1:a();
case 2:b();
}
我想做一个分级的菜单,比如我按2 然后会跳入action的函数。但是我遇到个情况就是,当按2了然后直接跳入b()的函数去了。
我想先跳进action里然后在判断按键,求大神帮忙下。。感谢
在调用action前,可不可以先加个等待按键释放的语句? longwu537 发表于 2013-5-11 16:09 static/image/common/back.gif
在调用action前,可不可以先加个等待按键释放的语句?
请问大神,应该怎么加。。小白见笑了 void action()
{
while(1)
{
switch(key_number)
{
case 2:;
default:break;
}
}
switch(key_number){
case 1:a();
case 2:b();}
}
据我猜想,仅仅是…猜想… 芯灵 发表于 2013-5-11 16:54 static/image/common/back.gif
void action()
{
while(1)
刚刚又看了下,这个猜想有问题,不用试了 芯灵 发表于 2013-5-11 16:54 static/image/common/back.gif
void action()
{
while(1)
0.0不是只有主函数里才有while(1)的吗。。 小白说一句,那个keynumber是怎么处理的,看看有错没 你这段代码的问题是进入action();后keynumber的值没有被刷新(始终是2),进入action();后应该延时然后重新读取keynumber的值。
这仅仅是一个…猜想… jiangkexiaozhen 发表于 2013-5-11 17:08 static/image/common/back.gif
小白说一句,那个keynumber是怎么处理的,看看有错没
我是把按键管脚直接连接到 51单片机的中断函数了,如果有按键按下 HD7279读出的数值就是key_number 芯灵 发表于 2013-5-11 17:28 static/image/common/back.gif
你这段代码的问题是进入action();后keynumber的值没有被刷新(始终是2),进入action();后应该延时然后重新 ...
- - 这个猜想貌似对。。但是怎么再重新读数值呢。。 如果你用的是中断,再设两个变量n=0、m,中断里加一句n=~n; ,然后
void action()
{ m=n;
whlie(m==n);
switch(key_number)
case 1:a();
case 2:b();
}
这不是一个猜想,试一下吧 你的按键处理判断有问题 芯灵 发表于 2013-5-11 18:48 static/image/common/back.gif
如果你用的是中断,再设两个变量n=0、m,中断里加一句n=~n; ,然后
void action()
{ m=n;
额 好 我试下 谢谢 本帖最后由 longwu537 于 2013-5-12 15:59 编辑
如果不用中断我会这么写main()
{
init();
while(1)
{
getkey();
switch(key_number)
{
case 1:opition();break;
case 2:
do
{
getkey();
}while(key_number!=Null);
action();
break;
}
}
}
void action()
{
getkey();
switch(key_number)
{
case 1:a();break;
case 2:b();break;
}
} wangzeyu315 发表于 2013-5-11 18:07 static/image/common/back.gif
我是把按键管脚直接连接到 51单片机的中断函数了,如果有按键按下 HD7279读出的数值就是key_number ...
我的意思是你走一下keynumber的数据流程,看一下是否有数据变更 case 后面要加break,否则会继续执行下面的case底下的语句 再加个标志位应该就可以了吧 代码没错,只是二次判定的变量都是一样 你可以增加一个按键,设定key_number2用于action函数中,或者在进入action之后,立刻将key_number清零,个人见解。 顶19楼
但是我一般有一个标志用来判断是处于那一层或者哪一个画面的
比如我先开背光,要是背光是关的,就先开背光,之后将KEY_NUMBER清零,第二次按的时候,就是正常的处理了 紫色绕藤 发表于 2013-5-13 13:30 static/image/common/back.gif
你可以增加一个按键,设定key_number2用于action函数中,或者在进入action之后,立刻将key_number清零,个 ...
麻烦问下。。key_number应该怎么清零? xiaobendan001 发表于 2013-5-13 14:08 static/image/common/back.gif
顶19楼
但是我一般有一个标志用来判断是处于那一层或者哪一个画面的
比如我先开背光,要是背光是关的,就先 ...
麻烦问下。。key_numner应该怎么清零。 zjk 发表于 2013-5-13 11:40 static/image/common/back.gif
再加个标志位应该就可以了吧
额应该怎么加?谢谢 wangzeyu315 发表于 2013-5-13 14:53 static/image/common/back.gif
麻烦问下。。key_numner应该怎么清零。
在你处理完第一次后清零啊 wangzeyu315 发表于 2013-5-13 14:52
麻烦问下。。key_number应该怎么清零?
额,进入action之后,加上一句:key_number=0; 紫色绕藤 发表于 2013-5-14 00:29 static/image/common/back.gif
额,进入action之后,加上一句:key_number=0;
谢谢啊。。已经弄好了~~ xiaobendan001 发表于 2013-5-13 17:27 static/image/common/back.gif
在你处理完第一次后清零啊
谢谢~~弄好了~
页:
[1]