新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機RTOS隨想曲

        單片機RTOS隨想曲

        作者: 時間:2012-10-16 來源:網絡 收藏

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

        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;
        }
        }
        }


        上一頁 1 2 下一頁

        關鍵詞: 單片機 RTOS C編程

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 界首市| 弥勒县| 萝北县| 盈江县| 五华县| 曲阳县| 保山市| 双辽市| 虞城县| 紫阳县| 临安市| 安阳县| 毕节市| 贡嘎县| 高清| 宽城| 工布江达县| 藁城市| 山西省| 子长县| 宝兴县| 宁南县| 韶山市| 丽水市| 铁岭市| 江川县| 湖口县| 延安市| 余江县| 自贡市| 汤原县| 白玉县| 南皮县| 望城县| 遵义市| 略阳县| 永寿县| 灵寿县| 深州市| 方山县| 左权县|