国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于RTX51 的單片機軟件設計

發布時間:2009-11-28 14:53    發布者:silentcircuit
關鍵詞: 單片機 , 軟件設計
摘要:隨著單片機應用的日益廣泛,對它的軟件開發效率要求越來越高,從匯編到C語言,然后過渡到了操作系統。MCS51作為單片機世界的長生不衰的主力軍,應用于其上的RTX51得到了很大的發展,它硬件要求低,使用方便、靈活、因此越來越廣泛地應用到單片機的軟件開發之中。

1 概述

很多單片機的應用中都需要同時執行很多任務,對于這樣的應用,我們可以利用實時操作系統來靈活地安排系統資源。RTX51是美國Keil公司開發的一種小型的應用于MCS51系列單片機的實時多任務操作系統,它可以工作所有8051單片機以及派生家族中,簡化了復雜的軟件設計,縮短了項目周期。我們實踐中用RTX51來開發單片機軟件。設計單片機控制的GPS接收板軟件,取得了很好的效果。

2 RTX51介紹

RTX51有2個模式:RTX51完全模式和最小模式。RTX51最小模式版是RTX51完全版的一個子集,可以很容易地運行在8051系統上,而不需要外部RAM(DXATA)。RTX51完全模式有4個任務優先級,可以和中斷函數并行處理,各個任務之間通過使用“郵箱”系統來進行信號和消息的傳遞,可以從內存池中申請和釋放內存;同時,可以強制一個任務停止執行,等待一個中斷,或者是其它中斷傳來的信號量或者消息。RTX51對系統硬件的要求如表1所列。

2.1 RTX51任務

RTX51區分2類任務:快速任務和標準任務。快速任務有很快的響應速度,每個快速任務使用8051一個單獨的寄存器組,并且有自己的堆棧區域。RTX51支持最大同時有3個快速任務。標準任務需要多一點的時間來進行任務切換,因此使用的內部RAM相對快速任務要少,所有的標準任務共用1個寄存器組和堆棧。當任務切換的時候,當前任務的寄存器狀態和堆棧內容轉移到外部存儲器中。RTX51支持最大16個標準任務。

RTX51任務狀態:

①運行(RUNNIGN)——當前正在運行的任務處于RUNNING狀態,同一時間只有1個任務可以運行。

②就緒(READY)——等待運行的任務處于READY狀態,在當前運行的任務退出運行狀態后,就緒隊列中優先級最高的任務進入到運行狀態。

③阻塞(BLOCKED)——等待一個事件的任務處于BLOCKED狀態,如果事件發生且優先級比正在運行的任務高,此任務進入運行狀態;如果優先級比正在運行的任務低,此任務進入READY狀態。

④刪除(DELETED)——沒有開始的任務處于刪除狀態。

⑤任務切換——RTX51包含一個事件驅動的任務切換機制,它能夠按照任務的優先級進行切換,也就是搶占式多任務系統;另外還有一個可選的時間片輪轉切換任務模式,在時間片輪轉模式下,同級別的任務是按照時間片分別占用CPU的。RTX51任務有4個優先級:0、1、2可以分配給標準任務,優先級3是為快速任務保留的。每個任務都可以等待事件的發生,而并不增加系統的負擔;任務可以等待消息、信號、中斷、超時事件或者它們的組合。任務切換是按照一定規則進行的,包括:進入到“就緒”狀態的優先級高的任務先執行;如果“就緒”狀態的幾個任務是同一個優先級,那么最先進入“就緒”狀態的先執行。

RTX51任務切換圖如圖1所示。



2.2 RTX51事件

◇超時(timeout):掛起運行的任務指定數量的時間周期。

◇間隔(interval):類似于超時,但是軟件定時器沒有復位,典型應用是產生時鐘。

◇信號(signal):用于任務內部同步協調。

◇消息(message):適用于RTX51 Full,用于信息的交換。我們可以把一個消息交送到一個特定的郵箱。消息由2字節組成,可以是用戶按照自己的需求定主的數據,也可以是指向數據的指針。如果郵箱的消息列表滿,而且是中斷發送消息,這個消息將會丟失;如果是任務發送消息,那么任務將會進入到等待狀態,直到郵箱重新有了位置可以接收這一條消息。郵箱是按照FIFO的原則來管理消息的,如果幾個任務都在等待接收消息,那么最先進入等待接收隊列的將接收消息。一個郵箱最多可以存儲8條消息。當郵箱滿的時候,最多只能有16個等待任務。

◇中斷(interrup):適用于RTX51 Full,信號量用于管理共享的系統資源。通過使用“令牌”,允許在同一時刻只有一個任務使用某些資源。如果幾個任務申請訪問同一個資源,那么首先提出申請的將允許訪問,其它的任務進入等待隊列,直到第1個任務操作完畢,下一個任務才能繼續。

Os_wait()函數掛起一個任務來等待一個事件的發生。這樣可以同步2個或幾個任務。它的工作過程如下:當任務等待的事件沒有發生的時候,系統掛起這個任務;當事件發生時,系統根據任務切換規則切換任務。

2.3 RTX51中斷處理

