1. 程式人生 > >事件驅動機制在微控制器軟體中的應用

事件驅動機制在微控制器軟體中的應用

一、Windows的事件驅動機制

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

在這種機制中,物件的請求僅僅是向佇列中新增相應的訊息,耗時的處理則被分離給處理函式。這種結構的程式中各功能模組界限分明,便於擴充,能充分利用CPU的處理能力,使系統對外界響應準確而及時。

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

二、事件驅動的微控制器程式設計

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

三、總結

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

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