中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        單片機(jī)RTOS隨想曲

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

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

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