999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

51單片機循環輪詢多任務編程

2018-12-15 11:25:56杜隆胤方冰鄭軍
計算機時代 2018年10期
關鍵詞:單片機系統

杜隆胤 方冰 鄭軍

摘 要: 針對51單片機內存資源非常有限,很難布設操作系統,從而導致51單片機中多個功能有機融合比較困難的問題,首先分析了使用輕型的循環輪詢多任務編程思想在51單片機編程中的優勢;然后針對真實任務中存在阻塞問題,講述了如何對真實任務進行分解以滿足系統實時性要求;最后分析了循環輪詢系統中周期性實時任務和非周期性實時任務的觸發方式,設計出了較為通用的、以周期性實時任務和中斷服務任務為基本觸發源的系統實現模板。

關鍵詞: 51單片機; 循環輪詢系統; 多任務; 觸發條件

中圖分類號:TP368.1 文獻標志碼:A 文章編號:1006-8228(2018)10-01-03

Abstract: This paper is aimed at the problem that it's difficult to implement multifunctional system in 51 single chip microcomputer, because the RAM of 51 single chip microcomputer is so limited that it's impossible to place operating system into it. The advantage of the method of polling loop system multitask programming is analyzed. The really task is divided into a lot of tasks in order to ensure the real-time characteristic of the system, and avoid the task to be blocked. The trigger conditions of periodic real-time task and aperiodic real-time task are analyzed, and a software template for 51 single chip microcomputer with the basic trigger sources of periodic real-time tasks and interrupt service tasks is designed.

Key words: 51 single chip microcomputer; polling loop system; multitask; trigger condition

0 引言

今天,智慧城市、智慧小區、數字化校園等概念逐步深入人們的生活,嵌入式系統正悄然進入到人們的生活。作為低成本、低功耗和易上手的嵌入式芯片典型代表——51單片機一開始就成為嵌入式家族中不可或缺的重要一分子[1]。但是,51單片機最典型的缺點就是片載資源少,一般不能采用操作系統作為系統的支撐,這就使得系統實現時缺少了進程或任務的概念。在實現一些較復雜的應用時,多個真實任務相互制約使得系統實現非常困難,也為調試帶來較大的挑戰。因此、研究如何在51單片機有限資源的環境里實現輕型任務、以實現多任務編程以降低系統實現難度是非常有意義的。特別對于一些剛接觸51編程的人來說,多任務的思想無疑為編碼和調試帶來極大的便利。

1 背景

由于51單片機片載資源非常有限,因此在51單片機中布設操作系統非常困難[2]。沒有操作系統的支持,就為多功能有機融合帶來了困難。雖然沒有操作系統的支撐,但在系統實現過程中,采用任務的概念還是很必要的,否則將導致各個功能的融合很艱難。

一般情況下、任務可能的狀態有就緒態、執行態和阻塞態,在一些大型系統中會考慮的多任務執行時資源的短缺而引入掛起態[3]。在51系統中一般不考慮任務的掛起問題,因為任務的掛起也需要額外的資源;同時因為51系統中內存資源非常短缺,一般不考慮將任務包裝成“進程”。因此51系統中、可仿照操作系統實現多任務的理念,將真實的任務轉換成無需占用太多資源的輕型任務。

系統多任務的實現,按其最終的實現方式可分為批處理系統的多任務方式、分時系統多任務方式和循環輪詢方式。批處理系統的多任務方式是按一定先后順序將多個任務逐個完成的。為避免整個計算機系統處于阻塞態、需將任務包裝成“進程”,這會引起額外的資源開銷,同時批處理系統在保證系統的實時性方面也表現得不夠好;在分時實現方式中,采用合適的時間片和任務優先級可以較好的保證系統的實時性,但是分時系統中的任務需要進行包裝。即為了實現任務的自由切換而將從執行態的任務執行現場進行保存,為下一次投入運行作準備。因此采用分時系統理念的多任務實現方式也會產生額外的資源需求,因此在51系統中一般不考慮采用分時系統的多任務實現方式。

