欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機鍵控菜單程序 按鍵沒用 [打印本頁]

作者: 旭旭龍    時間: 2020-2-6 20:38
標題: 51單片機鍵控菜單程序 按鍵沒用
初始化能反白到第二行,也就是case 0 ,但是按鍵按下沒有反應。

{
    uint a ;
if(key_down==0)
{
    delay(30);         //消抖
      if(key_down==0)
       a = 0;  
        a++;
        while(!key_down);     //等待按鍵松開
         
}
          switch(a)//第一層
          {   
              case 0:
            lcd_block(32,16,79,31);     break;    //第2行反白:貪吃蛇  

            case 1:
            lcd_block(32,16,79,31);     //清除第2行反白:貪吃蛇
            delay(20);
            lcd_block(16,32,95,47);     //第3行反白:俄羅斯方塊              
            break;
            case 2:
            lcd_block(16,32,95,47);     //清除第3行反白:俄羅斯方塊
            delay(20);
            lcd_block(48,48,79,63);     //第4行反白:鬧鐘/返回            
            break;
            case 3:
            lcd_block(48,48,79,63);     //取消第4行反白:鬧鐘/返回   
            delay(20);
            lcd_block(32,16,79,31);     //第2行反白:貪吃蛇
            break;               //返回第一行
            case 4: a = 0;break;
          }               
     while(1);     
}        
}

作者: 小小大蝦    時間: 2020-2-7 01:07
新手吧,初始化時就執行到case 0 ,然后就在while(1); 死循環了當然沒反應啦
作者: wulin    時間: 2020-2-7 09:06
按鍵程序只能執行1次,死在while(1); ,a也不可以每次清0,否則switch(a)只能執行1。給你改一下你試試。
void key_scan()
{
        static uint a=0;//靜態變量
        if(key_down==0)
        {
                delay(30);         //消抖
                if(key_down==0)
                {
//                        a=0;  
                        while(!key_down);     //等待按鍵松開
                        switch(a)//第一層
                        {   
                                case 0:
                                lcd_block(32,16,79,31);     //第2行反白:貪吃蛇         
                                break;
                                case 1:
                                lcd_block(32,16,79,31);     //清除第2行反白:貪吃蛇
                                delay(20);
                                lcd_block(16,32,95,47);     //第3行反白:俄羅斯方塊              
                                break;
                                case 2:
                                lcd_block(16,32,95,47);     //清除第3行反白:俄羅斯方塊
                                delay(20);
                                lcd_block(48,48,79,63);     //第4行反白:鬧鐘/返回            
                                break;
                                case 3:
                                lcd_block(48,48,79,63);     //取消第4行反白:鬧鐘/返回   
                                delay(20);
                                lcd_block(32,16,79,31);     //第2行反白:貪吃蛇
                                break;               //返回第一行
//                                case 4: a = 0;break;
                        }               
                        a++;
                        if(a>=4)
                                a=0;
//                        while(1);     
                }
        }        
}





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1