找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2758|回復: 13
收起左側

求助單片機C語言按鍵的不同時間長按識別程序

  [復制鏈接]
ID:1041297 發(fā)表于 2023-3-20 14:08 | 顯示全部樓層 |閱讀模式
請問怎么寫3s識別一次長按,Led燈亮,4秒也實現(xiàn)一次長按,Led燈滅。而且不能按鍵松開才執(zhí)行效果,不能用任何循環(huán)語句(while或者for循環(huán)),只能用判斷語句來識別.
回復

使用道具 舉報

ID:69038 發(fā)表于 2023-3-20 14:34 | 顯示全部樓層
3秒和4秒的差別,一個開一個關,普通人實操時還真掐不準這時間。。。不能用循環(huán),就用定時器計數(shù)吧~~
回復

使用道具 舉報

ID:839835 發(fā)表于 2023-3-20 14:38 | 顯示全部樓層
void keyscan()
{
   if(keydownd)
{
  timercnt++;
  if(timercnt > 3000)
  {
     timercnt  = 0;
     led_on();
  }
}
else
{
timercnt  = 0;
}
}
回復

使用道具 舉報

ID:624769 發(fā)表于 2023-3-20 16:49 來自觸屏版 | 顯示全部樓層
不松開才執(zhí)行,怎么在三秒的時候知道你不是打算按4秒呢?你不覺得這個要求前后矛盾么?
回復

使用道具 舉報

ID:139866 發(fā)表于 2023-3-20 17:29 | 顯示全部樓層
0秒的時候檢測按下,
三秒的時候檢測松開,如果松開用個標志位記下,
四秒的時候檢測松開,如果松開再用個標志位記下,
檢測完了根據(jù)這兩個標志位就知道一共按了三秒還是4秒了。

當然,這個方法即時性不高,你可以提高檢測頻率從而提高即時性
回復

使用道具 舉報

ID:354404 發(fā)表于 2023-3-20 19:57 | 顯示全部樓層
最好是使用定時器實現(xiàn)會比較方便
回復

使用道具 舉報

ID:213173 發(fā)表于 2023-3-21 07:00 | 顯示全部樓層
設計按鍵短按長按本身不是什么難題,問題是邏輯上要能說得通。長按不等按鍵松開就執(zhí)行效果也很簡單。但你按下時間達3秒,單片機如何判斷你想按3秒還是4秒必須有另一個判斷條件,否則辦不到。比如按下時間達3秒,查詢LED狀態(tài),LED狀態(tài)滅則開亮,否則等待到達4秒時關閉。
回復

使用道具 舉報

ID:384109 發(fā)表于 2023-3-21 08:01 | 顯示全部樓層
這是純粹的偷懶,想通過單一的東西獲得多個結果,最后只得到一個大麻煩
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-3-21 09:59 | 顯示全部樓層
檢測到按下,計數(shù)即可,超級簡單
回復

使用道具 舉報

ID:123036 發(fā)表于 2023-3-21 11:24 | 顯示全部樓層
MultiButton你值得擁有github.com/0x1abin/MultiButton
回復

使用道具 舉報

ID:485350 發(fā)表于 2023-4-4 17:54 | 顯示全部樓層
//10ms內(nèi)處理
if(Key1_IO == 0)
{
    if(Key_Count != 0xffff)
   {
     Key_Count++;
   }
    if(Key_Count == 300)
    {
      Led_IO = ON;
    }
    if(Key_Count == 400)
    {
     Led_IO = OFF;
    }
}
else

{
   Key_Count = 0;

}

回復

使用道具 舉報

ID:1045628 發(fā)表于 2023-4-6 14:41 | 顯示全部樓層
這樣吧,直接開一個定時器的輸入捕獲通道,然后再讀捕獲到的電平時間,就能判斷是3秒還是4秒了;當然,確保你的按鍵沒有抖動,但機械按鍵沒抖動好像不太可能,那就吧抖動忽略,畢竟對于3、4秒來說抖動是很短暫的
回復

使用道具 舉報

ID:517951 發(fā)表于 2023-4-8 08:17 | 顯示全部樓層
用定時器1ms中斷計時, 加狀態(tài)機就可以實現(xiàn)按鍵防抖功能以及單按,長按,雙擊,等功能.
回復

使用道具 舉報

ID:291668 發(fā)表于 2023-4-8 10:20 | 顯示全部樓層
不知道要實現(xiàn)什么效果,如果按著一直不動,按你的要求會看到燈亮一下就滅掉。然后就沒有了。除非松開 再重新長按?梢蚤_個定時器來實現(xiàn),10ms中斷。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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