單片機(jī)可以按分時(shí)、順序、中斷的方法處理多個(gè)任務(wù)。
程序是非常抽象的,程序質(zhì)量的好與差直接影響到運(yùn)行的效果。我們用單片機(jī)設(shè)計(jì)電子產(chǎn)品時(shí),同時(shí)運(yùn)行多個(gè)任務(wù)是很正常的。單片機(jī)是按順序執(zhí)行指令的,所以,主程序也是按著順序從頭到底的運(yùn)行的。以C語(yǔ)言寫(xiě)的單片機(jī)程序?yàn)槔?,一般以main()作為主函數(shù),利用while(1)不斷循環(huán)要執(zhí)行的任務(wù)程序。在實(shí)時(shí)性要求不同的應(yīng)用場(chǎng)合,順序運(yùn)行就可以了,實(shí)時(shí)性要求很高的任務(wù)一般用中斷來(lái)處理,如果想平衡各個(gè)任務(wù)的運(yùn)行時(shí)間,可以分時(shí)處理。
中斷處理實(shí)時(shí)性高任務(wù)
中斷可以理解為中途打斷,比如你正在工作,突然領(lǐng)導(dǎo)來(lái)電話了,當(dāng)你認(rèn)為領(lǐng)導(dǎo)電話比較重要的時(shí)候,就可以先保存正在進(jìn)行的工作進(jìn)度,接聽(tīng)領(lǐng)導(dǎo)電話,然后再接著你的工作。單片機(jī)程序也是一樣的。高優(yōu)級(jí)的任務(wù)可以設(shè)置為中斷,比如按鍵輸入中斷或者串口接收中斷。以串口接收中斷為例,假如單片機(jī)配置了串口接收中斷,當(dāng)串口接收到數(shù)據(jù)時(shí),主程序就會(huì)被打斷,保護(hù)現(xiàn)場(chǎng)數(shù)據(jù)后馬上跳到串口接收中斷程序,串口接收中斷程序處理完成后,再返回主程序接著運(yùn)行。
分時(shí)處理多個(gè)任務(wù)
可以用分時(shí)的方案平衡各個(gè)任務(wù)的處理時(shí)間,比如,我們可以引入一個(gè)計(jì)數(shù)器i,假如有5個(gè)任務(wù),可以讓i在0~4之不斷循環(huán),當(dāng)i=0時(shí)執(zhí)行任務(wù)1,當(dāng)i=1時(shí)執(zhí)行任務(wù)2,當(dāng)i=3時(shí)執(zhí)行任務(wù)4,當(dāng)i=4時(shí)執(zhí)行任務(wù)5就可以了。
當(dāng)然,你還可以用定時(shí)器中斷做一個(gè)計(jì)時(shí)器,0~1ms時(shí)運(yùn)行任務(wù)1,1~2ms時(shí)運(yùn)行任務(wù)2,2~3ms時(shí)運(yùn)行任務(wù)3,3~4ms時(shí)運(yùn)行任務(wù)4,4~5ms時(shí)運(yùn)行任務(wù)5。如果有更高的要求的話,還要以用到嵌入式操作系統(tǒng)了,比如FreeRTOS、uCos。
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44499瀏覽量
632174
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論