日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機編程心得

          單片機編程心得

          作者: 時間:2013-05-11 來源:網(wǎng)絡 收藏

          7.多任務程序,這個概念在前面也有提到,就是充分地利用CPU來實現(xiàn)多任務的前后臺操作,相當于自己用程序構造一個基于前后臺的多任務操作系統(tǒng),換句話說就是通過定時器中斷合理地分配CPU資源來響應不同的任務。多個任務需要CPU關照的頻度不一樣,我們選擇最快的那個頻度來作為定時器的節(jié)拍(通常為最小公倍數(shù),這樣方便定時器分配),然后通過定時器分頻,即滿足各個任務的響應節(jié)拍。比如任務A頻度為50HZ,任務B為40HZ,這樣我們就可以去定時器中斷節(jié)拍為200HZ,每個任務設定一個節(jié)拍控制計數(shù)器C,當C計數(shù)4次時,任務切換到A,計數(shù)到5次切換B……

          void Timer0(void) interrupt 1

          {

          //賦初值,定義變量

          for(i=0; i

          {

          if(task_delay[i]) task_delay[i]--;

          }

          void (*run_task[MAX_TASK])(); //定義一個函數(shù)指針數(shù)組

          void main()

          {

          //***其余部分省略

          while(1)

          {

          if(task_delay[0] == 0) {(*run_task[0])();task_delay[0] = C;/*任務0計數(shù)初值*/}

          //類似任務調(diào)度部分省略

          }

          }

          同時我們也很清楚的知道,有些任務需要很長的時間,如DS18B20溫度傳感器完成一次溫度轉換需要很長的時間(相對于的us級來說),這樣我們就可以將器件驅動任務在劃分為:初始段,啟動段,獲取結果段,等子任務段,可分別設定標志位(switch+case語句),在需要等待較長時間的地方,允許CPU去執(zhí)行其余任務,另外可在主程序任務輪訓中添加break來實現(xiàn)任務的優(yōu)先級劃分。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