因此,在資源短缺的51單片及系統中,循環輪詢的輕型多任務思想是一個不錯的選擇。經過筆者多年的實踐證明,該實現方法能有效降低系統實現的復雜性,使得編程思路清晰,實現的系統調試方便,且能滿足應用的實時性方面的需求。

2 循環輪詢任務的設計

循環輪詢的實現方式中,認為每個任務的執行都是有一定的前提條件的,常見的執行條件有時間點到、前驅任務執行結束、某一特殊事件發生等等。因此設計系統時在系統的主循環里不斷地查詢各個任務的執行條件,一旦條件滿足就立即執行任務。一個簡單的循環輪詢系統程序流程圖如圖1所示。

循環輪詢中查詢的順序與任務的優先級有一定關系,通過改變查詢順序可以改變任務之間的優先級。各任務的執行條件可能在其他任務的執行期間產生,也可能在中斷服務程序執行期間產生。對于執行條件在其他任務中產生的那種具有前驅和后繼關系的任務,不能簡單改變查詢順序來改變任務之間的優先級。而在循環輪詢系統中,任務的前驅/后繼關系的應用是非常重要的。

為了能夠保證系統的實時性,在循環輪詢系統中各任務的執行是不允許出現“阻塞態”的。因為一旦某一任務進入阻塞態,特別是一些需要長時間延時的阻塞或需要其他任務或中斷程序的執行而產生條件的阻塞,輕則降低系統的實時性,嚴重時可能導致系統無法繼續運行。在設計循環輪詢系統時盡量避免在任務執行中有長時間的延時或無時間限制地等待某一事件的產生[4]。

因此可以說循環輪詢系統中的任務只有執行態和就緒態,沒有阻塞態。即每個任務都是當條件滿足就得以順利執行、直至執行結束。正因為取消了阻塞的概念,在設計任務時就不能將一些需要等待某一事件的發生或等待某一事件發生的過程設計在任務內。每個任務都應該是“一帆風順”地執行的,當條件成熟就順利地執行完所有操作,而且這些操作不應該占用太多處理器時間。然而實際應用中真實任務的往往并非"一帆風順",一般都需要延時或等待某一條件的產生才能往下執行。即一般意義的任務往往是具有“阻塞”情況的。

因此在設計循環輪詢任務時不能再按照原始的真實任務設計,而應將阻塞前的任務和阻塞后的任務分成不同的輪詢任務。具體分解方法如圖2所示。

因為阻塞后的代碼是等待某個事件的發生才能執行的,而該事件的捕捉一般是在其他任務里或中斷中。因此可以在等待某個事件發生時設置一個輪詢條件,而阻塞后的任務以此為輪詢條件即可實現等待事件發生后執行相應任務。

該解決方案也存在一個缺陷:當阻塞條件滿足后,等待該阻塞條件的任務不一定馬上能執行,不能保證后續任務的實時性。可以通過合理安排輪詢順序,或者在捕捉阻塞條件的任務或中斷中,立即執行后續任務進行改善。

3 循環輪詢系統多任務的實現

循環輪詢系統中的任務都是通過查詢執行條件執行的,因此、任務執行條件的產生就成了循環輪詢系統設計中非常關鍵的一環。只有每個任務的執行條件都按要求實時地產生了,在系統輪詢優先級恰當的情況下才能保證系統的實時性。為了準確及時的產生各任務的執行條件,我們首先必須對任務本身的特性進行分析。

