国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

小容量單片機(jī)系統(tǒng)的C語言程序結(jié)構(gòu)

發(fā)布時間:2010-9-2 09:49    發(fā)布者:techshare
2002年初,筆者著手寫一個IC卡預(yù)付費(fèi)電表的工作程序,該電表使用Philips公司的8位51擴(kuò)展型單片機(jī)87LPC764,要求實(shí)現(xiàn)很多功能,包括熄顯示、負(fù)荷計算與控制、指示閃爍以及電表各種參數(shù)的查詢等,總之,要使用時間的單元很多。筆者當(dāng)時使用ASM51完成了這個程序的編寫,完成后的程序量是2KB多一點(diǎn)。后來,由于種種原因,這個程序并沒有真正使用,只是作了一些改動之后用在一個老化設(shè)備上進(jìn)行計時與負(fù)荷計算。約一年后,筆者又重新改寫了這些代碼。  

1 系統(tǒng)的改進(jìn)  

可以說,這個用ASM51實(shí)現(xiàn)的代碼是沒有什么組織性可言的,要什么功能就加入什么功能,弄得程序的結(jié)構(gòu)非常松散,其實(shí)這也是導(dǎo)致筆者最終決定重新改寫這些代碼的原因。  

大家知道,87LPC764有4KB的Flash ROM,而筆者的程序量只有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ù)類型。


在上面的結(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)確定。同時,定義一組計數(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ù)前置,如下述程序。



則系統(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ù)拆分后,幾乎不占過多的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)性能得到了很大改善。全部編寫完成后,程序代碼量約為3KB多一點(diǎn),可見此種結(jié)構(gòu)的程序構(gòu)造并不會造成很大的系統(tǒng)開銷(大部分開銷是由于使用C的結(jié)果),卻使開發(fā)得到了簡化。這只要將系統(tǒng)細(xì)分為一系列任務(wù),然后加入到任務(wù)棧進(jìn)行編譯即可,很適合小容量單片機(jī)系統(tǒng)的開發(fā),而筆者也在多個系統(tǒng)中成功地應(yīng)用了此種結(jié)構(gòu)。
本文地址:http://www.qingdxww.cn/thread-25210-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 你仿真過嗎?使用免費(fèi)的MPLAB Mindi模擬仿真器降低設(shè)計風(fēng)險
  • 我們是Microchip
  • 利用模擬開發(fā)工具生態(tài)系統(tǒng)進(jìn)行安全電路設(shè)計
  • 更佳設(shè)計的解決方案——Microchip模擬開發(fā)生態(tài)系統(tǒng)
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)在線工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99热视热频这里只有精品 | 亚洲视频h| 欧美高清视频在线观看 | 欧美一级日韩一级亚洲一级 | 久久久久久久久久久久久久久 | 久久久免费精品 | 妈妈的朋友韩国在线播放 | 久久九九有精品国产56 | 亚洲精品影院 | 麻豆高清视频在线观看 | 玖草在线观看 | 久久精品国产精品亚洲综合 | 麻豆按摩 | 成人综合在线视频 | 欧美中文字幕视频 | 成人精品一区二区激情 | 国产精品入口免费麻豆 | 日韩一区二区三区在线免费观看 | 国产一区日韩二区欧美三 | 五月天婷婷丁香中文在线观看 | 美女国产在线观看免费观看 | 欧美成人免费观看的 | 国产毛片在线视频 | 不卡一区在线观看 | 99热这里只有精品6免费 | 1卡2卡三卡4卡免费视频 | 一区三区三区不卡 | 天美麻豆精东果冻天美传媒 | 亚洲区视频在线观看 | 女人特黄大aaaaaa大片 | 好吊色永久免费视频大全 | 这里只有精品久久 | 国产欧美日韩专区 | 欧美va在线视频 | 幸福宝8008app下载章节 | 男女一边摸一边做羞羞视频免费 | 日韩在线视频精品 | 日韩欧美一区二区三区免费看 | 全部免费的毛片在线看美国 | 日本尹人综合香蕉在线观看 | 国产在线观a免费观看 |