![采用時間輪詢執(zhí)行的C51程序_第1頁](http://file4.renrendoc.com/view/be46a4c6dbcdfc9f8d4c03c39a0ae4fd/be46a4c6dbcdfc9f8d4c03c39a0ae4fd1.gif)
![采用時間輪詢執(zhí)行的C51程序_第2頁](http://file4.renrendoc.com/view/be46a4c6dbcdfc9f8d4c03c39a0ae4fd/be46a4c6dbcdfc9f8d4c03c39a0ae4fd2.gif)
![采用時間輪詢執(zhí)行的C51程序_第3頁](http://file4.renrendoc.com/view/be46a4c6dbcdfc9f8d4c03c39a0ae4fd/be46a4c6dbcdfc9f8d4c03c39a0ae4fd3.gif)
![采用時間輪詢執(zhí)行的C51程序_第4頁](http://file4.renrendoc.com/view/be46a4c6dbcdfc9f8d4c03c39a0ae4fd/be46a4c6dbcdfc9f8d4c03c39a0ae4fd4.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
采用時間輪詢執(zhí)行的C51程序采用時間輪詢執(zhí)行的C51程序采用時間輪詢執(zhí)行的C51程序xxx公司采用時間輪詢執(zhí)行的C51程序文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度采用時間輪詢執(zhí)行的C51程序來源:單片機(jī)及嵌入式系統(tǒng)應(yīng)用作者:希麥特電子科技彭光紅引言:2002年初,筆者著手寫一個IC卡預(yù)付費(fèi)電表的工作程序,該電表使用Philips公司的8位51擴(kuò)展型單片機(jī)87LPC764,要求實(shí)現(xiàn)很多功能,包括熄顯示、負(fù)荷計(jì)算與控制、指示閃爍以及電表各種參數(shù)的查詢等,總之,要使用時間的單元很多。筆者當(dāng)時使用ASM51完成了這個程序的編寫,完成后的程序量是2KB多一點(diǎn)。后來,由于種種原因,這個程序并沒有真正使用,只是作了一些改動之后用在一個老化設(shè)備上進(jìn)行計(jì)時與負(fù)荷計(jì)算。約一年后,筆者又重新改寫了這些代碼。1系統(tǒng)的改進(jìn)可以說,這個用ASM51實(shí)現(xiàn)的代碼是沒有什么組織性可言的,要什么功能就加入什么功能,弄得程序的結(jié)構(gòu)非常松散,其實(shí)這也是導(dǎo)致筆者最終決定重新改寫這些代碼的原因。大家知道,87LPC764有4KB的FlashROM,而筆者的程序量只有2KB多點(diǎn),因而第一個想法是改用C語言作為主要的開發(fā)語言,應(yīng)該不至于導(dǎo)致代碼空間不夠用。其次,考慮到需要定時功能的模塊(或稱任務(wù),以下統(tǒng)稱任務(wù))較多,有必要對這些任務(wù)進(jìn)行有序的管理。筆者考慮使用時間片輪詢方式,即給每個要求時間管理的任務(wù)以一個時間間隔,時間間隔一到,即運(yùn)行其代碼,達(dá)到合理使用系統(tǒng)定時器資源的目的。就51系統(tǒng)而言,一般至少一個定時器可用來進(jìn)行時間片的輪詢?;谝陨系南敕?,構(gòu)造了下述數(shù)據(jù)類型。typedefunsignedcharuInt8typedefstruct{void(*proc)(void);s_count;Op[cnt].proc();}}}while(1);}在上面的結(jié)構(gòu)定義中,proc是不能帶參數(shù)的,各任務(wù)之間的通信可以定義一個參數(shù)內(nèi)存塊,通過一種機(jī)制進(jìn)行數(shù)據(jù)信息交互,如定義一個全局變量。對于小容量單片機(jī)系統(tǒng)而言,需要這樣做的任務(wù)并不多,總?cè)蝿?wù)量也不會太多,因而這種協(xié)調(diào)并不太難處理。也許大家都有這樣的認(rèn)識,即一個實(shí)時系統(tǒng)中,差不多所有的具體任務(wù)都是有時間屬性的,即使是不需要定時的過程或任務(wù),也不見得要時時進(jìn)行查詢與刷新。如IC卡介質(zhì)檢測,保證每秒一次就足夠了。因而,這些任務(wù)也可以列入到這個結(jié)構(gòu)中來。在以上的程序代碼中,考慮到單片機(jī)系統(tǒng)的RAM限制,不能像一些實(shí)時OS那樣將任務(wù)棧建立在RAM中。筆者將任務(wù)棧建立在代碼空間,因而不能在程序運(yùn)行時動態(tài)地加入任務(wù),因此要求在程序編譯時,任務(wù)棧已經(jīng)確定。同時,定義一組計(jì)數(shù)值旗標(biāo)time_val,記錄程序運(yùn)行時的時間量,并在一個定時器中斷中對其進(jìn)行刷新。改變時間片刷新中斷過程語句Time_Counter:=Time_Unit;中的Time_Unit,可以改變系統(tǒng)時間片的刷新粒度,一般這個值由系統(tǒng)的最小時間度量值確定。同時,由任務(wù)的執(zhí)行流程可知,此種系統(tǒng)構(gòu)造并沒有改變其前/后臺系統(tǒng)的性質(zhì),只是對后臺邏輯操作序列進(jìn)行了有效管理。同時,如果將任務(wù)執(zhí)行流程進(jìn)行一些更改,并保證時間片小的任務(wù)前置,如下述程序。do{for(cnt=0;cnt<proc_cnt;cnt++){if(!time_val[cnt]){time_val[cnt]=Op[cnt].ms_count;Op[cnt].proc();break;//執(zhí)行完成后,重新進(jìn)行優(yōu)先調(diào)度}}}while(1);則系統(tǒng)變?yōu)橐粋€以執(zhí)行頻率為優(yōu)先級的任務(wù)調(diào)度系統(tǒng)。當(dāng)然,設(shè)置此種方式得非常小心,并要注意時間片的分配,如果時間片過小,則可能導(dǎo)致執(zhí)行頻率較低的任務(wù)難以被執(zhí)行;而如果存在兩個同樣的時間片,則更加危險,可能導(dǎo)致第二個具有相同時間片的任務(wù)不被執(zhí)行,因而,時間片的分配要合理,并保證其唯一性。2性能分析與任務(wù)拆分以上兩種任務(wù)管理方式,前一種按任務(wù)棧的順序與時間片的大小依次進(jìn)行調(diào)度,暫且稱其為流水作業(yè)調(diào)度;而后一種,且稱其為頻率優(yōu)先調(diào)度。兩種方式各有優(yōu)缺點(diǎn)。流水作業(yè)調(diào)度的各任務(wù)具有等同優(yōu)先級,時間片一到即會被按序調(diào)用,時間片大小的次序與唯一性不作要求;缺點(diǎn)是可能導(dǎo)致時間片小的,即要求執(zhí)行得較快的任務(wù)等待過長的時間。頻率優(yōu)先調(diào)度的各任務(wù)按其時間片的大小,即執(zhí)行頻率劃分優(yōu)先級,時間片小的任務(wù),其執(zhí)行頻率高,總是具有較高的優(yōu)先權(quán),但時間片的分配得協(xié)調(diào),否則可能會導(dǎo)致執(zhí)行頻率低的任務(wù)長時間等待。要特別注意的是,兩種方式都有可能導(dǎo)致一些任務(wù)長時間等待,時間片所設(shè)定的時間也因此不能作為精確時間的依據(jù),根據(jù)系統(tǒng)的要求或需要,甚至要在任務(wù)執(zhí)行過程中進(jìn)行某些保護(hù)工作,如中斷屏蔽等,因而在進(jìn)行任務(wù)規(guī)劃時要注意。如果一個任務(wù)較繁瑣或可能要等待很長時間,則應(yīng)當(dāng)考慮任務(wù)的拆分,把一個較大的任務(wù)細(xì)化為較小的任務(wù),把一個費(fèi)時長的任務(wù)劃分為多個費(fèi)時小的任務(wù),協(xié)同完成其功能。如在等待時間長的情況下,可附加一個定時任務(wù),定時任務(wù)到則發(fā)送一個消息旗標(biāo),主過程沒有檢測到消息旗標(biāo)就馬上返回,否則繼續(xù)執(zhí)行。下面是示例代碼,假定該任務(wù)將等待很長時間,現(xiàn)將其拆分為兩個任務(wù)proc1與proc2協(xié)同完成原來的工作,proc1每100個時間單位執(zhí)行一次,而proc2每200個時間單位執(zhí)行一次。//定義兩個任務(wù),并將其加入到任務(wù)棧中。code_op_Op[proc_cnt]={…,{proc1,100},{proc2,200}};datainttime1_Seg;//定義一個全局旗標(biāo)//任務(wù)實(shí)現(xiàn)voidproc1(void){if(time1_Seg)exit;elsetime1_Seg=const_Time1;//如果時間到了,則恢復(fù)初值并//接著執(zhí)行下列代碼?!?/任務(wù)實(shí)際執(zhí)行代碼}voidproc2(void){if(time1_Seg)time1_Seg--;}由上例可以看出,任務(wù)拆分后,幾乎不占過多的CPU時間,使得任務(wù)的等待時間大減,讓CPU有足夠的時間進(jìn)行任務(wù)管理與調(diào)度。同時也讓程序的結(jié)構(gòu)性與可讀性大為加強(qiáng)。結(jié)語基于上述思路與結(jié)構(gòu)對IC卡電表工作程序進(jìn)行全部改寫后,系統(tǒng)的結(jié)構(gòu)性能得到了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 可穿戴設(shè)備的防水防塵技術(shù)探討考核試卷
- 新能源汽車充電樁建設(shè)項(xiàng)目投資合同
- 工藝美術(shù)品市場調(diào)研方法與技巧考核試卷
- 基因工程藥物的個性化治療考核試卷
- 樂器制作與音樂鑒賞關(guān)系考核試卷
- 2024年智能農(nóng)業(yè)技術(shù)應(yīng)用研發(fā)投資合同
- 電子商務(wù)平臺商家銷售商品質(zhì)量承諾協(xié)議
- 環(huán)保技術(shù)轉(zhuǎn)讓委托代理協(xié)議
- 高爾夫球場建設(shè)項(xiàng)目承包合同
- 虛擬現(xiàn)實(shí)技術(shù)轉(zhuǎn)讓協(xié)議
- 消防維保服務(wù)方案及實(shí)施細(xì)則
- 保衛(wèi)管理員培訓(xùn)課件
- 香港朗文4B單詞及句子
- 數(shù)據(jù)中心運(yùn)維方案
- 小龍蝦啤酒音樂節(jié)活動策劃方案課件
- 運(yùn)動技能學(xué)習(xí)與控制課件第五章運(yùn)動中的中樞控制
- 財(cái)務(wù)部規(guī)范化管理 流程圖
- 蘇教版2023年小學(xué)四年級數(shù)學(xué)下冊教學(xué)計(jì)劃+教學(xué)進(jìn)度表
- 斷絕關(guān)系協(xié)議書范文參考(5篇)
- 量子力學(xué)課件1-2章-波函數(shù)-定態(tài)薛定諤方程
- 最新變態(tài)心理學(xué)課件
評論
0/150
提交評論