實時系統中的任務可根據其執行與時間的關系分為周期性實時任務和非周期性實時任務。等待某一特定事件發生的任務一般為非周期性實時任務,如按鍵響應任務、溫度值達到某一水平時執行的任務等;需要按固定周期執行的任務叫做周期性實時任務,如多位數碼管的刷新任務、按鍵掃描任務、系統時鐘更新任務等等。經分析發現,實時系統中一般非周期性任務的執行條件都是由其他任務或中斷服務程序產生的,即非周期性實時任務的執行條件發生源包括周期性實時任務、中斷服務程序和其他非周期任務,而非周期性實時任務最終都是由周期性實時任務和中斷服務程序驅動的[5]。因此設計循環輪詢系統時,首先需要設計好系統中各中斷服務程序來及時產生觸發條件,其次要設計好各周期性實時任務的觸發。

對于中斷服務程序驅動非周期性實時任務的情況,相對比較簡單,只要在中斷服務程序中判斷其需觸發的程序的先決條件是否達到要求,一旦滿足要求就將其循環輪詢條件值置真即可。

系統中周期性實時任務的觸發條件產生方式有兩種:硬觸發和軟觸發。所謂軟觸發就是通過軟件延時實現周期性任務的觸發。該方式實現思路簡單,但觸發周期不夠準確,只能實現比較初略的周期定時,在一些小型的對實時性要求不高的應用中采用;所謂硬觸發就是利用系統內的定時/計數器周期性地產生觸發信號。該方式能較為準確的產生周期性的觸發信號,保證每個周期任務能及時執行,但該方式需要程序員對系統整體結構要有清晰的認識。兩種方式在不同周期的周期性任務的觸發條件產生方式上是一致的,本文就以硬觸發方式為例,探討如何為不同周期的周期性實時任務產生觸發條件。

假設系統內有n個周期性實時任務t1,t2,……,tn,它們的執行周期分別為c1,c2,……,cn,我們可以計算出c1,c2,……,cn的最大公約數Δt,因此,可以得到每個任務的執行周期與Δt的倍數關系值M1,M2,……,Mn。可以通過設置定時/計數器以實現每Δt發生一次定時/計數器中斷,在編寫中斷服務程序時就可以根據需要周期性的產生各周期性任務的觸發信號了。其關鍵代碼如下:

#defind MMAX Mm //Mm=MAX(M1,M2,……,Mm)

void interrupt_timerX() interrupt Y using Z

//每Δt執行一次該中斷服務程序

{ ……

count++;

count %=MMAX;

if(count % M1==x1) condition_t1=1; //觸發t1

if(count % M2==x2) condition_t2=1; //觸發t2

……

if(count % Mn==xn) condition_tn=1; //觸發tn

}

其中MMAX為M1,M2,……,Mn中的最大值,condition_tm為任務m的觸發條件。通過巧妙設置x1,x2,……,xn可以盡量避免在同一個時間點執行多道任務的情況發生,同時也可以實現將多個執行周期相同的任務的按一定時延(Δt的整數倍)先后被觸發的效果。該方法針對一些需要周期性執行、而且在執行期間有較長延時而分解成多個任務的情況非常有用。對于一些應用中計算出的Δt比較小的情況,可以根據實際情況適當調整各任務的周期,使得它們的最大公約數更大,一般最理想的情況是Δt為最小任務周期,即Δt=min(c1,c2,……,cn),這樣可以減少因為定時中斷而產生的CPU時間開銷。

由于非周期性實時任務的執行條件一般在周期性任務或中斷服務程序中產生,因此通過以上方式完成所有周期性實時任務的準時觸發后,就能保證系統中所有任務的到實時的觸發了。

4 結束語

本文從51單片機資源短缺、不適宜于布設操作系統說起,分析了51單品機系統開發中采用循環輪詢多任務思想的優勢;然后針對循環輪詢中任務的特性和真實任務之間的不同,講述了如何根據真實任務本身的執行流程,對其進行有目的拆分,以使得最終在系統布設的每個任務的執行均不會出現長時間延時或等待事件產生的阻塞情況發生;最后分析了周期性實時任務和非周期性實時任務的觸發條件的產生源,以硬觸發為例設計了一個可以保證各任務準時觸發的系統實現模板。但是由于真實系統中任務的復雜性遠遠超出了本文所分析的范疇,因此該系統實現模板很難適應所有開發場景,還需要針對具體應用進行改進。由于作者才疏學淺,不妥或錯誤之處在所難免,懇請同行、專家批評指正。

