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

QQ登錄

只需一步,快速開始

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

單片機(jī)按鍵長(zhǎng)短按識(shí)別程序的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:91521 發(fā)表于 2018-11-17 14:49 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
以下是一段識(shí)別按鍵長(zhǎng)短按得單片機(jī)程序段,可是放到程序里卻不能執(zhí)行,請(qǐng)各位高手指導(dǎo)一下問題出在哪里?
void key_scan(void)
{
        if(key == KEY_DOWN)
        {
                delay_ms(30);
                for(keytime = 0; ((key == KEY_DOWN) && (keytime < LONG_KEY)); keytime++)
                {
                        delay_ms(50);
                }
                if(keytime >= LONG_KEY)
                {

                        led1 = LED_ON;
                        led2 = LED_OFF;               
                }                        
                if((keytime > 0) && (keytime < LONG_KEY))
                {
                    
                        led1 = LED_OFF;
                        led2 = LED_ON;
                }
        }
}   
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:428224 發(fā)表于 2018-11-17 15:32 | 只看該作者
可以改一下延時(shí)
回復(fù)

使用道具 舉報(bào)

板凳
ID:428311 發(fā)表于 2018-11-17 17:56 | 只看該作者
可能for循環(huán)語(yǔ)句中當(dāng)出現(xiàn)for循環(huán)過程中松開按鍵,沒有及時(shí)跳出循環(huán),用break跳出當(dāng)前循環(huán),有問題估計(jì)也就在循環(huán)體內(nèi)
回復(fù)

使用道具 舉報(bào)

地板
ID:164602 發(fā)表于 2018-11-18 09:08 | 只看該作者
你這個(gè)程序的關(guān)鍵,就是for的循環(huán)時(shí)間,你確定你的長(zhǎng)按時(shí)間是多少嗎?如果你的長(zhǎng)按時(shí)間沒到,也就不會(huì)有你預(yù)計(jì)的結(jié)果了。
我是這樣做的:
if (K1==0)
                {
                        n=0;
                        while(~Agoto)
                        {
                                n++;
                                Delay10ms(1);
                                if (n>200)
                                {
                                        break;
                                }
                        }
                        if (n>30)
                        {
                                LED=0xf0;
                        }
                        else
                        {
                                LED=0x0f;
                        }
                }
我這個(gè)是已經(jīng)實(shí)驗(yàn)成功了的。
回復(fù)

使用道具 舉報(bào)

5#
ID:111634 發(fā)表于 2018-11-18 15:44 | 只看該作者
本帖最后由 zl2168 于 2018-11-19 16:12 編輯

給你介紹幾個(gè)按鍵長(zhǎng)短按參考案例
實(shí)例5  4種不同方式鍵控信號(hào)燈

Proteus仿真一下,確認(rèn)有效。 實(shí)例5 不同方式鍵控?zé)?rar (31.72 KB, 下載次數(shù): 17)
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1.書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

6#
ID:405193 發(fā)表于 2018-11-18 17:26 | 只看該作者
我也剛學(xué)單片機(jī)不久,是不是for循環(huán)語(yǔ)句應(yīng)該這樣寫,for(keytime = 0; ((key == KEY_DOWN) && keytime < LONG_KEY); keytime++)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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