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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9314|回復(fù): 20
收起左側(cè)

一個(gè)MCU按鍵如何實(shí)現(xiàn) 長按開機(jī) 和 長按關(guān)機(jī)?

  [復(fù)制鏈接]
ID:602673 發(fā)表于 2020-6-20 14:18 | 顯示全部樓層 |閱讀模式
如何使用單獨(dú)按鍵  長按開機(jī)  長按關(guān)機(jī)
長按開機(jī)是用外部中斷喚醒
如何在按鍵按下進(jìn)入外部中斷得時(shí)候 到2秒才執(zhí)行喚醒求大佬給一些代碼看看,這個(gè)卡了一天時(shí)間了,

回復(fù)

使用道具 舉報(bào)

ID:785268 發(fā)表于 2020-6-20 19:36 | 顯示全部樓層
用代碼進(jìn)行條件延遲  延遲3s 即可
回復(fù)

使用道具 舉報(bào)

ID:190832 發(fā)表于 2020-6-20 21:53 | 顯示全部樓層
試試阻容加比較器,再用外部中斷
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-6-21 09:08 | 顯示全部樓層
設(shè)置一個(gè)標(biāo)志,初次上電關(guān)閉外部中斷,其端口作為普通按鍵輸入。當(dāng)按鍵按下達(dá)到預(yù)定時(shí)間等待松手,松手后,標(biāo)志置位,開外部中斷下降沿有效,啟動(dòng)睡眠,如按鍵按下沒有達(dá)到預(yù)定時(shí)間無效。當(dāng)睡眠中按下按鍵喚醒并立即關(guān)閉外部中斷,其端口恢復(fù)為普通按鍵輸入。當(dāng)按鍵按下達(dá)到預(yù)定時(shí)間等待松手,此時(shí)根據(jù)標(biāo)志判斷執(zhí)行開機(jī),標(biāo)志復(fù)位。如按鍵按下沒有達(dá)到預(yù)定時(shí)間則恢復(fù)開外部中斷下降沿有效,啟動(dòng)睡眠。標(biāo)志位是按鍵程序走向的核心!

評分

參與人數(shù) 1黑幣 +5 收起 理由
MOVEORDIE + 5 贊一個(gè)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:569384 發(fā)表于 2020-6-23 11:58 | 顯示全部樓層
if(按下)
{    if(按下未松開標(biāo)志位 == 0)//松開后再進(jìn)行第二次計(jì)數(shù)
    {
        計(jì)數(shù)++;        if(計(jì)數(shù) >= 2s)//2s后確認(rèn)為按下
        {
            計(jì)數(shù) = 0;
            按下未松開標(biāo)志位 = 1;//
            //要執(zhí)行的代碼
            //要執(zhí)行的代碼
            //要執(zhí)行的代碼
            //要執(zhí)行的代碼
        }
    }
}
else//松開或按下未到2s松開
{
    計(jì)數(shù) = 0;//松開就清零
    按下未松開標(biāo)志位 = 1;
}

回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2020-6-23 13:49 | 顯示全部樓層
我有匯編的,你要不?
原理是差不多的:
1:先設(shè)定關(guān)閉外部中斷喚醒
2:在開機(jī)狀態(tài)下按下按鍵就開始查詢時(shí)間,時(shí)間到了還沒有松開就關(guān)機(jī),時(shí)間沒有到就松開,就什么也不做
3:關(guān)機(jī)之前開啟外部中斷喚醒,然后再進(jìn)入掉電模式
4:按鍵按下就進(jìn)入中斷并喚醒,查詢時(shí)間,時(shí)間到了還沒有松開就開機(jī),時(shí)間沒有到就松開的,退出中斷之后再次進(jìn)入掉電模式
回復(fù)

使用道具 舉報(bào)

ID:787643 發(fā)表于 2020-6-23 14:41 | 顯示全部樓層
獲取系統(tǒng)時(shí)間,設(shè)置全局標(biāo)志 start_flag ,按鍵中斷配置為雙邊沿觸發(fā),下降沿得時(shí)候獲取一個(gè)系統(tǒng)時(shí)間,記錄到 pressed_time 變量,當(dāng)上升沿觸發(fā)得時(shí)候,用當(dāng)前系統(tǒng)時(shí)間減去 pressed_time,大于2s 啟動(dòng)標(biāo)志設(shè)置為 1,執(zhí)行對應(yīng)得代碼就可以啦
回復(fù)

使用道具 舉報(bào)

ID:783844 發(fā)表于 2020-6-23 15:44 | 顯示全部樓層
試一下用中斷
回復(fù)

使用道具 舉報(bào)

ID:452950 發(fā)表于 2020-6-25 13:10 | 顯示全部樓層
本帖最后由 xxpp2011 于 2020-6-25 21:33 編輯

while(Key==0)
{
delay(100);
time=time+100;
}
if(time>=2000)執(zhí)行對應(yīng)操作;
time=0;
回復(fù)

使用道具 舉報(bào)

