當前位置:編程學習大全網 - 編程語言 - 怎麽實現單片機多個函數功能同時執行

怎麽實現單片機多個函數功能同時執行

單片機“同時”執行多個函數的方法,壹定要耐心看完哦!

設計主要思想:

單片機不可能同時執行多個函數,但是可以先後執行程序給他安排的每壹件事,假如每個事件間隔時間非常短,ms、us級別,或者間隔時間更短,那麽連續壹段時間內執行的事件,看起來就是同時執行的。每壹個事件可以看做壹個或多個函數,也就意味著只要程序安排的合理,很多函數看起來是同時運行的;

模型舉例:假如要做幾件事,燒開水,洗衣服,打遊戲;

A:燒開水,等好了之後,洗衣服,洗完之後,打遊戲;

B:燒開水,洗衣服時監聽水壺的聲音,兩件事執行完,打遊戲;

C:選擇壹個燒水開了會停止工作的電水壺,不要等了,用洗衣機洗衣服,打遊戲;

耗時:A最長,其次B,C最短。

不同的工具占用人時間精力也是不同的,同理單片機周圍外設選擇不同,也會影響CPU占用時間;

實例:

要求:假如單片機要“同時”執行,數碼管顯示、蜂鳴器、流水燈移動;

具體實施A:設置壹個定時器,假如每隔1ms進入中斷,設置幾個全局變量x、y、z,定時器中斷裏自加,在程序主循環裏查詢全局變量的數值,當x大於500後,清零x,讓流水燈移位,當y大於,1000時清零y,數碼管加1,當z大於2時,清零z,反轉控制蜂鳴器的IO電平,以此類推其他事情也是如此。

具體實施B:設置單片機本身PWM驅動蜂鳴器,設置壹個定時器,假如每隔1ms進入中斷,設置幾個全局變量x、y、z,定時器中斷裏自加,在程序主循環裏查詢全局變量的數值,當x大於500後,清零x,讓流水燈移位,當y大於,1000時清零y,數碼管加1,以此類推其他事情也是如此。

使用內部PWM資源可以更省CPU時間!

總結:

如果外設資源不足只能算法來補充;

以上方法適合資源較少的單片機,若是單片機資源夠多(RAM>4K,Flas>8K),很多實時操作系統可以選擇:ucos,FreeRTOS等,這些實時操作系統可以方便管理事件的切換。

  • 上一篇:QQ西遊的隱藏任務有哪些?求坐標。
  • 下一篇:“獵迷”大型反潛巡邏機的近期改裝升級
  • copyright 2024編程學習大全網