




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、包括單片機接口技術(shù)(C51版本)、第13章RTX51實時多任務(wù)操作系統(tǒng)、內(nèi)容概述、主要多任務(wù)編程思想、RTX51操作系統(tǒng)的特性、模式和操作要求、RTX51工作原理、RTX51 TINY配置和基于RTX51 TINY的鍵盤顯示系統(tǒng)設(shè)計。教育目標(biāo)1。理解多任務(wù)編程思想,理解多任務(wù)編程和單任務(wù)編程的區(qū)別和優(yōu)點。2.了解RTX51的完全模式和最小模式之間的區(qū)別。3.您可以了解任務(wù)的不同狀態(tài)和定義,了解任務(wù)轉(zhuǎn)換過程,并設(shè)計簡單的任務(wù)轉(zhuǎn)換程序。您可以了解事件的定義,了解RTX51系統(tǒng)中的不同事件(如超時、間隔、信號、消息、中斷等),使用os_wait()函數(shù)同步兩個或多個任務(wù),使用信號控制任務(wù)的啟動和停止
2、。4.了解RTX51處理中斷的中斷功能和RTX51中的任務(wù)中斷(快速任務(wù)中斷和標(biāo)準(zhǔn)任務(wù)中斷)以及實現(xiàn)過程。5.了解RTX51 TINY的同步機制、調(diào)度規(guī)則、操作控制塊和存儲管理。掌握RTX51 TINY配置后,可以修改RTX51 TINY配置文件conf_tny.a51。6.熟悉基于RTX51 TINY的鍵盤、顯示系統(tǒng)的編程。131多任務(wù)編程思想,13.1.1單工作機制工作原理在單工作機制中,每個功能模塊以作為單個任務(wù)執(zhí)行的固定順序構(gòu)成一個整體。如果每個模塊所需的執(zhí)行頻率不匹配,程序就很難滿足。需要在運行時動態(tài)更改執(zhí)行結(jié)構(gòu)的系統(tǒng)需要由許多條件判斷和分支傳輸語句控制,從而增加了程序的復(fù)雜性??勺x
3、性和可維護(hù)性不好,調(diào)試不便。增加了系統(tǒng)擴(kuò)展的困難。13.1.2多任務(wù)機制工作原理,每個功能模塊處于同等位置。每個功能模塊的執(zhí)行順序可以在程序執(zhí)行過程中動態(tài)更改。每個功能模塊的執(zhí)行頻率按優(yōu)先級顯示。每個子任務(wù)在自己的時間切片內(nèi)運行,可以合理設(shè)計時間切片大小和每個任務(wù)的優(yōu)先級,以自然滿足系統(tǒng)內(nèi)各種復(fù)雜的計時要求。13.2 RTX51功能和操作要求,RTX51可執(zhí)行循環(huán)多任務(wù)、準(zhǔn)并行執(zhí)行多周期任務(wù)。作業(yè)不是同時運行,而是按時間分段運行,將有效的CPU時間劃分為時間段,并由RTX51為每個作業(yè)分配持續(xù)時間。可以將RTX51切換到其他作業(yè),每個作業(yè)允許計劃數(shù)量的時間。這段時間很短,通常只渡邊杏幾毫秒,因
4、此任務(wù)看起來同時運行。RTX51使用定時子程序,其中8051的硬件計時器定期生成中斷以驅(qū)動RTX51時鐘。RTX51程序不需要基本函數(shù)。從任務(wù)0開始自動運行。如果有默認(rèn)函數(shù),則必須使用os_create_task(RTX51 Tiny)或os_start_system(RTX51 Full)函數(shù)啟動RTX51。13.2.1 RTX51的特性;RTX51有兩種模式:RTX 51完全模式和最小模式。RTX51 Tiny是RTX51的子集,支持RTX51的大部分功能,不需要外部RAM (XDATA)。RTX51 Tiny支持RTX51完整版的許多功能,但不支持以下功能:循環(huán)多任務(wù)和按信號切換任務(wù)不支
5、持優(yōu)先級任務(wù)切換。沒有信息子程序存儲分配子程序,13.2.2 RTX51硬件要求,13.2.3 RTX51軟件要求,如果使用實時多任務(wù)操作系統(tǒng)RTX51 TINY,則需要以下軟件支持:1) C51編譯器2)BL51連接定位器3)A51宏匯編程序庫文件RTX51TNY。LIB必須存儲在C51LIB中,并且必須指定C51運行時庫的路徑。頭文件RTX51TNY。h必須存儲在C51INC中,并且必須指定C51包含文件的路徑。RTX51 TINY可以在沒有外部數(shù)據(jù)存儲的單芯片8051系統(tǒng)上運行,但應(yīng)用程序可以訪問外部存儲。RTX51 TINY可以使用C51編譯器支持的存儲模式,存儲模式選擇僅影響應(yīng)用程序
6、目標(biāo)文件的位置。RTX51 TINY系統(tǒng)變量和應(yīng)用程序的堆棧區(qū)域始終位于8051的內(nèi)部數(shù)據(jù)存儲(DATA/IDATA)中,RTX51 TINY應(yīng)用程序通常需要使用SMALL編譯模式。、13.3 RTX51基本概念和案例分析、13.3.1作業(yè)的狀態(tài)和定義RTX51將兩種類型的作業(yè)區(qū)分開來:快速作業(yè)和標(biāo)準(zhǔn)作業(yè)。快速操作具有快速響應(yīng)速度,每個快速操作使用8051個單獨的寄存器組,并有自己的堆棧區(qū)域。RTX51支持最大大同時有三個快速任務(wù)。由于標(biāo)準(zhǔn)操作需要更多的時間來切換操作,因此內(nèi)部RAM比快速操作少,所有標(biāo)準(zhǔn)操作共享一組寄存器和堆棧。切換作業(yè)時,當(dāng)前作業(yè)的寄存器狀態(tài)和堆棧內(nèi)容將發(fā)送到外部存儲。RT
7、X51 FULL最多支持64個操作,而普通RTX51 TINY最多支持16個標(biāo)準(zhǔn)操作。RTX51作業(yè)狀態(tài),1)運行:當(dāng)前運行的作業(yè)處于運行狀態(tài),一次只能運行一個作業(yè)。2)READY :等待運行的作業(yè)處于READY狀態(tài),當(dāng)前正在運行的作業(yè)在運行狀態(tài)結(jié)束后,準(zhǔn)備隊列中優(yōu)先級最高的作業(yè)進(jìn)入運行狀態(tài)。3)等待阻塞:事件的作業(yè)處于鎖定狀態(tài),當(dāng)事件發(fā)生且優(yōu)先級高于正在運行的作業(yè)時,作業(yè)進(jìn)入運行狀態(tài)。如果優(yōu)先級低于正在運行的作業(yè),則該作業(yè)處于READY狀態(tài)。4)刪除:未啟動的作業(yè)處于刪除狀態(tài)。RTX51作業(yè)狀態(tài),5)作業(yè)切換RTX51是預(yù)占式多任務(wù)系統(tǒng)。在時間表旋轉(zhuǎn)模式下,同等任務(wù)是按時間片分別占用CPU。
8、RTX51任務(wù)有四個優(yōu)先級:您可以將0、1和2分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先次序3保留給快速任務(wù)。每個作業(yè)都可以等待事件發(fā)生,而不會增加系統(tǒng)負(fù)擔(dān)。任務(wù)可以等待消息、信號、中斷、超時事件或它們的組合。任務(wù)切換是根據(jù)特定規(guī)則執(zhí)行的,包括進(jìn)入“就緒”狀態(tài)的高優(yōu)先級任務(wù)首先運行。如果處于“就緒”狀態(tài)的多個任務(wù)具有相同的優(yōu)先級,則會開始第一次處于“就緒”狀態(tài)的運行。操作狀態(tài)切換如圖13-3-1所示。圖13-3-1操作狀態(tài)切換圖,示例13-3-1簡單RTX51程序,該程序中的三個操作都是簡單的計數(shù)器循環(huán),分別反轉(zhuǎn)P1.0、P1.1和P1.2。RTX51開始運行名為job 0的函數(shù),該函數(shù)生成job 1和job 2。
9、程序?qū)⒃谌蝿?wù)0運行一段時間后運行一段時間,直到任務(wù)1,然后運行到任務(wù)2。任務(wù)2短暫運行后,RTX51 TINY將轉(zhuǎn)換為任務(wù)0。這個處理過程無限重復(fù)。#include /* RTX-51 tiny標(biāo)頭文件*/# include long counter 0;/*任務(wù)0計數(shù)器*/長計數(shù)器1;/*任務(wù)1計數(shù)器*/長計數(shù)器2;/*任務(wù)2計數(shù)器*/sbit P1 _ 0=P10;Sbit P1 _ 1=P11Sbit P1 _ 2=P12,ob0()_ task _ 0 int I;OS _ create _ task(1);/*啟動任務(wù)1 */OS _ create _ task(2);/*開始作業(yè)2
10、 */while (1) /*無限循環(huán)*/counter 0;/* counter0上的1 */for(I=0);I1000I);P1_0=!P1 _ 0;作業(yè)job 1()_ task _ 1 int I;While (1) /*無限循環(huán)*/counter 1;/* counter1加1 */for(I=0);I1000I);P1_1=!P1 _ 1;job 1()_ task _ 1 int I;While (1) /*無限循環(huán)*/counter 1;/* counter1加1 */for(I=0);I1000I);P1_1=!P1 _ 1;13.3.2 RTX51事件,在等待一個作業(yè)的片
11、到達(dá)時,RTX51使用os_wait函數(shù)通知RTX51,并使另一個作業(yè)運行。此功能將終止當(dāng)前正在運行的作業(yè),并等待指定的事件發(fā)生。此時,您可以執(zhí)行任意數(shù)量的其他操作。RTX51的待機功能支持以下事件:*超時:暫停正在運行的任務(wù),并指定指定數(shù)量的時鐘周期。*間隔:類似于超時,但不重置軟件計時器,典型的應(yīng)用程序是生成時鐘。*信號:用于作業(yè)中的同步調(diào)節(jié)。RTX51支持事件,*消息:適用于RTX51完整版,用于信息交換。我們可以把信息發(fā)送到特定的郵箱。消息由兩個字節(jié)組成,可以是用戶根據(jù)需要定義的數(shù)據(jù),也可以是指向數(shù)據(jù)的指針。郵箱中的消息列表已滿,消息傳輸中斷時,消息將丟失。如果作業(yè)發(fā)送消息,則作業(yè)將進(jìn)
12、入待機狀態(tài),直到郵箱重新就位。郵箱根據(jù)FIFO原則管理消息,如果有多個任務(wù)在等待接收消息,則首先進(jìn)入接收隊列接收消息。郵箱最多可以存儲8條消息。郵箱滿后,最多只能有16個等待操作。RTX51支持事件,*中斷:適用于RTX51完整版,可等待8051硬件中斷的操作。* semapore:適用于RTX51 Full,semapore用于管理孔劉系統(tǒng)資源。令牌允許一次只能在一個操作中使用特定資源。當(dāng)多個操作請求訪問同一資源時,首先請求允許訪問,然后其他操作進(jìn)入等待隊列,直到第一個操作完成。下一個操作不能繼續(xù)。使用(David asset,Northern Exposure(美國電視劇),1 os_wa
13、it函數(shù)的os_wait()函數(shù)暫停工作,直到事件發(fā)生。這使您可以同步兩個或多個任務(wù)。工作流程如下:當(dāng)任務(wù)沒有發(fā)生等待的事件時,系統(tǒng)停止任務(wù)。事件發(fā)生時,系統(tǒng)根據(jù)作業(yè)切換規(guī)則切換作業(yè)。使用Os_wait函數(shù)等待的最簡單事件是RTX51時鐘時間信號的超時時段。此類型的事件可用于需要延遲的操作。可以在代碼中用作切換查詢。在這種情況下,每50毫秒只需確認(rèn)一次切換。范例13-3-2下列范例顯示當(dāng)其他工作可以執(zhí)行時,如何使用os_wait函數(shù)延遲執(zhí)行。# include/* RTX-51 tiny functions/*任務(wù)1的計數(shù)器*/,job0 () _ task _ 0 OS _ create _
14、 task (1)/* counter0加1 */os_wait (K_TMO,5,0);/*等待超時信號: 5時鐘時間*/job1 () _task_ 1 while (1) /*無限循環(huán)*/counter 1;/*counter1加1 */os_wait (K_TMO,10,0);/*等待超時信號3360 10個時鐘時間*/job0首先啟動job1,然后將1加到counter0,job0調(diào)用os_wait函數(shù)以暫停5個時鐘時間信號。rtx51現(xiàn)在切換到下一個任務(wù)job1。Job1增加counter1的數(shù)量后,調(diào)用os_wait暫停10個時鐘信號。目前,rtx51沒有其他需要執(zhí)行的操作。因此
15、,在作業(yè)0可以繼續(xù)運行之前,進(jìn)入空循環(huán),等待5個時鐘時間信號通過。此示例的結(jié)果是,counter0每5個時鐘周期加1,而counter1每10個時鐘周期加1。2使用RTX51的信號,可以使用os_wait功能暫停一個作業(yè),等待從另一個作業(yè)發(fā)送的信號或標(biāo)志??捎糜趨f(xié)調(diào)多個操作,等待信號時,系統(tǒng)將執(zhí)行以下操作:如果作業(yè)正在等待信號,且信號標(biāo)志為0,則作業(yè)將暫停,直到發(fā)送信號。如果信號標(biāo)志已為1,則當(dāng)操作查詢信號時,信號標(biāo)志將被清除,操作將繼續(xù)。示例13-3-3信號使用示例# include long counter0/*任務(wù)0計數(shù)器*/長計數(shù)器1;/*任務(wù)1計數(shù)器*/長計數(shù)器2;/*任務(wù)2計數(shù)器*
16、/長計數(shù)器3;/*任務(wù)3計數(shù)器*/,任務(wù)0()_ task _ 0 OS _ create _ task(1);/*啟動任務(wù)1 */OS _ create _ task(2);/*啟動任務(wù)2 */OS _ create _ task(3);/*啟動操作3 */while (1) /*無限循環(huán)*/counter 0;/* counter0加1 */os_wait (K_TMO,5,0);/*等待超時信號: 5時鐘時間*/job1 () _task_ 1 while (1) /*無限循環(huán)*/counter 1;/*counter1加1 */os_wait (K_TMO,10,0);/*等待超時信號3360 10時鐘時間*/,job2 () _task_ 2 while (1) /*無限循環(huán)*/counter 2;/*counter2加1 */if (counter2 /*收到信號后,counter3加1 */job0啟動
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國休閑糖果制品行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國主機代管行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國中藥膠囊行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評估報告
- 2025至2030中國一次性折疊湯勺行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 2025至2030連鎖酒店行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 妊娠期合并貧血護(hù)理查房
- 小學(xué)心理健康教育:換位思考
- 拔火罐技術(shù)課件
- 水環(huán)境全域綜合治理工程項目建設(shè)管理方案
- 新年環(huán)節(jié)創(chuàng)設(shè)活動方案
- 水力分析與計算智慧樹知到期末考試答案章節(jié)答案2024年安徽水利水電職業(yè)技術(shù)學(xué)院
- MOOC 中國文化概論-華南師范大學(xué) 中國大學(xué)慕課答案
- 產(chǎn)品研發(fā)合作協(xié)議書(二篇)
- 24春國家開放大學(xué)《離散數(shù)學(xué)》大作業(yè)參考答案
- 2023-2024年天原杯全國初中學(xué)生化學(xué)競賽復(fù)賽試題(含答案)
- 陜西省幼兒教師通識性知識大賽考試題庫(含答案)
- 廈門大學(xué)2023年826物理化學(xué)考研真題(含答案)
- 銀行貿(mào)易融資業(yè)務(wù)介紹
- 弱電簡單維修方案
- AutoCAD 2020中文版從入門到精通(標(biāo)準(zhǔn)版)
- gkg全自動印刷機評估報告
評論
0/150
提交評論