1. 程式人生 > >微控制器程式設計:開關輸入採用中斷的方式還是輪詢好?

微控制器程式設計:開關輸入採用中斷的方式還是輪詢好?

開關輸入採用中斷的方式還是輪詢好?這個問題或許已經討論了很多年了吧,正因為如此,答案就很明瞭了,既然被爭論,說明兩種方式各有各的優點和不足。下面分開談談我的一些看法。

1、對於中斷。採用中斷的方式的好處是響應及時,不會錯過每個中斷資訊,但是正因為中斷如此的敏感,導致了其的不足,我們知道,一般的開關都是有抖動的,按一次開關,其實會抖動很多次,這樣就會造成中斷很多次,而其實你所預想本應該只有一次,如果你此時的中斷過多的處理一些東西,很容易造成混亂。如果你一定要用中斷的方式來檢測開關,那麼中斷函式最好知識對一些標誌進行處理,這樣的話,多次中斷也是同樣的效果,不易造成混亂。

2、對於輪詢。輪詢的好處是自帶濾波效果(有點厲害),因為多久輪詢一次由你來決定,加之我們可以用連續兩次檢測到按鍵按下的訊號(中間加點延時)才認為按鍵事件產生,有效的避免了抖動造成的一次按鍵事件造成多次響應的事情發生。當然這種不敏感的特性也有其弊端,因為輪詢的時間點是確定的,而按鍵事件的發生是不確定的,這樣就有可能造成微控制器錯過按鍵事件(按鍵發生時,微控制器正在幹別的事),所以應該在足夠短的時間片(比如每xms檢測一次)給予按鍵檢測,如果按鍵事件是頻繁發生的還好,否則的話,如此小的時間片給按鍵事件有點小小的浪費。

所以,還是凡事得看應用場合。。。