色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 程序的多任務(wù)和資源復(fù)用舉例

          程序的多任務(wù)和資源復(fù)用舉例

          作者: 時(shí)間:2012-07-04 來源:網(wǎng)絡(luò) 收藏


          /*---------------------------------------------------------------------------*/
          /*任務(wù)一*/
          /**********************************************
          一個(gè)部分輸出1HZ的方波,2S后停止。
          **********************************************/
          void Task1_MainLoop()
          {
            switch(mTask1Id){
             case 0:  if(fKey1){
                     fKey1=0;          /*接收該鍵值*/
                     mTask1_1HzReg=500/2;    /*1hz時(shí)間寄存器,500ms,以2MS為單位*/
                     mTask1_2SReg=2000/2;    /*2S時(shí)間寄存器,500ms,以2MS為單位*/
                     oTask1=0;
                     mTask1Id=1;
                  }
                  break;
             case 1:  if(fSYS_2ms){
                    mTask1_1HzReg--;
                    if(mTask1_1HzReg==0){
                      oTask1=~oTask1;
                      mTask1_1HzReg=500/2;   /*1hz時(shí)間寄存器,500ms,以2MS為單位*/
                    }

                    mTask1_2SReg--;
                    if(mTask1_2SReg==0){
                      oTask1=1;        /*2S時(shí)間到*/
                      mTask1Id=0;
                    }
                  }
                  break;
            }
          }


          /*---------------------------------------------------------------------------*/
          /*任務(wù)二*/
          /**********************************************
          一個(gè)一直輸出1.2hz的方波,直到按鍵再次按
          **********************************************/
          void Task2_MainLoop()
          {
            switch(mTask2Id){
             case 0:  if(fKey2){
                     fKey2=0;          /*接收該鍵值*/
                     mTask2_1p2HzReg=416/2;   /*1hz時(shí)間寄存器,832/2ms,以2MS為單位*/
                     oTask2=0;
                     mTask2Id=1;
                  }
                  break;
             case 1:  if(fKey2){
                   fKey2=0;
                   oTask2=1;
                   mTask2Id=0;
                  }
                  else {
                    if(fSYS_2ms){
                      mTask2_1p2HzReg--;
                      if(mTask2_1p2HzReg==0){
                        oTask2=~oTask1;
                        mTask2_1p2HzReg=416/2;  /*1hz時(shí)間寄存器,832/2ms,以2MS為單位*/
                      }
                    }
                  }
                  break;
            }
          }

          /*---------------------------------------------------------------------------*/
          /*主程序*/
          void main(){
            Timer0_Init();
            EA=1;

            while(1){
              Timer0_MainLoop();
              Key_MainLoop();
              Task1_MainLoop();
              Task2_MainLoop();
            }
          }


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 多任務(wù) 資源復(fù)用

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