[爆卦]c語言防彈跳是什麼?優點缺點精華區懶人包

為什麼這篇c語言防彈跳鄉民發文收入到精華區:因為在c語言防彈跳這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者DamonF1 (..........)看板ASM標題Re: [問題] 8051 外部中斷 用...


※ 引述《dream3325 (憂鬱藍調)》之銘言:
: 最近剛接觸8051
: 想請問依下
: 外部中斷要如何用C語言寫(INT0)
: 還有要如何消彈跳(像按個一秒鐘 程式就判斷我按了9下 類似的問題)?
: 拜託了><"

消除彈跳可以用硬體和軟體
軟體程式複雜但硬體簡單

彈跳現象有兩個發生點
1.按下時
2.放開時

彈跳波形時間大約 10ms~40ms左右

要閃開彈跳現象則要看使用者如何設定sw跟執行動作
裝況有很多種:
1.按下sw後,馬上執行動作,很快就放開,繼續判斷下一次sw
2.按下sw後,不動作,等sw off時才執行動作,所以按下時間可以很久或很短
3.......

現在假設 SW OFF時 信號腳位為 HI
SW ON 時 信號腳位為 LOW

現在情況是根據原po要求按下sw ( P1.0 ) 後進入中斷副程式執行想要的動作,
但是一秒後才放開,以下是簡單的防彈跳程式區段

C語言少寫,用組語代替

INT0_INT:
CLR EX0
CALL DELAY_30ms ;跳過sw on之彈跳(如果 動作程式有達 30 ms,可不用此行)
.
.
. 動作程式
.
.
JNB P1.0,$ ;等待按鍵放開
CALL DELAY_30ms ;跳過sw off之彈跳
SETB EX0
RETI

以上只是其中一種,因為要考慮的因素很多
要看你的動作要求為何,連動作程式執行時間也可以考慮當做跳過彈跳時間
就試試看吧,還有外部中斷使用 負緣觸發 比較好,不然準位觸發會更難防止彈跳

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.23.154.94
icetofux:按1秒鐘9跳下,感覺他好像用到低準位觸發了@.@? 04/23 22:36
dexders:可以判斷重複幾次動作 然後再決定是不是正確的動作 04/23 22:42
stool100:C少寫的這個想法 個人不以為然 04/23 23:02
stool100:建議也可以用軟體積分方法.有中斷時累加.超過某值動作 04/23 23:43
final01:他是說ISR最好用ASM寫吧 04/24 15:06
stool100:ISR中建議不要DELAY 04/24 15:37
DamonF1:感謝大家的意見,看看怎樣可以改善的最好, 04/24 23:46

你可能也想看看

搜尋相關網站