按键计数时间延误问题,num值0~1的变换轻按按键key0即可,1~2,2~3则需重按key0

2019-07-15 16:40发布

void main (void)
{
unsigned char num=0;                  
key0=1;
key1=1; //按键输入端口电平置高
key2=1;
//key3=1;
Init_timer0();

while (1)         //主循环
{
if(!key0)
{
   DelayMs(10);
   if(!key0)
   {
         while(!key0);
         num++;
         if(num==4)
         {
           num=0;
         }
  }
  }        
     if(num==1)
           {
             TempData[6]=dofly_DuanMa[s/10];//分解显示信息,如要显示68,则68/10=6  68%10=8  
             TempData[7]=dofly_DuanMa[s%10];
                 DelayMs(250);
                 DelayMs(250);
                 TempData[6]=0;
                 TempData[7]=0;
                 DelayMs(250);
                 DelayMs(250);
                }
              TempData[6]=dofly_DuanMa[s/10];//分解显示信息,如要显示68,则68/10=6  68%10=8  
           TempData[7]=dofly_DuanMa[s%10];
           TempData[5]=0x40;
           if(num==2)
           {
             TempData[3]=dofly_DuanMa[m/10];//分解显示信息,如要显示68,则68/10=6  68%10=8  
             TempData[4]=dofly_DuanMa[m%10];
                 DelayMs(250);
                 DelayMs(250);
                 TempData[3]=0;
                 TempData[4]=0;
                 DelayMs(250);
                 DelayMs(250);
           }
           TempData[3]=dofly_DuanMa[m/10];//分解显示信息,如要显示68,则68/10=6  68%10=8  
           TempData[4]=dofly_DuanMa[m%10];
           TempData[2]=0x40;
           if(num==3)
           {
             TempData[0]=dofly_DuanMa[h/10];//分解显示信息,如要显示68,则68/10=6  68%10=8  
             TempData[1]=dofly_DuanMa[h%10];
                 DelayMs(250);
                 DelayMs(250);
                 TempData[0]=0;
                 TempData[1]=0;
                 DelayMs(250);
                 DelayMs(250);
           }
           TempData[0]=dofly_DuanMa[h/10];//分解显示信息,如要显示68,则68/10=6  68%10=8  
           TempData[1]=dofly_DuanMa[h%10];
                     // Display(0,8); //显示全部8位
     //主循环中添加其他需要一直工作的程序
}                                                                 
}
num值0~1的变换轻按按键key0即可,1~2,2~3则需重按key0,这应该也不是DelayMS()的问题,我改变过DelayMS()的值,也没有解决上述问题!会不会是后面的执行程序太多而耽误的问题呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。