|
跟你交流很開心, 以下純粹探討. 如有空盼回。
為了一個按鍵占用了一個外中斷和一個定時器,算不上占用系統(tǒng)少吧?
我還是那句話,如果中斷空著不用,嚴(yán)格意義上來講,不是節(jié)約資源,而是資源浪費(fèi),而且外部中斷判斷按鍵的話,按鍵未按下時,在主循環(huán)中,連1個時鐘的系統(tǒng)時鐘都不會占用,這還不算占用系統(tǒng)資源少么?
只能濾掉按下那一剎那的抖動,濾不掉放開那一剎那的抖動吧?
是的,實(shí)際上,我自己寫的代碼,不是這樣的,發(fā)上來的時候精簡了一下,正常自己使用的時候,主程序也不會有按鍵標(biāo)志判斷的,代碼如下:
(另,個人愛好,非工作,所以沒有測試設(shè)備,大多功能都是自己寫代碼燒錄,然后通過LED狀態(tài)來測試驗(yàn)證,你這邊方便的話可幫忙測試,實(shí)際應(yīng)用中STC15以上系列,IT0 =1 時,釋放按鍵時,只要不是故意手抖,抖不出IE0=1, 即不會觸發(fā)中斷,原因不明,可能和 IT0 的判定變更了有關(guān),你那邊有條件的話,不知能否也幫忙驗(yàn)證一下?)
void EX0_INT interrupt 0
{
EX0 = 0; //關(guān)外部中斷
TR0 = 1; //開定時器消抖
//此處按鍵按下后的 需要執(zhí)行的操作
}
sbit INT0 = P3^2;
void T0_INT interrupt 1
{
if((IE0) || (!INT0)) //判斷按鍵釋放&消抖
{
IE0 = 0; //繼續(xù)消抖
}
else
{
EX0 = 1; //消抖完成,重開外部中斷
TR0 = 0; //關(guān)定時器
}
}
|
|