找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2275|回復: 5
收起左側(cè)

單片機按鍵有時會不起作用?附程序

[復制鏈接]
回帖獎勵 20 黑幣 回復本帖可獲得 20 黑幣獎勵! 每人限 1 次
ID:1079270 發(fā)表于 2023-6-25 12:48 | 顯示全部樓層 |閱讀模式
        if(BLINK_KEY == 0)
           {         
                if(BLINK_Shake == Long_Set_Sak)
                 {
                       if(Blink_State ++ >= 3)        Blink_State = 0;  
                       DataBuffer[0] &= 0xcf;
                       DataBuffer[0] |= (Blink_State << 4);
                       spi_send_en = 1;
                }
                if(BLINK_Shake++ >(Long_Set_Sak + 1))
                BLINK_Shake = Long_Set_Sak +1;




           }
               if(BLINK_KEY)
           {
                BLINK_Shake = 0;  
           }  
問:按鍵按下有時會不起作用,麻煩大佬解答一下

回復

使用道具 舉報

ID:1085316 發(fā)表于 2023-6-25 14:40 | 顯示全部樓層
你這是輪詢檢測的,有時不起作用可能性有:
1、你的輪詢檢測時間太長,比如你200ms檢測一次的話,你按下按鍵的時刻可能還沒到按鍵檢測的執(zhí)行語句,把檢測時長縮短試試。
2、程序中缺少防抖語句,在網(wǎng)上搜一下增加按鍵防抖代碼。
3、要不就換成按鍵外部中斷觸發(fā),用中斷絕對沒問題。
回復

使用道具 舉報

ID:123289 發(fā)表于 2023-6-25 15:42 | 顯示全部樓層
按鍵動作其實還是有點復雜的,初學者會計劃不周:
1、按鍵會有:抖動、短按、長按、按下了、彈起了。
2、響應時機:為方便解說,就以亮燈為響應。
你打算在何時亮燈,按下亮,還是彈起亮?
3、如果按下亮,那么按下未彈起的這段時間,如何應對,例如,按了1分鐘,這1分鐘內(nèi)按鍵信號如何處置?
如果彈起亮,……略,類似。
4、如何界定抖動與連續(xù)兩N次按下。
處理、規(guī)劃好以上問題,你的按鍵就靈了。
回復

使用道具 舉報

ID:1079270 發(fā)表于 2023-6-25 16:59 | 顯示全部樓層
抖動、短按、長按、按下了、彈起了這幾種狀態(tài)我明白,看了金沙灘老師的講解之后我覺得他的代碼有點復雜,不太好理解,就想試試這種簡潔一點的,然后就出錯了
回復

使用道具 舉報

ID:161164 發(fā)表于 2023-6-26 09:35 | 顯示全部樓層
什么時候不起作用?
Blink_State的作用范圍是多少?0~3?還是0~2?
回復

使用道具 舉報

ID:1079270 發(fā)表于 2023-6-26 10:41 | 顯示全部樓層
lkc8210 發(fā)表于 2023-6-26 09:35
什么時候不起作用?
Blink_State的作用范圍是多少?0~3?還是0~2?

0~3,就是按下的時候有時會不起作用,隨機的
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表