RTX51完全模式提供2種方法來處理中斷:一種是C51的中斷函數,另一種是RTX51的斷。它又可以分為快速任務中斷和標準任務中斷。對于中斷函數這種方法,它同時也可以在不使用RTX51的情況下使用,當中斷發生的時候,程序就跳到了相應的中斷函數,它和正在運行的任務是互相獨立的,中斷的處理是在RTX51系統之外,和任務切換規則沒有關聯。對于任務中斷的方法,不管使用快速是標準任務來處理中斷,如果中斷發生,等待中斷的任務就從“等待”狀態進入到就緒狀態,并按照任務切換規則進行切換。這種中斷處理是完全集成在RTX51的內部,硬件中斷事件的處理和信號、信息的處理是完全相同的。在系統響應中斷使能寄存器,這樣才能遵守任務的切換規則并保證中斷程序的無誤進行。必須注意中斷使能寄存器是由RTX51完全控制的,禁止用戶手動的修改。

3 應用實例

以下給出RTX51在單片機控制的GPS接收板上的應用。

(1)系統硬件組成

單片機W77E58,快速8051內核、32KB ROM、1KB的XDATA RAM,符合使用RTX51的硬件要求;鍵盤、GPS定位模塊、液晶顯示模塊。

(2)系統軟件構成

軟件運行環境KEIL uVision2 6.20集成開發環境加上RTX51完成版。任務KEY-BOARD,監測鍵盤的情況,如果有按鍵按下,把按鍵的編碼發更新到郵箱1,外部中斷1等待接收 GPS數據,并把數據存儲起來,向DISPLAY任務發出信號。任務DISPLAY根據接收到的不同的信號和消息,進行處理。任務SEND-OUT,把接收到的數據進行處理,并發送出去。任務VOICE進行語音輸出。
系統硬件、軟件結構如圖2所示。



下面給出簡寫的源程序:

#include //包含RTX51頭文件
#define DISPLAY 0
#define SEND_OUT1
#define KEY_BOARD2
#define VOICE3
void main(void)
{ init system(); //系統初始化
os start system(DISPLAY); //啟動RTX51
}
void task0(void)_task_DISPLAY
{ os_set_slice(1000); //設置時間片大小
os_enable_isr(0); //允許外部中斷0
os_creat_task(SEND_OUT); //啟動SEND_OUT任務
os_creat_task(VOICE); //啟動VOICE任務
for(;;){
switch(os_wait(K_SIG+K_MBX+1,255,&keyboard))//等待接收信號和鍵盤消息,分類處理
{display1();break;
case EVENT_MBOX;//當從郵箱接收到數據的時候switch(keyboard)
{ case ‘1‘;

os_send_signal(SEND_OUT); //向任務SEND_OUT發送信號

os_send_signal(VOICE);} //向任務VOICE發送信號
…;}
…;}
}
void task1(void)_task_SEND_OUT //處理發送數據任務
{while(1)
{ os_wait(K_SIG,255,0) //等待信號
operation_send();
}
void task3(void)_task_VOICE
{while(1){
os_wait_signal(K_SIG,255,0); //等待語音處理信號
voice();}
}
void interrupt(void)interrupt 2 using 1
{ read_gps_data(p_gps_data); //接收數據
isr_send_signal(DISPLAY); //向DISPLAY任務發信號
}
#pragma REGISTERBANK(2) //使用寄存器組2
void task2(void)_task_KEYBOARSD_priority_3//設置為快速任務
{ os_attach_interrupt(0); //綁定任務和外部中斷0
while(1){
os_wait(K_INT,255,0); //等待中斷的發生
KEY=iic_read_keyboard();
os_send_message(1,KEY,0);}//將鍵盤編碼發送到郵箱1
}

4 結論

通過實踐我們可以發現,使用RTX51開發單片機程序更加方便了。尤其是較大的程序,避免了自己寫消息循環等繁瑣工作,效率明顯增加了。在硬件資源足夠的情況下,效果更加明顯。

作者: 劉明路, 王亮生, 李世煜 來源:《單片機與嵌入式系統應用》2002年 第07期
本文地址:http://m.qingdxww.cn/thread-6041-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
alpha321 發表于 2009-12-5 08:11:52
文章開頭部分翻譯得不錯,可以參考。只是應用部分的介紹及源碼過于簡略。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区视频在线播放 | 欧美色成人tv在线播放 | 日本一区二区三区久久精品 | 91插插插网站 | 日韩二区 | 麻豆全集| 中国一级特黄剌激爽毛片 | 加勒比综合 | 4虎影院永久地址www | 99热福利| 91网站在线看 | 精品国产免费福利片 | 麻豆精品国产 | 97成人精品| 欧洲精品码一区二区三区免费看 | 亚洲第成色999久久网站 | 亚洲国产日韩a在线亚洲 | 狠狠色丁香六月色 | 国产女乱淫真高清免费视频 | 国产精品福利一区二区亚瑟 | xx中文字幕乱偷avxx | 色费女人18毛片a级视频在线 | 四虎精品视频 | 麻豆作品 | 搞黄网站免费观看 | 亚洲日本在线观看视频 | 麻豆国产精品有码在线观看 | 亚洲视频在线网 | 超91视频| 日韩精品视频观看 | 中国一级毛片在线观看 | 国产亚洲福利精品一区二区 | 久久国产精品久久国产片 | 日本欧美国产精品 | 男人的天堂网在线 | 久久作爱视频 | 四虎免费久久影院 | 国产一区二区三区免费看 | 综合五月天婷婷丁香 | 久碰香蕉精品视频在线观看 | 成人亚洲性情网站www在线观看 |