標(biāo)題:
單片機(jī)按鍵長(zhǎng)短按識(shí)別程序的問(wèn)題
[打印本頁(yè)]
作者:
daiya
時(shí)間:
2018-11-17 14:49
標(biāo)題:
單片機(jī)按鍵長(zhǎng)短按識(shí)別程序的問(wèn)題
以下是一段識(shí)別按鍵長(zhǎng)短按得單片機(jī)程序段,可是放到程序里卻不能執(zhí)行,請(qǐng)各位高手指導(dǎo)一下問(wèn)題出在哪里?
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;
}
}
}
作者:
紅楓葉
時(shí)間:
2018-11-17 15:32
可以改一下延時(shí)
作者:
xiong2013
時(shí)間:
2018-11-17 17:56
可能for循環(huán)語(yǔ)句中當(dāng)出現(xiàn)for循環(huán)過(guò)程中松開(kāi)按鍵,沒(méi)有及時(shí)跳出循環(huán),用break跳出當(dāng)前循環(huán),有問(wèn)題估計(jì)也就在循環(huán)體內(nèi)
作者:
HC6800-ES-V2.0
時(shí)間:
2018-11-18 09:08
你這個(gè)程序的關(guān)鍵,就是for的循環(huán)時(shí)間,你確定你的長(zhǎng)按時(shí)間是多少嗎?如果你的長(zhǎng)按時(shí)間沒(méi)到,也就不會(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)成功了的。
作者:
zl2168
時(shí)間:
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)
2018-11-19 16:11 上傳
點(diǎn)擊文件名下載附件
4種不同方式鍵控信號(hào)燈.jpg
(161.52 KB, 下載次數(shù): 27)
下載附件
2018-11-19 16:11 上傳
以上摘自張志良編著《
80C51
單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于
Keil C
和
Proteus
》清華大學(xué)出版社
ISBN 978-7-302-41682-1.書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,程序語(yǔ)句條條有注解。
作者:
yong761228
時(shí)間:
2018-11-18 17:26
我也剛學(xué)單片機(jī)不久,是不是for循環(huán)語(yǔ)句應(yīng)該這樣寫(xiě),for(keytime = 0; ((key == KEY_DOWN) && keytime < LONG_KEY); keytime++)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1