欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 一個MCU按鍵如何實現 長按開機 和 長按關機? [打印本頁]

作者: 598651219898321    時間: 2020-6-20 14:18
標題: 一個MCU按鍵如何實現 長按開機 和 長按關機?
如何使用單獨按鍵  長按開機  長按關機
長按開機是用外部中斷喚醒
如何在按鍵按下進入外部中斷得時候 到2秒才執行喚醒求大佬給一些代碼看看,這個卡了一天時間了,


作者: 3116084089    時間: 2020-6-20 19:36
用代碼進行條件延遲  延遲3s 即可
作者: hange_v    時間: 2020-6-20 21:53
試試阻容加比較器,再用外部中斷
作者: wulin    時間: 2020-6-21 09:08
設置一個標志,初次上電關閉外部中斷,其端口作為普通按鍵輸入。當按鍵按下達到預定時間等待松手,松手后,標志置位,開外部中斷下降沿有效,啟動睡眠,如按鍵按下沒有達到預定時間無效。當睡眠中按下按鍵喚醒并立即關閉外部中斷,其端口恢復為普通按鍵輸入。當按鍵按下達到預定時間等待松手,此時根據標志判斷執行開機,標志復位。如按鍵按下沒有達到預定時間則恢復開外部中斷下降沿有效,啟動睡眠。標志位是按鍵程序走向的核心!
作者: haokey    時間: 2020-6-23 11:58
if(按下)
{    if(按下未松開標志位 == 0)//松開后再進行第二次計數
    {
        計數++;        if(計數 >= 2s)//2s后確認為按下
        {
            計數 = 0;
            按下未松開標志位 = 1;//
            //要執行的代碼
            //要執行的代碼
            //要執行的代碼
            //要執行的代碼
        }
    }
}
else//松開或按下未到2s松開
{
    計數 = 0;//松開就清零
    按下未松開標志位 = 1;
}


作者: Y_G_G    時間: 2020-6-23 13:49
我有匯編的,你要不?
原理是差不多的:
1:先設定關閉外部中斷喚醒
2:在開機狀態下按下按鍵就開始查詢時間,時間到了還沒有松開就關機,時間沒有到就松開,就什么也不做
3:關機之前開啟外部中斷喚醒,然后再進入掉電模式
4:按鍵按下就進入中斷并喚醒,查詢時間,時間到了還沒有松開就開機,時間沒有到就松開的,退出中斷之后再次進入掉電模式

作者: yyzzww    時間: 2020-6-23 14:41
獲取系統時間,設置全局標志 start_flag ,按鍵中斷配置為雙邊沿觸發,下降沿得時候獲取一個系統時間,記錄到 pressed_time 變量,當上升沿觸發得時候,用當前系統時間減去 pressed_time,大于2s 啟動標志設置為 1,執行對應得代碼就可以啦
作者: Chellson    時間: 2020-6-23 15:44
試一下用中斷
作者: xxpp2011    時間: 2020-6-25 13:10
本帖最后由 xxpp2011 于 2020-6-25 21:33 編輯

while(Key==0)
{
delay(100);
time=time+100;
}
if(time>=2000)執行對應操作;
time=0;
作者: cdlongbo    時間: 2020-6-26 13:43
設置一個全局變量,這個值就一個延時量,開機或者關機時不斷累加一個變量當這個變量值等于設定的按鍵值時就執行相應的開機或者關機!
作者: 權威人物    時間: 2020-7-18 09:35
你所說的喚醒是什么?單片機不會關機的,只會進入低功效模式,在此模式下關閉外設等一系列省電,開啟外部中斷喚醒,一旦接觸到外部電平喚醒即按鍵按下會立刻喚醒單片機處理(硬件是否對按鍵做延時不考慮的情況下,如果此按鍵只有長按開關機的話可以考慮用硬件延時,并不推薦),此時如果你的喚醒是外面能看到的工作的話,那么單片機調用計時函數計算按鍵是否長按來決定是否開啟外設,否則繼續進入低功效模式
作者: 上善若水001    時間: 2020-7-18 10:20
權威人物 發表于 2020-7-18 09:35
你所說的喚醒是什么?單片機不會關機的,只會進入低功效模式,在此模式下關閉外設等一系列省電,開啟外部中 ...

你好,請問為什么不推薦 硬件延時電路呢?是成本問題還是可靠性問題?

作者: daiwenping    時間: 2020-7-20 09:45
Chellson 發表于 2020-6-23 15:44
試一下用中斷

初學者,學習一下
作者: 權威人物    時間: 2020-7-20 15:49
上善若水001 發表于 2020-7-18 10:20
你好,請問為什么不推薦 硬件延時電路呢?是成本問題還是可靠性問題?

程序能完成的為什么要用硬件增加成本?為了節省單片機運行兩秒時間的電嗎?
作者: 556cv    時間: 2020-7-20 16:15
用外部中斷,按鍵設為雙邊沿觸發
作者: 414    時間: 2021-7-13 14:20
Y_G_G 發表于 2020-6-23 13:49
我有匯編的,你要不?
原理是差不多的:
1:先設定關閉外部中斷喚醒

可以看一下你的匯編程序嗎
作者: npn    時間: 2021-7-13 15:24
外部中斷觸發后打開定時器中斷(注意中斷優先級),累加按鍵按住的時間,松開清零,滿2秒開機。
作者: 790116460    時間: 2021-7-19 18:48
    這里有兩種方案
    1、軟件實現,通過外部IO觸發中斷喚醒,然后MCU進行計時,不到2s就不響應,繼續進入休眠模式
    2、硬件實現,外部加個比較大的電容,到2s,才產生對應的高電平

作者: 軒轅頂托    時間: 2021-7-19 23:45
這里有兩種方案  1、軟件實現,通過外部IO觸發中斷喚醒,然后MCU進行計時,不到2s就不響應,繼續進入休眠模式  2、硬件實現,外部加個比較大的電容,到2s,才產生對應的高電平
作者: huadong1357    時間: 2021-7-20 08:52
790116460 發表于 2021-7-19 18:48
這里有兩種方案
    1、軟件實現,通過外部IO觸發中斷喚醒,然后MCU進行計時,不到2s就不響應,繼續進 ...

用電容延時要考慮 高低溫情況下 電容容量的變化導致 延時時間的誤差;同時電容自身也存在容量誤差;
作者: 名字不是重點    時間: 2021-7-20 09:19
不給代碼,給你說一下按鍵操作的4個狀態,1、持續釋放,2、按下瞬間,3、持續按下,4、釋放瞬間。這4個狀態你都能檢測到,長短按對你來說都不是事了




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