<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è) > 嵌入式系統 > 設計應用 > 單片機編程心得

單片機編程心得

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

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

void Timer0(void) interrupt 1

{

//賦初值,定義變量

for(i=0; i

{

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

}

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

void main()

{

//***其余部分省略

while(1)

{

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

//類(lèi)似任務(wù)調度部分省略

}

}

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


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

評論


相關(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>