日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
基于RTX51的單片機(jī)軟件設(shè)計(jì)
基于RTX51的單片機(jī)軟件設(shè)計(jì)
 更新時間:2009-7-9 16:55:12  點(diǎn)擊數(shù):0
【字體: 字體顏色
摘要:隨著單片機(jī)應(yīng)用的日益廣泛,對它的軟件開發(fā)效率要求越來越高,從匯編到c語言,然后過渡到了操作系統(tǒng)。mcs51作為單片機(jī)世界的長生不衰的主力軍,應(yīng)用于其上的rtx51得到了很大的發(fā)展,它硬件要求低,使用方便、靈活、因此越來越廣泛地應(yīng)用單片機(jī)的軟件開發(fā)之中。 

  關(guān)鍵詞:單片機(jī) c51 rtx51

1 概述

  很多單片機(jī)應(yīng)用中都需要同時執(zhí)行很多任務(wù),對于這樣的應(yīng)用,我們可以利用實(shí)時操作系統(tǒng)來靈活地安排系統(tǒng)資源。rtx51是美國keil公司開發(fā)的一種小型的應(yīng)用于mcs51系列單片機(jī)的實(shí)時多任務(wù)操作系統(tǒng),它可以工作所有8051單片機(jī)以及派生家族中,簡化了復(fù)雜的軟件設(shè)計(jì),縮短了項(xiàng)目周期。我們實(shí)踐中用rtx51來開發(fā)單片機(jī)軟件。設(shè)計(jì)單片機(jī)控制的gps接收板軟件,取得了很好的效果。

2 rtx51介紹

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

  2.1 rtx51任務(wù)

  rtx51區(qū)分2類任務(wù):快速任務(wù)和標(biāo)準(zhǔn)任務(wù)?焖偃蝿(wù)有很快的響應(yīng)速度,每個快速任務(wù)使用8051一個單獨(dú)的寄存器組,并且有自己的堆棧區(qū)域。rtx51支持最大同時有3個快速任務(wù)。標(biāo)準(zhǔn)任務(wù)需要多一點(diǎn)的時間來進(jìn)行任務(wù)切換,因此使用的內(nèi)部ram相對快速任務(wù)要少,所有的標(biāo)準(zhǔn)任務(wù)共用1個寄存器組和堆棧。當(dāng)任務(wù)切換的時候,當(dāng)前任務(wù)的寄存器狀態(tài)和堆棧內(nèi)容轉(zhuǎn)移到外部存儲器中。rtx51支持最大16個標(biāo)準(zhǔn)任務(wù)。

  rtx51任務(wù)狀態(tài):

 、龠\(yùn)行(runnign)——當(dāng)前正在運(yùn)行的任務(wù)處于running狀態(tài),同一時間只有1個任務(wù)可以運(yùn)行。

 、诰途w(ready)——等待運(yùn)行的任務(wù)處于ready狀態(tài),在當(dāng)前運(yùn)行的任務(wù)退出運(yùn)行狀態(tài)后,就緒隊(duì)列中優(yōu)先級最高的任務(wù)進(jìn)入到運(yùn)行狀態(tài)。

 、圩枞╞locked)——等待一個事件的任務(wù)處于blocked狀態(tài),如果事件發(fā)生且優(yōu)先級比正在運(yùn)行的任務(wù)高,此任務(wù)進(jìn)入運(yùn)行狀態(tài);如果優(yōu)先級比正在運(yùn)行的任務(wù)低,此任務(wù)進(jìn)入ready狀態(tài)。

 、軇h除(deleted)——沒有開始的任務(wù)處于刪除狀態(tài)。

 、萑蝿(wù)切換——rtx51包含一個事件驅(qū)動的任務(wù)切換機(jī)制,它能夠按照任務(wù)的優(yōu)先級進(jìn)行切換,也就是搶占式多任務(wù)系統(tǒng);另外還有一個可選的時間片輪轉(zhuǎn)切換任務(wù)模式,在時間片輪轉(zhuǎn)模式下,同級別的任務(wù)是按照時間片分別占用cpu的。rtx51任務(wù)有4個優(yōu)先級:0、1、2可以分配給標(biāo)準(zhǔn)任務(wù),優(yōu)先級3是為快速任務(wù)保留的。每個任務(wù)都可以等待事件的發(fā)生,而并不增加系統(tǒng)的負(fù)擔(dān);任務(wù)可以等待消息、信號、中斷、超時事件或者它們的組合。任務(wù)切換是按照一定規(guī)則進(jìn)行的,包括:進(jìn)入到“就緒”狀態(tài)的優(yōu)先級高的任務(wù)先執(zhí)行;如果“就緒”狀態(tài)的幾個任務(wù)是同一個優(yōu)先級,那么最先進(jìn)入“就緒”狀態(tài)的先執(zhí)行。

  rtx51任務(wù)切換圖如圖1所示。

