標(biāo)題: 51單片機(jī)程序如何在按鍵K1 K2內(nèi)循環(huán)? [打印本頁]

作者: zhijie327    時(shí)間: 2021-7-10 10:53
標(biāo)題: 51單片機(jī)程序如何在按鍵K1 K2內(nèi)循環(huán)?
  while(1)
{
   if(K1 == 0)
  {
    delay();
   while(!K1);
     
      
   MA   = 0;
   MB   = 1;
   MC   = 0;
   MD   = 0;
   delay10s();
   MA   = 0;
   MB   = 0;
   MC   = 0;
   MD   = 1;
   delay10s();
  }
  if(K2 == 0)
  {
      delay();
   while(!K2);
    MA   = 1;
   MB   = 0;
   MC   = 0;
   MD   = 0;
   delay10s();
   MA   = 0;
   MB   = 0;
   MC   = 1;
   MD   = 0;
   delay10s();
       }


}
}

作者: yzwzfyz    時(shí)間: 2021-7-10 15:39
畫個(gè)框圖就可以了。
作者: 壓著我頭發(fā)啦    時(shí)間: 2021-7-10 16:12
增加一個(gè)標(biāo)志位,if只更改標(biāo)志位的值,標(biāo)志位的值決定循環(huán)執(zhí)行誰。你的按鍵消抖部分寫的有問題,抄下別人的
作者: lkc8210    時(shí)間: 2021-7-11 13:05
  1. while(1)
  2. {
  3.    if(PushCount++ > 2000)//按鍵掃描延時(shí)
  4.   {
  5.     PushCount=0;
  6.     if(!K1 && K1_Old)//下降沿檢測(cè)
  7.     {
  8.         K1_Flag = 1;
  9.         K2_Flag = 0;
  10.     }
  11.     if(!K2 && K2_Old)//下降沿檢測(cè)
  12.     {
  13.         K1_Flag = 0;
  14.         K2_Flag = 1;
  15.     }
  16.     K1_Old = K1;
  17.     K2_Old = K2;
  18.   }
  19.     if(K1_Flag)
  20.     {
  21.         K1_Push();//K1按下函數(shù)
  22.     }
  23.     if(K2_Flag)
  24.     {
  25.         K2_Push();//K2按下函數(shù)
  26.     }
  27. }
復(fù)制代碼
任何時(shí)候都不要用太長時(shí)間的delay(如>100us)
如果一定要長時(shí)間延時(shí),可用變數(shù)加1結(jié)合標(biāo)置位代替
例子如下
  1. void K1_Push()
  2. {
  3.     static unsigned int delay_count1, delay_count2;//static 變數(shù)在跳出函數(shù)也不會(huì)被清零
  4.     if(delay_count1++ >1000)
  5.     {
  6.         delay_count1 = 0;
  7.         if(delay_count2++ >1000)
  8.         {
  9.             delay_count2 = 0;
  10.             K1_Mode = !K1_Mode;
  11.         }
  12.     }
  13.     if(K1_Mode)
  14.     {
  15.          MA   = 0;
  16.          MB   = 1;
  17.          MC   = 0;
  18.          MD   = 0;
  19.     }else
  20.     {
  21.          MA   = 0;
  22.          MB   = 0;
  23.          MC   = 0;
  24.          MD   = 1;
  25.     }
  26. }
復(fù)制代碼




作者: 于龍山    時(shí)間: 2021-7-11 22:14
加框圖




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