李 鵬(西藏民族大學(xué)信息工程學(xué)院,陜西 咸陽 712082)
51單片機多任務(wù)機制的實現(xiàn)策略研究
李 鵬
(西藏民族大學(xué)信息工程學(xué)院,陜西 咸陽 712082)
本文針對51單片機實現(xiàn)多任務(wù)處理這一問題,首先對該系列單片機多任務(wù)機制實現(xiàn)的原理和存在的主要問題進(jìn)行了研究,然后提出了兩種實現(xiàn)多任務(wù)機制的策略,最后對兩種策略的優(yōu)缺點進(jìn)行了對比,對該型單片機的多任務(wù)機制研究有一定的借鑒意義。
51單片機;多任務(wù)機制;實現(xiàn)策略
多任務(wù)機制就是在同一時間內(nèi)能夠執(zhí)行多個任務(wù)的機制,在多個處理器的系統(tǒng)內(nèi),這樣的機制不難實現(xiàn),但在只有一個處理器的控制系統(tǒng)內(nèi),就勢必要求多個任務(wù)在時間域內(nèi)進(jìn)行快速的切換,所以這種情況下的多任務(wù)并不是真正意義上的同一時間內(nèi)處理多個任務(wù),而是通過快速切換任務(wù)造成的錯覺。多任務(wù)系統(tǒng)任務(wù)的切換策略可分為協(xié)同式和搶占式。協(xié)同式多任務(wù)系統(tǒng),是指每個任務(wù)程序都可以釋放對CPU的控制權(quán),也即可將對CPU的使用權(quán)切換給其它程序,通常分為顯式和隱式。在搶占式多任務(wù)系統(tǒng)是指各程序不能自主的釋放CPU的控制權(quán),而是由操作系統(tǒng)統(tǒng)一行使CPU的控制權(quán),操作系統(tǒng)能夠從任何正在運行的程序上取走控制權(quán),并將控制權(quán)賦予另一個程序[1]。
51單片機只有一個執(zhí)行單元,這就意味著所有的程序只能按照執(zhí)行單元的流程順序執(zhí)行,除中斷外,其它的程序必須逐一完成,所以中斷是進(jìn)行多任務(wù)機制設(shè)計的關(guān)鍵切入點,只有通過中斷的方式才能實現(xiàn)多任務(wù)的切換,應(yīng)該重點考慮解決以下幾個問題:一是并行任務(wù)的數(shù)量問題。51單片機的8個工作寄存器的地址可映射到0-3區(qū)的工作區(qū)內(nèi),單片機可設(shè)置狀態(tài)寄存器的數(shù)值進(jìn)行工作區(qū)域的切換,所以多任務(wù)處理時的并行任務(wù)數(shù)量最大值不能超過4,這樣可以保證任務(wù)切換的時效性。二是任務(wù)切換的時間片分配方式。在多任務(wù)處理時對時間的分配方式是需要重點考慮的問題??蓪r間的長度進(jìn)行固定和量化,需要運行的各個任務(wù)含有不同時間長度的時間片段,每運行一個任務(wù)的時間片段,其狀態(tài)寄存器中的時間片數(shù)相應(yīng)的減少1,直至所有的時間片數(shù)減少為0,在時間片內(nèi)任務(wù)不切換,在時間片段之間按照任務(wù)的優(yōu)先級進(jìn)行排序完成,全部任務(wù)完成后重新賦值。三是不同任務(wù)性質(zhì)對應(yīng)的處理方式。針對不同的任務(wù)對時效性和重要性的要求,對時間敏感的任務(wù)或者等級較高的中斷賦予較高的優(yōu)先級,反之賦予較低的優(yōu)先級。
本文重點對兩種51單片機的多任務(wù)實現(xiàn)策略進(jìn)行研究,并對兩種策略的優(yōu)劣進(jìn)行對比分析,具體如下:
(1)通過定時器分配時間片實現(xiàn)多任務(wù)。51單片機內(nèi)有兩個定時器,用來進(jìn)行單片機的基準(zhǔn)授時,通過將兩個定時器輪流開啟和關(guān)閉,可以實現(xiàn)更長時間的定時,按照兩個定時器的位數(shù)均為16位來計算,在不增加外部計數(shù)器的情況下,可以實現(xiàn)1μs-4.29s的定時[2],去除中斷和初始化占用的時間,實際可供使用的時間要比理論值稍小。但對于51單片機的多任務(wù)設(shè)置來說時間已經(jīng)足夠。將單片機的輸入輸出端口連接任務(wù)設(shè)備,通過將每個任務(wù)分配一定的時間片段,在該時間片內(nèi)占用使用權(quán),對外設(shè)進(jìn)行控制,多個任務(wù)通過這樣的方式實現(xiàn)輪換執(zhí)行。程序的主流程圖如圖1所示。
(2)通過外部中斷掃描端口實現(xiàn)多任務(wù)。在實際的應(yīng)用中,如果單片機的輸入輸出端口連接較多的外部設(shè)備,比如傳感器等,這時需要根據(jù)傳感器的狀態(tài)來進(jìn)行任務(wù)的切換,中斷響應(yīng)是比較合適的切換信號[3]。51系列的單片機只有兩個中斷端口,在實際的使用中經(jīng)常面臨不夠用的情況,所以需要增加外部的擴展接口,常用的中斷擴展芯片有很多,比較有代表性的型號是8259A,該型芯片的可編程性和擴展性都很強,可將多個外部中斷連接至單片機的中斷請求引腳,這種擴展中斷的方法帶來的問題是成本較高,設(shè)計比較復(fù)雜,相應(yīng)的故障率可能提高。在實際應(yīng)用中可以考慮另外一種方法,將單片機的空閑IO端口進(jìn)行改造利用,作為傳感器的中斷請求引腳使用,單片機通過對端口的掃描,確定哪一個相應(yīng)的外設(shè)請求中斷,從而進(jìn)行任務(wù)的切換。當(dāng)沒有中斷請求時,控制系統(tǒng)按正常順序執(zhí)行。
圖1 通過定時器分配時間片段實現(xiàn)多任務(wù)輪換的程序流程
在通過掃描中斷狀態(tài)進(jìn)行多任務(wù)切換時,需要解決兩個問題:一是當(dāng)單片機閑置的I/O端口不能滿足中斷需求時,怎樣進(jìn)行處理。這時可以對外設(shè)的中斷需求進(jìn)行編碼,采用不同的編碼規(guī)則,對中斷信號進(jìn)行編碼后,每一個碼值對應(yīng)一個中斷信號,將不同的編碼值輸入同一個端口就能解決這一問題。二是外部中斷的優(yōu)先級如何評判。這個問題在實際的應(yīng)用中,可以通過對單片機的數(shù)據(jù)存儲區(qū)進(jìn)行賦值,不同的值表示不同的外部設(shè)備中斷的優(yōu)先級,中斷發(fā)生后通過對比中斷值和存儲區(qū)的預(yù)設(shè)值,就可以判斷中斷的優(yōu)先級,因為單片機連接的外部設(shè)備比較固定,外部設(shè)備的中斷優(yōu)先級比較穩(wěn)定,所以可以使用這種優(yōu)先級表法進(jìn)行優(yōu)先級的判定。
(3)二種策略特點的比較。上文所述的第一種策略是對每個任務(wù)分配固定的時間片段,各任務(wù)在控制系統(tǒng)的執(zhí)行單元的統(tǒng)一調(diào)度下執(zhí)行任務(wù),每個任務(wù)在給定的時間片段內(nèi)完全占有CPU的使用權(quán),其它程序不能中斷該任務(wù)的執(zhí)行,這種策略的優(yōu)點是程序的執(zhí)行可靠性高、系統(tǒng)穩(wěn)定,但缺點是系統(tǒng)的效率不高,可能造成CPU的大量閑置,比較適合處理既定任務(wù)和批處理任務(wù),不適合中斷較多的情況。第二種策略是擴展性比較好、系統(tǒng)可以方便的與外設(shè)進(jìn)行交互,同時時效性比較高。這種策略可以應(yīng)用在對時效性要求高、外設(shè)中斷較多、情況比較復(fù)雜的控制系統(tǒng)中,其缺點是造價較高,設(shè)計復(fù)雜,系統(tǒng)的穩(wěn)定性和可靠性不如第一種策略。
單片機的多任務(wù)機制實現(xiàn)的途徑有很多,既可以從單片機固有的功能進(jìn)行拓展來實現(xiàn),也可以通過增加外設(shè)來實現(xiàn),本文介紹的兩種實現(xiàn)方法各有其優(yōu)缺點,希望對單片機的多任務(wù)機制研究有一定的參考價值。
[1]吳金戌,沈慶陽,郭庭吉.8051單片機實踐與應(yīng)用[M].北京:清華大學(xué)出版社,2002:58.
[2]王輝堂,顏自勇,陳文薌.一種基于C51的多任務(wù)機制及應(yīng)用[J].電子設(shè)計應(yīng)用,2006(06):45-48.
10.16640/j.cnki.37-1222/t.2016.14.224