求问:我把按键例程改了两句后按键就不灵敏了

2019-10-14 22:27发布

  下面是原代码和我改了两句的代码,除了main函数不一样其他地方如KEY_Scan(u8 mode)都没改,但下载后无论是按哪个按键都时好时坏,按下去几下或者十几下可能才会有反应(体现在lcd屏上数值的变化),这是什么情况?
  谢谢。

这是例程的代码:
        while(1)
        {
                key=KEY_Scan(0);
                   if(key)
                {                                                  
                        switch(key)
                        {                                 
                                case WKUP_PRES:
                                        BEEP=!BEEP;
                                        break;
                                case KEY1_PRES:
                                        LED1=!LED1;
                                        break;
                                case KEY0_PRES:
                                        LED0=!LED0;
                                        LED1=!LED1;
                                        break;
                        }
                }else delay_ms(10);
        }         

这是我改写的代码:
while(1)
{
   key=KEY_Scan(0);
   if(key)
   {                                                  
      switch(key)
     {                                 
        case KEY1_PRES:                 
          count=count+1;
        break;
        case KEY0_PRES:       
          count=count+10;
        break;
       }
        LCD_ShowNum(50,60,count,8,24);
               
        }else delay_ms(10);                
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
正正杨
2019-10-15 03:01
最后的问题时还是因为我的代码问题,我在KEY_Init()中没有初始化WK_UP(则默认为0),但是在KEY_Scan()中我是用的例程里一模一样的写法
u8 KEY_Scan(u8 mode)
{         
        static u8 key_up=1;
        if(mode)key_up=1;                   
        if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
        {
                delay_ms(10);
                key_up=0;
                if(KEY0==0)return KEY0_PRES;
                else if(KEY1==0)return KEY1_PRES;
                else if(WK_UP==1)return WKUP_PRES;
        }else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1; //问题在这我改成if(KEY0==1&&KEY1==1&&WK_UP==1)key_up=1;     
        return 0;
}

谢谢各位的帮助

一周热门 更多>