久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2476|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

想請(qǐng)問(wèn)一下各位帶佬,想要實(shí)現(xiàn)按下開(kāi)關(guān)3s后再實(shí)現(xiàn)某一項(xiàng)功能,編程思路是什么啊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:811125 發(fā)表于 2020-8-4 11:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我的老師給了我一個(gè)編程任務(wù),需要按下開(kāi)關(guān)3s后再實(shí)現(xiàn)某一項(xiàng)功能,請(qǐng)問(wèn)編程思路是什么啊,如何將單片機(jī)的計(jì)時(shí)器與按下開(kāi)關(guān)3S結(jié)合起來(lái)啊
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:195446 發(fā)表于 2020-8-4 15:37 | 只看該作者
判斷開(kāi)關(guān)是否按下,如果確實(shí)按下,啟動(dòng)定時(shí)器:TR置1;3s定時(shí)時(shí)間到,查詢或中斷方式啟動(dòng)實(shí)現(xiàn)某功能。
回復(fù)

使用道具 舉報(bào)

板凳
ID:811213 發(fā)表于 2020-8-4 15:38 | 只看該作者
三秒比較長(zhǎng),先設(shè)一個(gè)定時(shí)器,開(kāi)中斷,設(shè)一個(gè)內(nèi)存全局變量,每次中斷變量加1,主程序查詢變量值,當(dāng)變量大于某個(gè)值時(shí)執(zhí)行特定功能。
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2020-8-4 16:07 | 只看該作者
if(3s && x){//........}
回復(fù)

使用道具 舉報(bào)

5#
ID:811253 發(fā)表于 2020-8-4 16:40 | 只看該作者
開(kāi)啟一個(gè)100MS中斷一次的定時(shí)器,里面一個(gè)變量自加,按下按鍵自加變量清0,當(dāng)自加變量變?yōu)椤?30,即3S時(shí)到了。此時(shí)執(zhí)行要想執(zhí)行的任務(wù)即可。
回復(fù)

使用道具 舉報(bào)

6#
ID:810487 發(fā)表于 2020-8-4 16:42 | 只看該作者
先設(shè)一個(gè)定時(shí)器,開(kāi)中斷,設(shè)一個(gè)內(nèi)存全局變量,每次中斷變量加1,主程序查詢變量值,當(dāng)變量大于某個(gè)值時(shí)執(zhí)行特定功能。
回復(fù)

使用道具 舉報(bào)

7#
ID:811253 發(fā)表于 2020-8-4 16:44 | 只看該作者
思路:程序開(kāi)啟一個(gè)1MS的定時(shí)器,定義一個(gè)變量,每次定時(shí)器中斷即自加1。當(dāng)按下熱鍵即對(duì)變量清0,當(dāng)變量自加到3000即為3MS時(shí)間到了。
回復(fù)

使用道具 舉報(bào)

8#
ID:811253 發(fā)表于 2020-8-4 16:45 | 只看該作者
程序開(kāi)啟一個(gè)1MS的定時(shí)器,定義一個(gè)變量,每次定時(shí)器中斷即自加1。當(dāng)按下熱鍵即對(duì)變量清0,當(dāng)變量自加到3000即為3MS時(shí)間到了。
回復(fù)

使用道具 舉報(bào)

9#
ID:804115 發(fā)表于 2020-8-4 19:10 | 只看該作者
#define KEY_TIMEOUT_MS        3000
#define KEY_PRESSED  1 //按鍵按下
#define KEY_RELEASED 0 //按鍵釋放

unsigned char isTimerRunningFlag = 0;
unsigned int SysTickCnt = 0;
unsigned int OldSysTickCnt = 0;
unsigned char KeyStatus = KEY_RELEASED;


void delay_ms(unsigned int T_ms)
{
        unsigned int TickTmp = GetSysTick();
        while(GetSysTick()-TickTmp < T_ms){}
}

unsigned char keyPressed(void)
{
        //自己綁定到按鍵IO上,當(dāng)有按鍵按下時(shí),返回真,否則返回0
}

unsigned int GetSysTick(void)
{
        //自己完善定時(shí)任務(wù),開(kāi)啟一個(gè)定時(shí)器,讓其1ms產(chǎn)生一次中斷,在中斷里調(diào)用:SysTickCnt++;
        return SysTickCnt;
}

