找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1165|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)按鍵程序有時(shí)候觸發(fā)不了是為什么?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:582403 發(fā)表于 2023-6-20 08:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. void Key_Scan(void)
  2. {
  3.            if(S1 == 0)
  4.            {
  5.                                  Old_flag = S1;
  6.                                  gKeyCnt++;
  7.            }
  8.            else
  9.            {         
  10.                       if(Old_flag == 0)
  11.                       {
  12.                           Old_flag = S1;
  13.                                  if(gKeyCnt>3&&gKeyCnt<1000)
  14.                    {
  15.                                      if(gKeyValue < 10)
  16.                                      {
  17.                                                 gKeyValue++;
  18.                                      }
  19.                                             else
  20.                                             {
  21.                                                        gKeyValue = 0;
  22.                                             }
  23.                                  }
  24.                                 
  25.   //--------處理鍵值-------------------------
  26.                           switch(gKeyValue)
  27.                    {
  28.                                             case 0:                  
  29.                                             {
  30.                                                        Sleep_Flag = 0;
  31.                                                 break;
  32.                                             }
  33.                                             case 1:       
  34.                                             {
  35.                                                 Red = 0;
  36.                                                 break;
  37.                                             }
  38.                                             case 2:
  39.                                             {
  40.                                                        Green = 0;
  41.                                                 break;
  42.                                             }
  43.                               case 3:
  44.                                             {
  45.                                                        Red = 1;
  46.                                                 break;
  47.                                             }
  48.                                             case 4:
  49.                                             {
  50.                                                        Blue = 0;
  51.                                                 break;
  52.                                             }
  53.                                             case 5:
  54.                                             {
  55.                                                        Green = 1;
  56.                                                 break;
  57.                                             }
  58.                                             case 6:
  59.                                             {
  60.                                                        Red = 0;
  61.                                                        break;
  62.                                             }                                       
  63.                               case 7:
  64.                                             {
  65.                                                        Green = 0;
  66.                                          break;  
  67.                                             }
  68.                               case 8:
  69.                                             {
  70.                                                        Auto_Flag = 1;
  71.                                                        Red = 1;
  72.                                                        Green = 1;
  73.                                                        Blue = 1;
  74.                                          break;  
  75.                                             }  
  76.                               case 9:
  77.                                             {
  78.                                                        Auto_Flag = 0;
  79.                                                        Breath_Flag = 1;
  80.                                          break;  
  81.                                             }
  82.                               case 10:
  83.                                             {
  84.                                                        Breath_Flag = 0;
  85.                                                        Sleep_Flag = 0;
  86.                                          break;  
  87.                                             }         
  88.                    }
  89.                        Delay_Off();
  90.                       }
  91.                       else
  92.                       {
  93.                                  gKeyCnt = 0;
  94.                       }
  95.            }
  96. }
復(fù)制代碼
有沒有大佬幫我看一下啊,按鍵有時(shí)候會觸發(fā)不了,呼吸燈和自動流水,都是在delay里加了keyscan,檢測到標(biāo)志位就break,拜求各位大佬了。!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2023-6-20 11:05 | 只看該作者
呼吸燈和自動流水都不要用delay
回復(fù)

使用道具 舉報(bào)

板凳
ID:1085324 發(fā)表于 2023-6-21 11:03 | 只看該作者
因?yàn)閱纹瑱C(jī)執(zhí)行的速度過快,也由于程序的復(fù)雜程度使程序走到部分代碼階段會出不去,出不去就一直執(zhí)行.在你按按鍵和執(zhí)行中斷的時(shí)候剛好走進(jìn)這個(gè)循環(huán)里,程序判斷當(dāng)然是進(jìn)入中斷,然后中斷完了回來這個(gè)循環(huán)造成這個(gè)循環(huán)變死循環(huán)了.也就是你中斷改變了一些因子使程序原本那個(gè)循環(huán)的因子突然遭到改變而出不去.然后死循環(huán)了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表