| 用戶編號 | 子任務號 | 時間片數 |
| 0~31 | 0~15 | 0~16 |
3 軟件設計
3.1 任務調度程序的設計
根據上述分析,可以確定任務調度程序的功能:
(1)按用戶機編號調用各用戶子任務;
(2)完成一個調度周期的時間不超過26ms,并在每個周期結束時對26ms進行精確定時;
(3)在調度周期開始時,讀取所有用戶的DTMF編碼和摘/掛機狀態,供各用戶子任務處理;
(4)在調度周期結束前,根據用戶子任務處理結果向用戶機發送DTMF編碼。
調度程序的流程如圖2所示。
3.2 用戶子任務的設計
用戶子任務根據該用戶緩沖區的數據進行處理,并把處理結果存放于結果單元。各個子任務并不與外部輸入輸出接口直接交換數據,對接口的輸入輸出由任務調度程序在調度周期開始和結束時調用專門子程序完成。用戶子任務的切換工作根據操作流程在各子任務中完成。用戶的操作被細分為16個子操作,相應地有16個子任務,圖3為14號子任務的流程圖。
在該子任務的開始(0ms)和中間(52ms)時刻設置DTMF數據發送緩沖區,分別允許和禁止DTMF編碼的發送。在該子任務結束時根據該用戶緩沖區內需發送的數據計算第2個的DTMF值,并修改任務記錄表中該用戶的調度數據,指向它的下一個子任務。其它子任務的設計思想與此子任務類似。
本文在單片機實時控制系統中引入了現代操作系統的多任務思想,采用時間片輪轉調度算法對傳統單片機編程思想進行了改進,并應用在基于MCS-51的分級分布式系統中,有效地完成了對32個獨立用戶的控制。實踐證明這種結構清晰、調度靈活,適用于定時要求復雜、實時性要求強的系統。