rtx51事件

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

  ◇間隔(interval):類似于超時,但是軟件定時器沒有復(fù)位,典型應(yīng)用是產(chǎn)生時鐘。

  ◇信號(signal):用于任務(wù)內(nèi)部同步協(xié)調(diào)。

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

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

  os_wait()函數(shù)掛起一個任務(wù)來等待一個事件的發(fā)生。這樣可以同步2個或幾個任務(wù)。它的工作過程如下:當(dāng)任務(wù)等待的事件沒有發(fā)生的時候,系統(tǒng)掛起這個任務(wù);當(dāng)事件發(fā)生時,系統(tǒng)根據(jù)任務(wù)切換規(guī)則切換任務(wù)。

  2.3 rtx51中斷處理

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

應(yīng)用實(shí)例

  以下給出rtx51在單片機(jī)控制的gps接收板上的應(yīng)用。

 。1)系統(tǒng)硬件組成

  單片機(jī)w77e58,快速8051內(nèi)核、32kb rom、1kb的xdata ram,符合使用rtx51的硬件要求;鍵盤、gps定位模塊、液晶顯示模塊。

  (2)系統(tǒng)軟件構(gòu)成

  軟件運(yùn)行環(huán)境keil uvision2 6.20集成開發(fā)環(huán)境加上rtx51完成版。任務(wù)key-board,監(jiān)測鍵盤的情況,如果有按鍵按下,把按鍵的編碼發(fā)更新到郵箱1,外部中斷1等待接收gps數(shù)據(jù),并把數(shù)據(jù)存儲起來,向display任務(wù)發(fā)出信號。任務(wù)display根據(jù)接收到的不同的信號和消息,進(jìn)行處理。任務(wù)send-out,把接收到的數(shù)據(jù)進(jìn)行處理,并發(fā)送出去。任務(wù)voice進(jìn)行語音輸出。

  系統(tǒng)硬件、軟件結(jié)構(gòu)如圖2所示。

簡寫的源程序:

  #include //包含rtx51頭文件

  #define display 0

  #define send_out1

  #define key_board2

  #define voice3

  void main(void)

  { init system(); //系統(tǒng)初始化

  os start system(display); //啟動rtx51

  }

  void task0(void)_task_display

  { os_set_slice(1000); //設(shè)置時間片大小

  os_enable_isr(0); //允許外部中斷0

  os_creat_task(send_out); //啟動send_out任務(wù)

  os_creat_task(voice); //啟動voice任務(wù)

  for(;;){

  switch(os_wait(k_sig+k_mbx+1,255,&keyboard))//等待接收信號和鍵盤消息,分類處理

  {display1();break;

  case event_mbox;//當(dāng)從郵箱接收到數(shù)據(jù)的時候switch(keyboard)

  { case '1';

  …

  os_send_signal(send_out); //向任務(wù)send_out發(fā)送信號

  …

  os_send_signal(voice);} //向任務(wù)voice發(fā)送信號

  …;}

  …;}

  }

  void task1(void)_task_send_out //處理發(fā)送數(shù)據(jù)任務(wù)

  {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); //接收數(shù)據(jù)

  isr_send_signal(display); //向display任務(wù)發(fā)信號

  }

  #pragma registerbank(2) //使用寄存器組2

  void task2(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ī)程序更加方便了。尤其是較大的程序,避免了自己寫消息循環(huán)等繁瑣工作,效率明顯增加了。在硬件資源足夠的情況下,效果更加明顯。

  • 上一篇: C51單片機(jī)實(shí)現(xiàn)液晶秒表以及簡單計(jì)算器
  • 下一篇: Keil C51開發(fā)系統(tǒng)基本知識(1)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1