看板 ASM 關於我們 聯絡資訊
※ 引述《Jhih8051 ()》之銘言: : void EX0(void) interrupt 0 using 1 : { unsigned int Delay; EX0 = 0; Delay = 5000; while(Delay--) { if(SW == 0) { Delay = 5000; } } : cnt++; IE0 = 0; EX0 = 1; : } : 另外想請問, : 中斷旗標IE0是在進入中斷就被清除 or 執行完中斷副程式才清除? 進中斷時IE0就會清掉(by hardware) 但若有殘餘彈跳,則IE0 又會被set 所以我的作法是,在離開中斷程式前,手動清除IE0 反彈跳的Delay設定數值,跟你的頻率與彈跳特性有關 : 又,在中斷副程式執行過程中, : 如果又發生中斷,是否IE0也會被影響? yes。所以中斷程式要寫得越短越好 : 看似是一個簡單不過的問題, : 但真的卡很久在這裡了, : 要麻煩各位高手幫忙 > <" -- ※ 編輯: Aquatics 來自: 219.85.2.249 (05/16 11:47) ※ 編輯: Aquatics 來自: 219.85.2.249 (05/16 11:47)
Jhih8051:頻率是指震盪器頻率嗎@@? 05/16 13:33
Aquatics:yes 05/16 20:26
ksmrt0123:基本上在isr中用loop delay是不好的習慣 05/16 21:02
WolfLord:真的非用INT當輸入的話,可以INT ISR一進入就把中斷除能 05/17 14:54
WolfLord:然後ISR內啟動計時器50MS後在致能中斷。這樣就不會彈跳了 05/17 14:55
ruemann:加個電容就好了 05/17 22:17
WolfLord:一顆電容要一塊錢,人家閒貴唒 f^^;; 05/18 01:54
kdjf:電容要用多大的? 我看書下很多用1uf 這樣就夠了嗎? 05/30 11:24
kdjf: 上 05/30 11:24