標(biāo)題: 如何結(jié)合單片機(jī)定時(shí)器實(shí)現(xiàn)按鍵按一下燈閃爍一次(我是菜鳥) [打印本頁]

作者: barret.zhang    時(shí)間: 2019-8-21 16:28
標(biāo)題: 如何結(jié)合單片機(jī)定時(shí)器實(shí)現(xiàn)按鍵按一下燈閃爍一次(我是菜鳥)
cnt=0;
按鍵按下;cnt++;

if(cnt>3)
{
cnt=0;
}

要求按鍵每按一次燈閃爍一次,不能用delay(100)
這樣子的延時(shí)函數(shù),我寫不出來,求大神幫忙。。。

作者: xianfajushi    時(shí)間: 2019-8-21 20:53
假設(shè)LED=0亮;按鍵=0表示按下,那么,LED=按鍵按下;即可
作者: jiangkeqin_sy    時(shí)間: 2019-8-21 21:27
用中斷啊
作者: bbandpp    時(shí)間: 2019-8-21 23:03
結(jié)合定時(shí)器去做就好
作者: zhy123654    時(shí)間: 2019-8-21 23:14
這個(gè)要學(xué)一下,不是用定時(shí)器,用外中斷0,外中斷很容易,就三句EA=1;EX0=1;IT0=0;不過中斷服務(wù)內(nèi)閃燈還會(huì)用到延時(shí)
作者: hantu    時(shí)間: 2019-8-22 00:47
不能用delay就用定時(shí)中斷唄
作者: whx.000    時(shí)間: 2019-8-22 08:29
if(按鍵按下)
{
開啟定時(shí)器中斷;
}


void 定時(shí)器中斷函數(shù)(100ms)
{
LED = !LED;
關(guān)定時(shí)器中斷;
}
作者: aking991    時(shí)間: 2019-8-22 08:47
如果只是想按一下按鍵燈閃一下,那連定時(shí)器都不需要,三種方法,一種是放在你按鍵函數(shù)中去作,因?yàn)槟惆存I時(shí)軟件有防抖,所以時(shí)間足夠燈閃一下了;另一種是設(shè)置一個(gè)標(biāo)志位,按下按鍵時(shí)標(biāo)志位置1,在主函數(shù)中判斷該標(biāo)志位,是1先清標(biāo)志位后則燈閃一下,但這個(gè)需要用到延時(shí)函數(shù);第3種就是用定時(shí)器,你按下按鍵時(shí)打開定時(shí)器,定時(shí)器設(shè)置多少時(shí)間后LED亮多久,時(shí)間到即關(guān)閉LED燈并關(guān)閉定時(shí)器,這樣就可以了
作者: Host    時(shí)間: 2019-8-22 09:40

cnt=0;按鍵按下;cnt++;

if(cnt>3)
{
cnt=0;
}

首先我覺得延時(shí)函數(shù)很簡(jiǎn)單,相較于定時(shí)器,不如采用延時(shí)。
其次就樓主簡(jiǎn)單的程序我覺得你可能是想通過按鍵按一下亮,按一下不亮
那么
可以這樣寫:
cnt=0;
cnt++;

if(a%2==0)
D1=1;//關(guān)
if(a%2==1)
D1=0;//開
這樣就可以實(shí)現(xiàn)按鍵奇數(shù)次亮,偶數(shù)次滅。不要忘了寫按鍵消抖。

作者: 那個(gè)誰和誰    時(shí)間: 2019-8-22 10:00
按鍵程序要設(shè)置一個(gè)消抖,檢測(cè)到按鍵彈起是定時(shí)器開始計(jì)數(shù),同時(shí)點(diǎn)亮燈,定時(shí)時(shí)間到后,燈滅。也可以設(shè)置一個(gè)標(biāo)志位,當(dāng)按下時(shí),標(biāo)志位置1,時(shí)間到時(shí)標(biāo)志位置0;在主函數(shù)里面檢測(cè)到標(biāo)志位時(shí)燈亮,標(biāo)志位為0時(shí)燈滅。




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