❶ 單片機怎麼同時調用數組中的多個數據
單備此兄片機同時調扒氏用數組中的多個數據可以用分時的方案平衡仿襲各個任務的處理時間。比如,我們可以引入一個計數器i,假如有5個任務,可以讓i在0~4之不斷循環,當i=0時執行任務1,當i=1時執行任務2,當i=3時執行任務4,當i=4時執行任務5就可以了。
❷ 怎麼實現單片機多個函數功能同時執行
設計主要思想:
單片機不可能同時執行多個函數,但是可以先後執行程序給他安排的每一件事,假如每個事件間隔時間非常短,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等,這些實時操作系統可以方便管理事件的切換。
❸ 求教:單片機怎麼同時運行幾個程序啊
你說的是狀態機。你可以立一個flag表示模式,模式一,模式二,模式三,這樣循環運行,那你可能要問了,我每個模式程序的有延時怎麼辦?
這時可以用定時器,定時器flag時間到了,主程序判斷運行某一個模式的下一步。
又或者你是比較簡單的程序不用定時器,比如電機,每4S開關,蜂鳴器每2S開關,取你最小的延時時間。那麼程序只需要放一個2S延時對應的flag,flag%1==0,蜂鳴器開關,flag%2==0,電機開關。