|
對于簡單而且是單一的程序而言,所謂'效率'有時候并不重要
比如我就一個LED手電,按鍵就是開關(guān)的作用而已,這個時候,去抖動,沒有什么比delay更爽的了,手電開了就開了,ADC用中斷,就再也沒有其它的事情做了,我還怕單片機累著了不成?
但是你也必須要學(xué)會提高單片機效率,有的系統(tǒng)對效率確實是有很高的要求的
對于你說的"時間片輪詢法"我沒學(xué)過,基于百度的理解,感覺這也不怎么好
我常用的辦法是:
1,先聲明一個全局變量 time,key結(jié)構(gòu)體其實也行,個人習(xí)慣而已
2,按鍵按下之后,time清除,key置位
3,在systick或者定時器中斷中,time++
4,主函數(shù)就是 if(key&&(time >= 50ms)//50mS由自己決定延時時間
{
key = 0;
執(zhí)行按鍵相關(guān)處理
}
這樣一來,隨便你按鍵怎么按,怎么抖動,它只作一個處理: time = 0; key = 1;
永遠(yuǎn)是以你最后松開按鍵之后,穩(wěn)定了之后的50mS,再執(zhí)行按鍵相關(guān)操作
按鍵讀取就只占用兩個語句的時間而已
|
|