RTX51實時操作系統(tǒng)進(jìn)行單片機軟件設(shè)計,可以真正做到各任務(wù)并行執(zhí)行,同時,由于程序結(jié)構(gòu)更加科學(xué)合理,可以方便地實現(xiàn)修改升級,以滿足功能較多的設(shè)計要求。
1 用戶專用鍵盤簡介
用戶專用鍵盤多使用在工業(yè)控制場合,它由按鍵和指示燈組成,對外采用RS232接口,當(dāng)某個按鍵按下時,鍵盤將命令(碼值)發(fā)送計算機,同時,鍵盤接收來自計算機的命令(碼值)點亮(熄滅)某個指示燈,以指示系統(tǒng)工作狀態(tài),從而實現(xiàn)快速人機交互。用戶專用鍵盤硬件原理框圖如圖1所示。
圖中,可編程邏輯芯片實現(xiàn)單片機輸出接口擴展,其內(nèi)部包含多個輸出鎖存器。工作時,單片機輸出的地址信號經(jīng)可編程芯片內(nèi)部譯碼器譯碼產(chǎn)生片選信號,使能不同的輸出鎖存器,將數(shù)據(jù)信號輸出控制各個指示燈的亮/滅。
2 RTX51實時操作系統(tǒng)介紹
RTX51是德國Keil公司開發(fā)的一種應(yīng)用于MCS51系列單片機的實時多任務(wù)操作系統(tǒng),它有兩個版本,RTX51 Full和RTX51 Tiny,本文采用RTX51 Tiny進(jìn)行軟件設(shè)計。RTX51 Tiny是一個很小的內(nèi)核,完全集成在Keil C51編譯器中,它可以很容易地運行在沒有擴展外部存儲器的單片機系統(tǒng)上,并且僅占用800字節(jié)左右的程序存儲空間。
RTX51 Tiny允許最大16個任務(wù)循環(huán)切換,在實現(xiàn)上,它采用時間片輪轉(zhuǎn)算法,系統(tǒng)每次調(diào)度時,把CPU分配給一個就緒的任務(wù),并令其執(zhí)行一個時間片,構(gòu)成微觀上輪流運行、宏觀上并行執(zhí)行的多任務(wù)效果。RTX51 Tiny支持任務(wù)間的信號傳遞,還能并行地利用中斷功能。
RTX51 Tiny的用戶任務(wù)主要具有以下幾個狀態(tài):
·運行(RUNNING):任務(wù)正處于運行中。同一時刻只有一個任務(wù)可以處于“RUNNING”狀態(tài)。
·準(zhǔn)備好(READY):等待運行的任務(wù)處于“READY”狀態(tài)。在當(dāng)前運行的任務(wù)退出運行狀態(tài)后,就緒隊列中的任務(wù)根據(jù)調(diào)度策略被調(diào)度執(zhí)行,進(jìn)入到運行狀態(tài)。
·等待(BLOcKED):等待一個事件的任務(wù)處于“BLOCKED”狀態(tài)。如果等待的事件發(fā)生,則此任務(wù)進(jìn)入“READY”狀態(tài),等待被調(diào)度。
RTX51 Tiny內(nèi)核用以下事件進(jìn)行任務(wù)問的通信和同步:
·超時(TIMEOUT):由OS-wait函數(shù)調(diào)用引發(fā)的時間延時,持續(xù)時間可由定時節(jié)拍數(shù)確定。帶有TIMEOUT值調(diào)用OS-it函數(shù)的任務(wù)將被掛起,直到延時結(jié)束,才返回到“READY”。
·間隔(INTERVAL):由OS-wait函數(shù)調(diào)用引發(fā)的時間間隔,其間隔時間可由定時節(jié)拍數(shù)確定。帶有INTERVAL值調(diào)用wait函數(shù)的任務(wù)將被掛起,直到間隔時間結(jié)束,然后返回到READY狀態(tài)。與TIMEOUT不同的是,任務(wù)的節(jié)拍計數(shù)器不復(fù)位,典型應(yīng)用是產(chǎn)生時鐘。
·信號(SIGNAL):系統(tǒng)定義的位變量,可以由系統(tǒng)函數(shù)置位或清除??梢哉{(diào)用OS-wait函數(shù)暫停一個任務(wù)并等待從另一任務(wù)發(fā)出的信號,這可以用于協(xié)調(diào)兩個或更多的任務(wù)。如果某個任務(wù)在等待一個信號并且信號標(biāo)志為0,則在收到這個信號之前,這個任務(wù)將一直處于掛起狀態(tài)。如果信號標(biāo)志已經(jīng)被置1,則當(dāng)任務(wù)查詢信號時,信號標(biāo)志會被清除,任務(wù)將可以被繼續(xù)執(zhí)行。