关于按键问题

2020-01-30 13:36发布

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里  然后在判断按键,求大神帮忙下。。感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
longwu537
1楼-- · 2020-02-01 19:19
本帖最后由 longwu537 于 2013-5-12 15:59 编辑

如果不用中断我会这么写
  1. main()
  2. {
  3.         init();
  4.         while(1)
  5.         {
  6.                 getkey();
  7.                 switch(key_number)
  8.                 {
  9.                         case 1:opition();break;
  10.                         case 2:
  11.                         do
  12.                         {
  13.                                 getkey();
  14.                         }while(key_number!=Null);
  15.                         action();
  16.                         break;
  17.                 }
  18.                
  19.         }
  20. }
  21. void action()
  22. {
  23.         getkey();
  24.         switch(key_number)
  25.         {
  26.                 case 1:a();break;
  27.                 case 2:b();break;
  28.         }
  29. }
复制代码
jiangkexiaozhen
2楼-- · 2020-02-01 22:15
wangzeyu315 发表于 2013-5-11 18:07
我是把按键管脚直接连接到 51单片机的中断函数了,如果有按键按下 HD7279读出的数值就是key_number ...

我的意思是你走一下keynumber的数据流程,看一下是否有数据变更
cc224
3楼-- · 2020-02-01 23:59
 精彩回答 2  元偷偷看……
zjk
4楼-- · 2020-02-02 01:58
再加个标志位应该就可以了吧
benqme
5楼-- · 2020-02-02 06:19
代码没错,只是二次判定的变量都是一样
紫色绕藤
6楼-- · 2020-02-02 07:21
你可以增加一个按键,设定key_number2用于action函数中,或者在进入action之后,立刻将key_number清零,个人见解。

一周热门 更多>