void main(void)
{
        //按鍵初始化
        //定時(shí)器初始化
       
        while(1)
        {
                //檢測(cè)按鍵按下,啟動(dòng)計(jì)時(shí)
                if(keyPressed() == 1 && KeyStatus == KEY_RELEASED)
                {
                        delay_ms(20);//消除按鍵抖動(dòng)
                        if(keyPressed() == 1)
                        {
                                KeyStatus = KEY_PRESSED;
                                isTimerRunningFlag = 1;
                                OldSysTickCnt = GetSysTick();
                        }
                }
                //檢測(cè)到按鍵釋放,關(guān)閉計(jì)時(shí)
                if(keyPressed() == 0)
                {
                        KeyStatus = KEY_RELEASED;
                        isTimerRunningFlag = 0;
                }
                               
                //檢測(cè)按鍵保持時(shí)長(zhǎng)是否超過(guò)3秒
                if(isTimerRunningFlag == 1)
                {
                        if( (GetSysTick()-OldSysTickCnt) > KEY_TIMEOUT_MS )//3000ms超時(shí)
                        {
                                //在這里寫(xiě)入你想實(shí)現(xiàn)的功能
                                //do something
                               
                               
                                /* 清除定時(shí)任務(wù),保證一次按鍵只執(zhí)行一次*/
                                isTimerRunningFlag = 0;
                        }
                }
        }
}
回復(fù)

使用道具 舉報(bào)

10#
ID:811125 發(fā)表于 2020-8-5 09:11 | 只看該作者
1692483014 發(fā)表于 2020-8-4 19:10
#define KEY_TIMEOUT_MS        3000
#define KEY_PRESSED  1 //按鍵按下
#define KEY_RELEASED 0 //按鍵釋放

謝謝!
回復(fù)

使用道具 舉報(bào)

11#
ID:811125 發(fā)表于 2020-8-5 09:12 | 只看該作者
青草麥田 發(fā)表于 2020-8-4 16:45
程序開(kāi)啟一個(gè)1MS的定時(shí)器,定義一個(gè)變量,每次定時(shí)器中斷即自加1。當(dāng)按下熱鍵即對(duì)變量清0,當(dāng)變量自加到300 ...

謝謝!
回復(fù)

使用道具 舉報(bào)

12#
ID:307020 發(fā)表于 2020-8-5 12:02 | 只看該作者
設(shè)置一計(jì)數(shù)(定時(shí))器按下開(kāi)關(guān)時(shí)開(kāi)始對(duì)MCU時(shí)鐘計(jì)數(shù),將3s及你的MCU時(shí)鐘周期計(jì)算出所需要的脈沖數(shù),當(dāng)按下開(kāi)關(guān),該計(jì)數(shù)器到達(dá)所需要的脈沖數(shù)時(shí)就去實(shí)現(xiàn)那需要的功能便可
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产精品一区二区 | 91大神新作在线观看 | av片网站 | 国产精品小视频在线观看 | 国产综合在线视频 | 日韩不卡三区 | 中文字幕不卡在线88 | 色伊人久久 | 91xxx在线观看 | 欧美日韩视频在线 | 久久久久久久一区 | 日本久久久一区二区三区 | 久久免费精品 | 日韩a在线 | 国产精品久久久久久久一区探花 | 国产欧美一区二区精品久导航 | 亚洲午夜视频在线观看 | 福利片在线看 | 亚洲精品一区中文字幕 | 国产女人与拘做受免费视频 | 国产成人网 | 91精品国产综合久久精品 | 涩在线 | 中文在线www | 色视频网站在线观看 | 国产精品一区视频 | 亚洲 欧美 另类 综合 偷拍 | 日韩中文不卡 | 一区二区三区视频在线免费观看 | 福利一区在线观看 | 久久精品成人 | 噜噜噜色网 | 一区二区伦理电影 | 国产色婷婷精品综合在线手机播放 | 中文字幕亚洲精品 | 一级做a爰片久久毛片免费看 | 日韩成人在线免费观看 | 日本高清aⅴ毛片免费 | 成人黄色电影免费 | 亚洲成人一区 | 国产精品视频中文字幕 |