面向?qū)ο蠹夹g(shù)在單片機系統(tǒng)設(shè)計中的應(yīng)用
2.2.4 雙向通道類
雙向通道類包括串行通信類和預(yù)留的I/O類。該類可以和單片機類相互交換數(shù)據(jù)。本系統(tǒng)的串行通信類是RS-232接口,主要由MAX232芯片來完成該項功能。由于單片機的I/O資源有限,所以在單片機類設(shè)計中,留出了RAM的0FF00H~0FFFFH的256字節(jié)的地址空間做I/O口,供用戶擴展使用。
2.3消息驅(qū)動在本系統(tǒng)的實現(xiàn)
在某個事件發(fā)生時,監(jiān)控程序?qū)⒃O(shè)置該事件相對應(yīng)的消息標(biāo)志,監(jiān)控程序?qū)@些標(biāo)志進行判斷來決定執(zhí)行請求處理的事件。如外部中斷0請求處理中斷的事件的處理:當(dāng)外部中斷0請求處理時,監(jiān)控程序暫停當(dāng)前任務(wù),判斷當(dāng)前任務(wù)數(shù),如果當(dāng)前任務(wù)數(shù)大于等于MAX_TASK(系統(tǒng)所允許的最大任務(wù)數(shù)),刪除優(yōu)先級最小的任務(wù)(優(yōu)先級的級數(shù)從0~MAX_TASK-1共有MAX_TASK個,所以不存在優(yōu)先級相同的任務(wù),其中優(yōu)先級級數(shù)為0的優(yōu)先級最高),然后針對 INT0的請求設(shè)置消息標(biāo)志(修改消息隊列),并判斷它的優(yōu)先級與當(dāng)前任務(wù)優(yōu)先級的高低,以決定是否繼續(xù)當(dāng)前任務(wù)。消息驅(qū)動的實現(xiàn)如圖2所示:
圖2 消息驅(qū)動的實現(xiàn)示意圖
2.4 系統(tǒng)設(shè)計
我們將單片機系統(tǒng)類對象化,即組合成了一個通用板,提供了如下資源:64K的RAM和64K的ROM存儲器、4K的flash存儲器、A/D轉(zhuǎn)換芯片 AD574A和ADC0809的接口、D/A轉(zhuǎn)換芯片DAC0832的接口、一個16鍵的鍵盤接口、8個外部中斷接口、256個I/O口、一個4行16字的字符型液晶顯示器接口、一個320×240點陣式液晶顯示器接口和一個RS-232串行通訊口。原理框圖如圖3所示:
圖3 系統(tǒng)原理框圖
2.5 監(jiān)控程序設(shè)計
當(dāng)外部設(shè)備象單片機對象發(fā)送信號時,監(jiān)控程序必須對鍵盤操作進行解釋,然后調(diào)用相應(yīng)的功能模塊,完成預(yù)定的任務(wù),并通過顯示等方式給出執(zhí)行的結(jié)果。
系統(tǒng)投入運行的最初時刻,應(yīng)對系統(tǒng)進行自檢和初始化。開機自檢在系統(tǒng)初始化之前執(zhí)行,如果自檢無誤,則對系統(tǒng)進行正常初始化,通常包括硬件初始化和軟件初始化兩個方面。硬件初始化工作是對系統(tǒng)中的各種硬件資源設(shè)定明確的初始狀態(tài),如對各種可編程芯片進行編程、對各I/O端口設(shè)定初始狀態(tài)和為單片機的硬件資源分配任務(wù)等。軟件初始化包括對中斷的安排、對堆棧的安排、狀態(tài)變量的初始化、各種軟件標(biāo)志的初始化、系統(tǒng)時鐘的初始化和各種變量存儲單元的初始化等。除自檢和初始化之外,監(jiān)控程序的任務(wù)還有:處理鍵盤命令、處理接口命令、處理條件觸發(fā)、及時啟動輸出和顯示功能等。
評論