技術文章

當前頁面: 伯恩茅斯vs曼城 >技術文章 >多任務機制在單片機系統中的應用

伯恩茅斯队徽:多任務機制在單片機系統中的應用

--多任務機制在單片機系統中的應用

供稿:中山市優薩電子有限公司 2010/5/17 11:41:00

0 人氣:9614

伯恩茅斯vs曼城 www.yubfka.com.cn

摘 要:提出了一種嶄新的基于任務機制的單片機系統程序結構,討論了具體實現方法,并給出應用實例。
關鍵詞:多任務機制 單片機系統 中斷機制
  傳統的單片機系統監控程序通常是基于單任務機制的。這種機制具有簡單直觀,易于控制的優點。然而由于程序只能按單一的線索順序執行,缺乏靈活性,在復雜系統中難以勝任。為了在更廣泛的領域應用單片機系統,必須對傳統的單任務機制進行改進。
  多任務機制是現代操作系統才具有的突出優點。在這種機制下,CPU的運行時間被劃分為許多小的時間片,由某種調度算法按不同優先級別分配給不同的應用程序。多個應用程序分別在自已的時間片內訪問CPU,從而造成微觀上輪流運行,宏觀上并發運行的多任務效果。
  在單片機系統中引入多任務機制,可以有效改善程序結構,滿足復雜系統的要求。任何多任務本質上都借助于中斷機制。通用單片機中都允許使用中斷,從而保證了在單片機系統中實現多任務的切實可行。而單片機運算能力的有限要求多任務調度算法必須簡潔。
  

1 兩種機制的比較
  一個典型的單片機監控系統通常包括輸入、輸出控制,數據處理,顯示以及鍵盤管理。在傳統的單任務機制下,程序采用循環方式,其流程圖如圖1所示。
  由流程可知,在單任務機制下,各功能??榘垂潭ㄋ承蜆鉤梢桓穌?,作為一個任務得到執行。而在實際應用中,各個??橐蟮鬧蔥釁德釋灰恢?,如輸入采樣頻率可能要求很高,而單位時間內鍵盤掃描的次數則相對較少,系統這種復雜的定時要求在單任務機制下難以滿足。另外在這種結構下程序一旦建立,各??櫚鬧蔥興承蚣匆壓潭?,對于需在運行時動態改變執行結構的系統,程序需用許多條件判斷和分枝轉移語句進行控制,增加了程序的復雜性。程序作為一個整體而存在可讀性和可維護性很差,調試不便,對已有程序進行擴充,也需先了解整個程序結構,增加了擴充難度。
  考慮到單片機完成的系統功能往往可以分解為若干相對獨立的???,我們可以將這些??槔斫馕尤撾?,并引進多任務機制進行管理,從而形成一種嶄新的程序結構。其示意圖如圖2所示。
  在這種結構下,各功能??橛上低車鞫瘸絳蚱舳蔥型甌蝦蠓禱叵低車鞫瘸絳?,彼此處于等同地位,其執行順序也比較靈活,且可在程序運行過程中動態地改變執行結構。各子任務的執行頻率要求表現為它們的優先級,優先級越高的子任務單位時間內執行次數越多,從而其執行頻率越高。各子任務在自已的時間片內運行,通過合理設計時間片大小和各任務的優先級,可以自然地滿足系統內各種復雜的定時要求。
  在多任務結構下程序的調試與維護也變得容易。程序以分立??樾問醬嬖?,各??榧涔δ芏懶?,相互影響小,可以方便地單獨調試,并尋找問題所在。對程序的擴充更為方便,不用更改原有結構,只需增加要擴充的部分即可。
  

