Re: [問題] 8051 外部中斷 用C語言
※ 引述《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
→
04/23 22:36, , 1F
04/23 22:36, 1F
推
04/23 22:42, , 2F
04/23 22:42, 2F
推
04/23 23:02, , 3F
04/23 23:02, 3F
推
04/23 23:43, , 4F
04/23 23:43, 4F
→
04/24 15:06, , 5F
04/24 15:06, 5F
推
04/24 15:37, , 6F
04/24 15:37, 6F
→
04/24 23:46, , 7F
04/24 23:46, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):