<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于RTX51 的單片機軟件設計

基于RTX51 的單片機軟件設計

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò ) 收藏


2.3 RTX51中斷處理

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

3 應用實(shí)例

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

(1)系統硬件組成

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

(2)系統軟件構成

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



下面給出簡(jiǎn)寫(xiě)的源程序:

#include //包含RTX51頭文件
#define DISPLAY 0
#define SEND_OUT1
#define KEY_BOARD2
#define VOICE3
void main(void)
{ init system(); //系統初始化
os start system(DISPLAY); //啟動(dòng)RTX51
}
void task0(void)_task_DISPLAY
{ os_set_slice(1000); //設置時(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))//等待接收信號和鍵盤(pán)消息,分類(lèi)處理
{display1();break;
case EVENT_MBOX;//當從郵箱接收到數據的時(shí)候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ā)送數據任務(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); //等待語(yǔ)音處理信號
voice();}
}
void interrupt(void)interrupt 2 using 1
{ read_gps_data(p_gps_data); //接收數據
isr_send_signal(DISPLAY); //向DISPLAY任務(wù)發(fā)信號
}
#pragma REGISTERBANK(2) //使用寄存器組2
void task2(void)_task_KEYBOARSD_priority_3//設置為快速任務(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);}//將鍵盤(pán)編碼發(fā)送到郵箱1
}

4 結論

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

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: RTX51單片機軟件設

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>