版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)軟件設(shè)計(jì)論文(全文)單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第1頁(yè)。單片機(jī)軟件設(shè)計(jì)論文(全文)單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第1頁(yè)。1概述
很多單片機(jī)的應(yīng)用中都需要同時(shí)執(zhí)行很多任務(wù),對(duì)于這樣的應(yīng)用,我們可以利用實(shí)時(shí)操作系統(tǒng)來靈活地安排系統(tǒng)資源。RTX51是美國(guó)Keil公司開發(fā)的一種小型的應(yīng)用于MCS51系列單片機(jī)的實(shí)時(shí)多任務(wù)操作系統(tǒng),它可以工作所有8051單片機(jī)以及派生家族中,簡(jiǎn)化了復(fù)雜的軟件設(shè)計(jì),縮短了項(xiàng)目周期。我們實(shí)踐中用RTX51來開發(fā)單片機(jī)軟件。設(shè)計(jì)單片機(jī)操縱的GPS接收板軟件,取得了很好的效果。
2RTX51介紹
RTX51有2個(gè)模式:RTX51完全模式和最小模式。RTX51最小模式版是RTX51完全版的一個(gè)子集,可以很容易地運(yùn)行在8051系統(tǒng)上,而不需要外部RAM(DXATA)。RTX51完全模式有4個(gè)任務(wù)優(yōu)先級(jí),可以和中斷函數(shù)并行處理,各個(gè)任務(wù)之間通過使用“郵箱”系統(tǒng)來進(jìn)行信號(hào)和消息的傳遞,可以從內(nèi)存池中申請(qǐng)和釋放內(nèi)存;同時(shí),可以強(qiáng)制一個(gè)任務(wù)停止執(zhí)行,等待一個(gè)中斷,或者是其它中斷傳來的信號(hào)量或者消息。RTX51對(duì)系統(tǒng)硬件的要求如表1所列。
2.1RTX51任務(wù)
RTX51區(qū)分2類任務(wù):快速任務(wù)和標(biāo)準(zhǔn)任務(wù)。快速任務(wù)有很快的響應(yīng)速度,每個(gè)快速任務(wù)使用8051一個(gè)單獨(dú)的寄存器組,并且有自己的堆棧區(qū)域。RTX51支持最大同時(shí)有3個(gè)快速任務(wù)。單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第2頁(yè)。標(biāo)準(zhǔn)任務(wù)需要多一點(diǎn)的時(shí)間來進(jìn)行任務(wù)切換,因此使用的內(nèi)部RAM相對(duì)快速任務(wù)要少,所有的標(biāo)準(zhǔn)任務(wù)共用1個(gè)寄存器組和堆棧。當(dāng)任務(wù)切換的時(shí)候,當(dāng)前任務(wù)的寄存器狀態(tài)和堆棧內(nèi)容轉(zhuǎn)移到外部存儲(chǔ)器中。RTX51支持最大16個(gè)標(biāo)準(zhǔn)任務(wù)。
RTX51任務(wù)狀態(tài):
①運(yùn)行(RUNNIGN)——當(dāng)前正在運(yùn)行的任務(wù)處于RUNNING狀態(tài),同一時(shí)間只有1個(gè)任務(wù)可以運(yùn)行。
②就緒(READY)——等待運(yùn)行的任務(wù)處于READY狀態(tài),在當(dāng)前運(yùn)行的任務(wù)退出運(yùn)行狀態(tài)后,就緒隊(duì)列中優(yōu)先級(jí)最高的任務(wù)進(jìn)入到運(yùn)行狀態(tài)。
③堵塞(BLOCKED)——等待一個(gè)事件的任務(wù)處于BLOCKED狀態(tài),如果事件發(fā)生且優(yōu)先級(jí)比正在運(yùn)行的任務(wù)高,此任務(wù)進(jìn)入運(yùn)行狀態(tài);如果優(yōu)先級(jí)比正在運(yùn)行的任務(wù)低,此任務(wù)進(jìn)入READY狀態(tài)。
④刪除(DELETED)——沒有開始的任務(wù)處于刪除狀態(tài)。
⑤任務(wù)切換——RTX51包含一個(gè)事件驅(qū)動(dòng)的任務(wù)切換機(jī)制,它能夠按照任務(wù)的優(yōu)先級(jí)進(jìn)行切換,也就是搶占式多任務(wù)系統(tǒng);另外還有一個(gè)可選的時(shí)間片輪轉(zhuǎn)切換任務(wù)模式,在時(shí)間片輪轉(zhuǎn)模式下,同級(jí)別的任務(wù)是按照時(shí)間片分別占用CPU的。RTX51任務(wù)有4個(gè)優(yōu)先級(jí):0、1、2可以分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先級(jí)3是為快速任務(wù)保留的。每個(gè)任務(wù)都可以等待事件的發(fā)生,而并不增加系統(tǒng)的負(fù)擔(dān);任務(wù)可以等待消息、信號(hào)、中斷、超時(shí)事件或者它們單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第3頁(yè)。的組合。任務(wù)切換是按照一定規(guī)則進(jìn)行的,包括:進(jìn)入到“就緒”狀態(tài)的優(yōu)先級(jí)高的任務(wù)先執(zhí)行;如果“就緒”狀態(tài)的幾個(gè)任務(wù)是同一個(gè)優(yōu)先級(jí),那么最先進(jìn)入“就緒”狀態(tài)的先執(zhí)行。
RTX51任務(wù)切換圖如圖1所示。
2.2RTX51事件
超時(shí)(timeout):掛起運(yùn)行的任務(wù)指定數(shù)量的時(shí)間周期。
間隔(interval):類似于超時(shí),但是軟件定時(shí)器沒有復(fù)位,典型應(yīng)用是產(chǎn)生時(shí)鐘。
信號(hào)(signal):用于任務(wù)內(nèi)部同步協(xié)調(diào)。
消息(message):適用于RTX51Full,用于信息的交換。我們可以把一個(gè)消息交送到一個(gè)特定的郵箱。消息由2字節(jié)組成,可以是用戶按照自己的需求定主的數(shù)據(jù),也可以是指向數(shù)據(jù)的指針。如果郵箱的消息列表滿,而且是中斷發(fā)送消息,這個(gè)消息將會(huì)丟失;如果是任務(wù)發(fā)送消息,那么任務(wù)將會(huì)進(jìn)入到等待狀態(tài),直到郵箱重新有了位置可以接收這一條消息。郵箱是按照FIFO的原則來治理消息的,如果幾個(gè)任務(wù)都在等待接收消息,那么最先進(jìn)入等待接收隊(duì)列的將接收消息。一個(gè)郵箱最多可以存儲(chǔ)8條消息。當(dāng)郵箱滿的時(shí)候,最多只能有16個(gè)等待任務(wù)。
中斷(interrup):適用于RTX51Full,信號(hào)量用于治理共享的系統(tǒng)資源。通過使用“令牌”,同意在同一時(shí)刻只有一個(gè)任務(wù)使用某些資源。如果幾個(gè)任務(wù)申請(qǐng)?jiān)L問同一個(gè)資源,那么首先提出申請(qǐng)的將同意訪問,其它的任務(wù)進(jìn)入等待隊(duì)列,直到第1個(gè)單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第4頁(yè)。任務(wù)操作完畢,下一個(gè)任務(wù)才能繼續(xù)。
Os_wait()函數(shù)掛起一個(gè)任務(wù)來等待一個(gè)事件的發(fā)生。這樣可以同步2個(gè)或幾個(gè)任務(wù)。它的工作過程如下:當(dāng)任務(wù)等待的事件沒有發(fā)生的時(shí)候,系統(tǒng)掛起這個(gè)任務(wù);當(dāng)事件發(fā)生時(shí),系統(tǒng)根據(jù)任務(wù)切換規(guī)則切換任務(wù)。
2.3RTX51中斷處理
RTX51完全模式提供2種方法來處理中斷:一種是C51的中斷函數(shù),另一種是RTX51的斷。它又可以分為快速任務(wù)中斷和標(biāo)準(zhǔn)任務(wù)中斷。對(duì)于中斷函數(shù)這種方法,它同時(shí)也可以在不使用RTX51的情況下使用,當(dāng)中斷發(fā)生的時(shí)候,程序就跳到了相應(yīng)的中斷函數(shù),它和正在運(yùn)行的任務(wù)是互相獨(dú)立的,中斷的處理是在RTX51系統(tǒng)之外,和任務(wù)切換規(guī)則沒有關(guān)聯(lián)。對(duì)于任務(wù)中斷的方法,不管使用快速是標(biāo)準(zhǔn)任務(wù)來處理中斷,如果中斷發(fā)生,等待中斷的任務(wù)就從“等待”狀態(tài)進(jìn)入到就緒狀態(tài),并按照任務(wù)切換規(guī)則進(jìn)行切換。這種中斷處理是完全集成在RTX51的內(nèi)部,硬件中斷事件的處理和信號(hào)、信息的處理是完全相同的。在系統(tǒng)響應(yīng)中斷使能寄存器,這樣才能遵守任務(wù)的切換規(guī)則并保證中斷程序的無(wú)誤進(jìn)行。必須注意中斷使能寄存器是由RTX51完全操縱的,禁止用戶手動(dòng)的修改。
3應(yīng)用實(shí)例
以下給出RTX51在單片機(jī)操縱的GPS接收板上的應(yīng)用。
(1)系統(tǒng)硬件組成
單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第5頁(yè)。單片機(jī)W77E58,快速8051內(nèi)核、32KBROM、1KB的XDATARAM,符合使用RTX51的硬件要求;鍵盤、GPS定位模塊、液晶顯示模塊。
(2)系統(tǒng)軟件構(gòu)成
軟件運(yùn)
行環(huán)境KEILuVision26.20集成開發(fā)環(huán)境加上RTX51完成版。任務(wù)KEY-BOARD,監(jiān)測(cè)鍵盤的情況,如果有按鍵按下,把按鍵的編碼發(fā)更新到郵箱1,外部中斷1等待接收GPS數(shù)據(jù),并把數(shù)據(jù)存儲(chǔ)起來,向DISPLAY任務(wù)發(fā)出信號(hào)。任務(wù)DISPLAY根據(jù)接收到的不同的信號(hào)和消息,進(jìn)行處理。任務(wù)SEND-OUT,把接收到的數(shù)據(jù)進(jìn)行處理,并發(fā)送出去。任務(wù)VOICE進(jìn)行語(yǔ)音輸出。
系統(tǒng)硬件、軟件結(jié)構(gòu)如圖2所示。
下面給出簡(jiǎn)寫的源程序:
#include<RTX51.h>//包含RTX51頭文件
#defineDISPLAY0
#defineSEND_OUT1
#defineKEY_BOARD2
#defineVOICE3
voidmain(void)
{initsystem();//系統(tǒng)初始化
osstartsystem(DISPLAY);//啟動(dòng)RTX51
}
單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第6頁(yè)。voidtask0(void)_task_DISPLAY
{os_set_slice(1000);//設(shè)置時(shí)間片大小
os_enable_isr(0);//同意外部中斷0
os_creat_task(SEND_OUT);//啟動(dòng)SEND_OUT任務(wù)
os_creat_task(VOICE);//啟動(dòng)VOICE任務(wù)
for(;;){
switch(os_wait(K_SIG+K_MBX+1,255,&keyboard))//等待接收信號(hào)和鍵盤消息,分類處理
{display1();break;
caseEVENT_MBOX;//當(dāng)從郵箱接收到數(shù)據(jù)的時(shí)候switch(keyboard)
{case''''1'''';
…
os_send_signal(SEND_OUT);//向任務(wù)SEND_OUT發(fā)送信號(hào)
…
os_send_signal(VOICE);}//向任務(wù)VOICE發(fā)送信號(hào)
…;}
…;}
}
voidtask1(void)_task_SEND_OUT//處理發(fā)送數(shù)據(jù)任務(wù)
{while(1)
{os_wait(K_SIG,255,0)//等待信號(hào)
單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第7頁(yè)。operation_send();
}
voidtask3(void)_task_VOICE
{while(1){
os_wait_signal(K_SIG,255,0);//等待語(yǔ)音處理信號(hào)
voice();}
}
voidinterrupt(void)interrupt2using1
{read_gps_data(p_gps_data);//接收數(shù)據(jù)
isr_send_signal(DISPLAY);//向DISPLAY任務(wù)發(fā)信號(hào)
}
#pragmaREGISTERBANK(2)//使用寄存器組2
voidtask2(void)_task_KEYBOARSD_priority_3//設(shè)置為快速任務(wù)
{os_attach_interrupt(0);//綁定任務(wù)和外部中斷0
while(1){
os_wait(K_INT,255,0);//等待中斷的發(fā)生
KEY=iic_read_keyboard();
os_send_message(1,KEY,0);}//將鍵盤編碼發(fā)送到郵箱1
}
4結(jié)論
通過實(shí)踐我們可以發(fā)現(xiàn),使用RTX51開發(fā)單片機(jī)程序更加方單片機(jī)軟件設(shè)計(jì)論文(全文)全文共8頁(yè),當(dāng)前為第8頁(yè)。便了。尤其是較大的程序,幸免了自
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保產(chǎn)業(yè)升級(jí)改造資金借款合同3篇
- 2025財(cái)務(wù)咨詢顧問合同
- 2025服裝銷售代理合同書
- 2025二層別墅出售合同
- 數(shù)字化賦能文化建設(shè)的未來發(fā)展趨勢(shì)
- 商丘幼兒師范高等??茖W(xué)?!痘の墨I(xiàn)檢索》2023-2024學(xué)年第一學(xué)期期末試卷
- 商丘醫(yī)學(xué)高等??茖W(xué)?!端姽こ坦芾怼?023-2024學(xué)年第一學(xué)期期末試卷
- 商丘醫(yī)學(xué)高等??茖W(xué)?!洞髷?shù)據(jù)存儲(chǔ)與管理實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年版無(wú)人機(jī)研發(fā)與銷售合同
- 2024年生態(tài)環(huán)境損害賠償協(xié)議
- 國(guó)家開放大學(xué)《當(dāng)代中國(guó)政治制度》期末復(fù)習(xí)題
- 北京市海淀區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期數(shù)學(xué)期末試卷
- 走近大詩(shī)人學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024至2030年中國(guó)茉莉花茶行業(yè)市場(chǎng)深度分析及未來發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 倉(cāng)庫(kù)安全培訓(xùn)考試題及答案
- 公路工程標(biāo)準(zhǔn)施工招標(biāo)文件(2018年版)
- 抖音公會(huì)公司運(yùn)營(yíng)制度
- 當(dāng)代世界經(jīng)濟(jì)與政治考試復(fù)習(xí)題及答案
- 膝關(guān)節(jié)個(gè)案護(hù)理
- ICS(國(guó)際標(biāo)準(zhǔn)分類法)分類
- 2024年秋季學(xué)期新人教版生物七年級(jí)上冊(cè)課件 第四章 生物分類的方法 2.4.1 嘗試對(duì)生物進(jìn)行分類
評(píng)論
0/150
提交評(píng)論