2 多任務機制的實現
  利用單片機具有的內部時鐘中斷,可以方便地實現多任務機制。下面以常用的MCS—51系列單片機為例,說明其實現方法。
  由多任務機制的特點,必須提供一個系統時鐘,根據系統時鐘將CPU運行時間劃分為若干時間片,由系統調度程序分給各個任務???。我們可由MCS—51系統單片機內帶的定時器完成這一工作。定時參數的選擇應考慮到系統中各種定時要求,定時頻率一般應設計為各??橐籩蔥釁德實惱鍍?。
  為了實現多任務,還需構造一個任務調度表并維護一個系統任務指針。任務調度表每一表項占4個字節,保存各任務??櫚娜肟詰刂泛頭夢始剖?,表項數等于需調度的任務??槭?。任務調度表指示了各任務的執行順序和優先級別。在程序建立時可在程序存儲器中建立一份缺省的任務調試表并在程序運行初始化時調入系統RAM中,在程序運行期間可根據實際需要修改RAM中的任務調度表,使各任務的執行順序和優先級別得到動態調整。系統任務指針為一個1字節整數,指向系統當前正執行的任務。由任務指針和任務調度表表頭可以找到相應的任務程序入口地址。
  多任務機制的具體實現由調度程序完成。調度程序在每個時鐘片的開始取得控制,它將系統任務指針加4,使之指向下一個任務???,并根據新的任務指針查閱任務調度表,將任務的訪問計數器減一,看是否為零。不為零則直接返回;為零則將當前任務入口地址讀入DPTR寄存器,用JMP @A DPTR指令轉而執行相應的任務???。各任務??櫓蔥型甌轄嚶Ψ夢始剖髦貿沙踔?,供調度程序下一次使用。任務指針到達調試表未尾時,由任務調度程序將其復位,使之指向任務調度表開頭,重新開始程序周期。
  由上述實現方案可知,各任務??樵謔敝又卸銑絳蛑兄蔥?,這可很好地滿足各任務??槎災蔥釁德實囊?。但考慮到單片機調度能力有限的特點,為各個任務??櫸峙淶氖奔淦仁導仕榪贍萇杏懈揮?,而各任務??樽魑敝又卸俠討蔥型甌隙擠禱氐街鞒絳?。因此可將某些對執行頻率無要求的任務??櫸湃脛鞒絳蛟誦?,從而充分利用各時間片內的富余時間,提高程序運行效率。
  實現多任務的關鍵在于合理地將系統功能分解為各個任務???。一般可將程序分為輸入、輸出、數據處理、顯示、鍵盤掃描等任務???。分解系統功能應注意以下幾個問題:
  (1)各個任務??樾杈×慷絳【?,在系統時間片內應能充分行到執行。在設計任務??槭庇×拷渲械難郵幣笞閱?櫓蔥釁德實囊?。如在動態顯示??檣杓浦忻課幌允炯湟笥?-2ms左右的延時來保證顯示穩定,若采用一次將所有位全部顯示一遍的方案,顯示??榻淶萌叱?,不適宜在中斷程序中執行。我們可以采用一次只顯示一位的方法,這樣的顯示??橛捎諉揮醒郵倍玫驕?,位顯之間的延時時間可由??櫓蔥釁德世淳齠??! ?2)在設計中若不可避免出現某一任務??楣ざ荒茉諳低呈奔淦謚蔥型甌系那榭?,可由下列兩種方法解決:
  第一種方法是若此??槲拗蔥釁德實囊蠛褪奔瀋系難細襝拗?,可將其放入主程序,充分利用各時間片的富余時間執行。
  第二種方法是在進入該任務??槭苯低呈敝油V?,這樣相當于臨時給此??櫸峙淞爍郊釉誦惺奔?。在??櫓蔥型甌鮮庇χ匭麓蚩低呈敝?,使多任務調度程序能正常工作。
  (3)各任務??樵詮δ萇嫌×肯嗷ザ懶?,以保證程序調試和維護的方便。
  (4)若某些??楸匭胂嗷ヅ浜瞎ぷ?,可以采用公共單元進行通信,保持同步。
  綜上所述,在單片機系統中實現多任務機制,要借助于時鐘中斷。由定時器產生系統時間片,由系統調度程序將時間片分配給各任務???。合理設計各任務??榭沙浞址⒒傭噯撾窕頻撓旁叫?。
  

3 應用實例
  利用單片機AT89C51設計一個應用系統。要求系統同時接受兩個通道的數據輸入,一個通道每10ms采集一次,用于顯示和打印,另一通道每2ms采集一次,用于監控;顯示采用LED數碼管動態顯示方式;系統要求配有鍵盤接受用戶命令;系統要求每隔10s自動打印一次結果,打印程序應支持兩種不同型號的打印機(由用戶通過鍵盤選擇)。
  由前述實現方案,可如下設計各任務??椋?br/>  首先應提供兩個輸入???,其執行頻率分別為1次/10ms和1次/2ms,可分別記為I1,I2???。
  由于采用動態顯示方案,設計顯示??槲看蝸允疽晃?。為保持顯示穩定,每兩位顯示之間需間隔一定時間,這里定為2ms。即要求顯示??櫚鬧蔥釁德飾?次/2ms。顯示??榧俏狣???。
  鍵盤掃描的去抖延時時間定為50ms,因此鍵盤管理??櫚鬧蔥釁德飾?次/50ms。鍵盤管理??榧俏狵???。
  系統要求提供打印功能,因此還需設計打印???,其執行頻率為1次/10s。由于要支持兩種不同的打印機,應設計兩個打印??樘峁┓?,分別記為P1,P2???。
  此外系統還應有數據轉換程序及其它相關功能???。由于這些功能??椴⒚揮醒細竦氖奔湎拗?,可以放入主程序中執行,不參與多任務調度。
  由上述分析可知,系統要求同時調度5個任務???P1與P2并不同時使用),因此任務調度表設計為5個表項。系統要求的最高執行頻率為1次/2ms,可將系統時間片長度設計為400μs。由此可計算出各任務??櫸夢始剖韉鬧?,如表1。
  表1   ??槊?十進制計數值 16進制計數值
       I1     5     0005
       I2     1     0001
        D     1     0001
       K
     25    0019
     P1,P2     5000   
1388
  若采用P1作為缺省打印管理程序,則可建立缺省的任務調度表如表2所示。
  表2   I1入口 I2入口 D入口 K入口 P1入口
       0005  0001  0001 0019 1388
  任務調度程序可如下編寫:
  …… mov  a,pointer  ;pointer為當前任務指針
     add  a,#tasktbl;tasktbl為任務調度表首址
     add  a,#02h;指向訪問計數器
     mov  r0,a
     mov  a,@r0;訪問計數器值減一
     clr  c
     subb a,#01h
     mov  b,a
     inc  r 0
     mov  a,@r 0
     subb a,#00h
     jnz exit      ;不為零則返回

更多內容請訪問 中山市優薩電子有限公司(//c.gongkong.com/?cid=33789)

手機掃描二維碼分享本頁

工控網APP下載安裝

工控速派APP下載安裝

 

我來評價

評價:
一般