事件驅動機制在單片機軟件中的應用

一、Windows的事件驅動機制

    在Windows系統中,程序的設計圍繞事件驅動來進行。當對象有相關的事件發生時(如按下鼠標鍵),對象產生一條特定的標識事件發生的消息,消息被送入 消息隊列,或不進入隊列而直接發送給處理對象,主程序負責組織消息隊列,將消息發送給相應的處理程序,使相應的處理程序執行相應的動作,做完相應的處理後 將控制權交還給主程序。

在這種機制中,對象的請求僅僅是向隊列中添加相應的消息,耗時的處理則被分離給處理函數。這種結構的程序中各功能模塊界限分明,便於擴充,能充分利用CPU的處理能力,使系統對外界響應準確而及時。

如果在編寫單片機程序時,引入Windows程序中的事件驅動機制,把中斷響應與事件處理程序分離,中斷服務程序的任務只是產生一箇中斷髮生的標誌,而事 件處理則由處理程序來完成,主程序則負責判斷標誌和調度處理程序。這樣,可大幅縮短中斷服務程序的長度,減少斷服務程序的耗時,提高系統對多中斷的響應能力。

 

二、事件驅動的單片機程序設計

與Windows系統相比,單片機的資源非常有限,因此,單片機程序中的事件驅動機制只能採取一種簡化的方式。當某個中斷髮生時,中斷服務程序設置相應的 標誌,不同的標導代表不同的中斷髮生的消息,而主程序不斷地判別這些標誌,以決定啓動哪一個處理函數。相應的處理函數被啓動處理完相關的任務後,清除此標 志,然後把控制權交還給主程序。採用這種機制,可合理地利用有限資源,使程序調試的工作量大幅下降。對於延時、定時處理(如LED顯示、鍵盤掃描等),更 可方便地使用一定時器來完成延時、定時的任務,從而把CPU從這種耗時的任務中解放出來,確保系統對多中斷有足夠的響應能力。

 

三、總結

    事件驅動的單片機程序設計是通過在中斷服務程序中置位相位標誌,把耗時的中斷服務中的處理部分分離出來,中斷返回後,再由主程序根據標誌啓動相應的處理模塊。在任務處理完成後,清除相應的標誌。由於中斷服務程序短小,所以一般能實時地響應各種中斷;而處理程序之間不會被相互調用,所以不會產生代碼重入;各模塊界限分明,給程序中各模塊的統調帶來很大的方便。

    實踐證明,運用事件驅動機制來紡織單片機程序,即使對於要求定時準,耗時多的多中斷、多模塊系統,也可輕鬆地完成。

 

 

 

發佈了108 篇原創文章 · 獲贊 28 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章