ID:790159 發(fā)表于 2020-6-26 13:43 | 顯示全部樓層
設(shè)置一個(gè)全局變量,這個(gè)值就一個(gè)延時(shí)量,開機(jī)或者關(guān)機(jī)時(shí)不斷累加一個(gè)變量當(dāng)這個(gè)變量值等于設(shè)定的按鍵值時(shí)就執(zhí)行相應(yīng)的開機(jī)或者關(guān)機(jī)!
回復(fù)

使用道具 舉報(bào)

ID:311846 發(fā)表于 2020-7-18 09:35 | 顯示全部樓層
你所說的喚醒是什么?單片機(jī)不會(huì)關(guān)機(jī)的,只會(huì)進(jìn)入低功效模式,在此模式下關(guān)閉外設(shè)等一系列省電,開啟外部中斷喚醒,一旦接觸到外部電平喚醒即按鍵按下會(huì)立刻喚醒單片機(jī)處理(硬件是否對按鍵做延時(shí)不考慮的情況下,如果此按鍵只有長按開關(guān)機(jī)的話可以考慮用硬件延時(shí),并不推薦),此時(shí)如果你的喚醒是外面能看到的工作的話,那么單片機(jī)調(diào)用計(jì)時(shí)函數(shù)計(jì)算按鍵是否長按來決定是否開啟外設(shè),否則繼續(xù)進(jìn)入低功效模式
回復(fù)

使用道具 舉報(bào)

ID:228467 發(fā)表于 2020-7-18 10:20 | 顯示全部樓層
權(quán)威人物 發(fā)表于 2020-7-18 09:35
你所說的喚醒是什么?單片機(jī)不會(huì)關(guān)機(jī)的,只會(huì)進(jìn)入低功效模式,在此模式下關(guān)閉外設(shè)等一系列省電,開啟外部中 ...

你好,請問為什么不推薦 硬件延時(shí)電路呢?是成本問題還是可靠性問題?
回復(fù)

使用道具 舉報(bào)

ID:3241 發(fā)表于 2020-7-20 09:45 | 顯示全部樓層

初學(xué)者,學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:311846 發(fā)表于 2020-7-20 15:49 | 顯示全部樓層
上善若水001 發(fā)表于 2020-7-18 10:20
你好,請問為什么不推薦 硬件延時(shí)電路呢?是成本問題還是可靠性問題?

程序能完成的為什么要用硬件增加成本?為了節(jié)省單片機(jī)運(yùn)行兩秒時(shí)間的電嗎?
回復(fù)

使用道具 舉報(bào)

ID:801957 發(fā)表于 2020-7-20 16:15 | 顯示全部樓層
用外部中斷,按鍵設(shè)為雙邊沿觸發(fā)
回復(fù)

使用道具 舉報(bào)

ID:947437 發(fā)表于 2021-7-13 14:20 | 顯示全部樓層
Y_G_G 發(fā)表于 2020-6-23 13:49
我有匯編的,你要不?
原理是差不多的:
1:先設(shè)定關(guān)閉外部中斷喚醒

可以看一下你的匯編程序嗎
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2021-7-13 15:24 | 顯示全部樓層
外部中斷觸發(fā)后打開定時(shí)器中斷(注意中斷優(yōu)先級),累加按鍵按住的時(shí)間,松開清零,滿2秒開機(jī)。
回復(fù)

使用道具 舉報(bào)

ID:954312 發(fā)表于 2021-7-19 18:48 | 顯示全部樓層
    這里有兩種方案
    1、軟件實(shí)現(xiàn),通過外部IO觸發(fā)中斷喚醒,然后MCU進(jìn)行計(jì)時(shí),不到2s就不響應(yīng),繼續(xù)進(jìn)入休眠模式
    2、硬件實(shí)現(xiàn),外部加個(gè)比較大的電容,到2s,才產(chǎn)生對應(yīng)的高電平

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:954170 發(fā)表于 2021-7-19 23:45 來自觸屏版 | 顯示全部樓層
這里有兩種方案  1、軟件實(shí)現(xiàn),通過外部IO觸發(fā)中斷喚醒,然后MCU進(jìn)行計(jì)時(shí),不到2s就不響應(yīng),繼續(xù)進(jìn)入休眠模式  2、硬件實(shí)現(xiàn),外部加個(gè)比較大的電容,到2s,才產(chǎn)生對應(yīng)的高電平
回復(fù)

使用道具 舉報(bào)

ID:928589 發(fā)表于 2021-7-20 08:52 | 顯示全部樓層
790116460 發(fā)表于 2021-7-19 18:48
這里有兩種方案
    1、軟件實(shí)現(xiàn),通過外部IO觸發(fā)中斷喚醒,然后MCU進(jìn)行計(jì)時(shí),不到2s就不響應(yīng),繼續(xù)進(jìn) ...

用電容延時(shí)要考慮 高低溫情況下 電容容量的變化導(dǎo)致 延時(shí)時(shí)間的誤差;同時(shí)電容自身也存在容量誤差;
回復(fù)

使用道具 舉報(bào)

ID:824490 發(fā)表于 2021-7-20 09:19 | 顯示全部樓層
不給代碼,給你說一下按鍵操作的4個(gè)狀態(tài),1、持續(xù)釋放,2、按下瞬間,3、持續(xù)按下,4、釋放瞬間。這4個(gè)狀態(tài)你都能檢測到,長短按對你來說都不是事了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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