<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è) > 嵌入式系統 > 設計應用 > 單片機RTOS隨想曲

單片機RTOS隨想曲

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

本文標為隨想曲,是說(shuō)明這不是一篇結構嚴謹的文章,而是想到哪寫(xiě)到哪,希望讀者能喜歡這種風(fēng)格。以下為本文正文:
對于搞的特別用8051系列工程師來(lái)說(shuō),談到,很多時(shí)候會(huì )問(wèn)一句:“為什么要用?就這一點(diǎn)資源,使用能保證效率嗎?”
對于這個(gè)問(wèn)題,我會(huì )反問(wèn):“你用單片機的目的是什么?是為了用單片機的,單片機的匯編編程甚至于用單片機的二進(jìn)制指令編程?”上個(gè)世紀80年代,工程師用二進(jìn)制指令給Z80編程,現在還有誰(shuí)在用?現在還有人死抱著(zhù)匯編不放,但越來(lái)越多的人工程師使用(我起初也是使用匯編的),為什么?因為我們的目的是在有限的時(shí)間甚至是不充足的時(shí)間內把項目保質(zhì)保量的完成!使用是么工具和方法是次要的(如果你的項目以成本放在第一位,則另當別論,這時(shí),也是要考慮開(kāi)發(fā)時(shí)間的)。時(shí)間就是金錢(qián)啊,一個(gè)產(chǎn)品在單片機上增加些許成本是可以接受的。況且,使用8051系列單片機時(shí),單片機資源也常有富余,CPU一般情況也只是空轉,這就為它使用RTOS創(chuàng )造了條件。
那么,使用RTOS的好處呢?我舉一個(gè)例子吧。假設我們編一個(gè)串行通訊程序,通訊協(xié)議如下:
數據包長(cháng)度為NBYTE,起始字節為STARTBYTE1,STARTBYTE2,最后一個(gè)字節為檢驗和,中間字節不可能出現連續出現STARTBYTE1,STARTBYTE2。
第一種方法,在中斷中處理協(xié)議:

unsigned char Buf[NBYTE-2];
bit GetRight=0;
void comm(void) interrupt 4
//"串行口中斷"
{
static unsigned char Sum,Flag=0,i;
unsigned char temp;

if(RI==1)
{
RI=0;
temp=SBUF;
switch(Flag)
{
case 0:
if(temp==STARTBYTE1)
{
Flag=1;
}
break;
case 1:
if(temp==STARTBYTE2)
{
Sum=STARTBYTE1+STARTBYTE2;
i=0;
Flag=2;
break;
}
if(temp==STARTBYTE1) break;
Flag=0;
break;
case 2:
if(temp==STARTBYTE1)
{
Flag=3;
break;
}
Sum+=temp;
if((i>=(NBYTE-3))Sum==0)
{
GetRight=1;
Flag=0;
break;
}
Buf[i++]=temp;
break;
case 3:
if(temp==STARTBYTE2)
{
Sum=STARTBYTE1+STARTBYTE2;
Flag=2;
i=0;
break;
}
Sum+=STARTBYTE1;
if((i>=(NBYTE-3))Sum==0)
{
GetRight=1;
Flag=0;
break;
}
Buf[i++]=STARTBYTE1;
if(temp==STARTBYTE1)
{
break;
}
Sum+=temp;
if((i>=(NBYTE-3))Sum==0)
{
GetRight=1;
Flag=0;
break;
}
Buf[i++]=temp;
Flag=2;
break;
}
}
}


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

關(guān)鍵詞: 單片機 RTOS C編程

評論


相關(guān)推薦

技術(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>