C4M-OS的各部元件,多數都採用工作方塊架構撰寫。課程的目標,也是希望學生的程式,可以包裝成一個個,功能架構分明的工作方塊。這種類型的程式架構優點是可以像實體的IC一樣重覆使用。但是這種程式架構,與傳統流程圖式的程式架構不太一樣。反而比較像是堆積木。完整的程式,依序包括了:廣域變數區段,主程式設定段,主程式輪詢段,副程式段,而工作方塊的結構體型態定義,工作結構體佈局巨集定義,使用佈局巨集定義結構體,各結構體間之佈線,以及工作方塊步級執行函式定義,如何鑲嵌進入程式的各個段落。有一定的模式。詳細架構將以實作範例:鬧玲時鐘,的取後提供實例說明。
本次實驗借由鬧鈴時鐘的實作,來練習使用硬體計時器及硬體外部鍵盤雙中斷微控器系統上撰寫並組織即時工作方塊成為系統的整體程序。參考圖 2 鬧鈴時鐘系統功能方塊圖,硬體計時器定1/1000秒產生中斷,觸發ISR計數器計數計數,每百次接力時鐘計數器執行1/10秒,秒,分及時的計數。其計數時及分開放予外部寫入。計時計數器提供現在時間給後級鬧鈴比較器,與它自己的鬧鈴時間做比較,決定是否啟動鬧鈴開關,鬧鈴比較器也開放時及分開放予外部寫入。它的後級顯示多工器選擇要輸出現在時間或設定時間,並將所選時間提供給它的後級顯示驅動器來驅動七節管顯示器顯示所選內容。
另一路,鍵盤掃瞄器,接受鍵盤電路產生的外部中斷啟動掃瞄工作。掃出中斷緯線掃瞄下經線輸出值提供給其後級鍵盤讀取器分析出被按按鍵鍵號,再交給後級命令解譯執行器,命令解譯執行器內有兩級功能第一級做鍵號解譯,解譯出命令及輸入值,如有命令予以執行,如為輸入值,傳給後級輸入時間累加器。輸入時間累加器將輸入值累加進位,並接受命令直接呼叫執行累進值蓋寫現在時間或鬧鈴時間。
圖中,黃色方塊為硬體電路,白色方塊為由現成即時工作方塊登錄組成之軟即時工作。藍色方塊及灰色方塊為接續軟即時的硬即時工作串。灰色方塊先前單元己開發過可重用。藍色則為本單元新開發。
圖中的雙三角箭頭代表中斷觸發,小實心三角為硬體輸出入。大實心三角表工作方塊間資料的傳送。小空心三角為特定工作方塊對其他工作方塊的控制動作。
圖 2鬧鈴時鐘系統功能方塊圖
為了以使用單一MCU用軟體來實現工作方塊動作,分析前述系統功能方塊圖,各方塊間的資料傳遞,可得到執行每個功能方塊的工作方塊順序。其中啟頭的工作均為緊接著硬體中斷的軟即時工作,其後則串接著一串硬即時工作。參考圖3鬧鈴時鐘系統工作串串接順序及控制函式呼叫圖。可看出系統分兩個工作串,一個由ISR計數器為起頭。 一個以鍵盤掃瞄器為起頭。圖中開放箭頭代表的是工作串的串接順序,空心小三角箭頭是為實現特定工作方塊間控制其它工作方塊的動作,可以呼叫控制函式來實現。
圖 3鬧鈴時鐘系統工作串串接順序及控制函式呼叫圖
參考圖 2鬧鈴時鐘系統功能方塊圖提供的資料輸出入,以及功能方塊的功能要求,可以撰寫開發出工作方塊,再參考圖 3鬧鈴時鐘系統工作串串接順序及控制函式呼叫圖。提供工作方塊的串接佈線資訊,以及呼叫函式的需求,即可完成工作方塊的開發。最後參考圖 3鬧鈴時鐘系統工作串串接順序及控制函式呼叫圖完成工作方塊旳串接工作,即可實現出由工作方塊所組成的系統。以下先分別介紹各個工作方塊,最後再提供組織工作方塊成為系統的程式架構。