參考文獻(References):

[1] 張威等.MCS-51嵌入式系統原理及應用[M].中國石化出版社,2015.

[2] CSDN.51單片機多任務操作系統的原理與實現[EB/OL].[2016年03月14日].https://blog.csdn.net/wuhenyouyuyouyu/article/details/50883704l.

[3] 湯小丹等.計算機操作系統(第3版)[M].西安電子科技大學出版社,2007.

[4] 張仁寬.51單片機多任務編程設計及應用淺談[J].中國培訓,2016.8:260

[5] 李鵬.51單片機多任務機制的實現策略研究[J].山東工業技術,2016.7:252

猜你喜歡
單片機系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于單片機的SPWM控制逆變器的設計與實現
電子制作(2019年13期)2020-01-14 03:15:28
基于PowerPC+FPGA顯示系統
基于單片機的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
半沸制皂系統(下)
小議PLC與單片機之間的串行通信及應用
電子制作(2018年12期)2018-08-01 00:48:04
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
主站蜘蛛池模板: 狠狠色丁香婷婷综合| 国产导航在线| 久热中文字幕在线| 高清国产va日韩亚洲免费午夜电影| 99久久精品国产精品亚洲 | 国产导航在线| 乱系列中文字幕在线视频| 高清精品美女在线播放| 99青青青精品视频在线| 亚洲国产精品无码AV| 思思热精品在线8| 国产精品999在线| 亚洲av色吊丝无码| 91精品免费久久久| 亚洲自拍另类| 国产99视频在线| 欧美激情视频一区| 亚洲人成影院在线观看| 欧美a级在线| 一本大道香蕉中文日本不卡高清二区| 免费在线a视频| 999国产精品| 欧洲高清无码在线| 国产亚洲精品91| 久久女人网| 不卡无码h在线观看| 九色国产在线| 伊人久久精品无码麻豆精品| 亚洲人免费视频| 美女无遮挡免费视频网站| 喷潮白浆直流在线播放| 日韩精品一区二区三区中文无码| 国产av一码二码三码无码| 午夜日b视频| 黄色网站在线观看无码| 国产福利不卡视频| 无码视频国产精品一区二区| 国产v精品成人免费视频71pao| 国产美女91视频| 在线不卡免费视频| 免费看的一级毛片| 蜜芽一区二区国产精品| 国产网友愉拍精品视频| 色噜噜在线观看| 精品少妇人妻一区二区| 午夜精品久久久久久久99热下载| 国产美女在线免费观看| 久久伊人操| 亚洲精品无码抽插日韩| 欧美精品影院| 国产永久在线观看| 99在线观看精品视频| 一级毛片不卡片免费观看| 久久精品人人做人人爽| 亚洲成a人片7777| 国产一区二区精品高清在线观看| 91九色国产porny| 国产亚洲欧美日韩在线一区| 国产网站黄| 狠狠色丁婷婷综合久久| 亚洲娇小与黑人巨大交| 欧美日韩国产高清一区二区三区| 欧美午夜理伦三级在线观看| 亚洲码一区二区三区| 亚洲国产日韩一区| 天堂成人在线| 亚洲另类国产欧美一区二区| 亚洲福利网址| 一本大道视频精品人妻| 少妇精品在线| yy6080理论大片一级久久| 日韩免费视频播播| 久久精品66| 日韩精品亚洲人旧成在线| 亚洲欧洲日韩国产综合在线二区| 久久久久人妻精品一区三寸蜜桃| 奇米影视狠狠精品7777| 亚洲国模精品一区| 亚洲男人天堂网址| 91精品国产麻豆国产自产在线| 色婷婷亚洲十月十月色天| 色哟哟色院91精品网站|