<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 小容量單片機(jī)系統(tǒng)的C語(yǔ)言程序結(jié)構(gòu)

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

          作者: 時(shí)間:2016-10-15 來(lái)源:網(wǎng)絡(luò) 收藏

          引 言:   2002年初,筆者著手寫(xiě)一個(gè)IC卡預(yù)付費(fèi)電表的工作程序,該電表使用Philips公司的8位51擴(kuò)展型單片機(jī)87LPC764,要求實(shí)現(xiàn)很多功能,包括熄顯示、負(fù)荷計(jì)算與控制、指示閃爍以及電表各種參數(shù)的查詢(xún)等,總之,要使用時(shí)間的單元很多。筆者當(dāng)時(shí)使用ASM51完成了這個(gè)程序的編寫(xiě),完成后的程序量是2KB多一點(diǎn)。后來(lái),由于種種原因,這個(gè)程序并沒(méi)有真正使用,只是作了一些改動(dòng)之后用在一個(gè)老化設(shè)備上進(jìn)行計(jì)時(shí)與負(fù)荷計(jì)算。約一年后,筆者又重新改寫(xiě)了這些代碼。 1 系統(tǒng)的改進(jìn)   可以說(shuō),這個(gè)用ASM51實(shí)現(xiàn)的代碼是沒(méi)有什么組織性可言的,要什么功能就加入什么功能,弄得程序的結(jié)構(gòu)非常松散,其實(shí)這也是導(dǎo)致筆者最終決定重新改寫(xiě)這些代碼的原因。   大家知道,87LPC764有4KB的Flash ROM,而筆者的程序量只有2KB多點(diǎn),因而第一個(gè)想法是改用作為主要的開(kāi)發(fā)語(yǔ)言,應(yīng)該不至于導(dǎo)致代碼空間不夠用。其次,考慮到需要定時(shí)功能的模塊 (或稱(chēng)任務(wù),以下統(tǒng)稱(chēng)任務(wù))較多,有必要對(duì)這些任務(wù)進(jìn)行有序的管理。筆者考慮使用時(shí)間片輪詢(xún)方式,即給每個(gè)要求時(shí)間管理的任務(wù)以一個(gè)時(shí)間間隔,時(shí)間間隔一到,即運(yùn)行其代碼,達(dá)到合理使用系統(tǒng)定時(shí)器資源的目的。就51系統(tǒng)而言,一般至少一個(gè)定時(shí)器可用來(lái)進(jìn)行時(shí)間片的輪詢(xún)?;谝陨系南敕?,構(gòu)造了下述數(shù)據(jù)類(lèi)型。 typedef unsigned char uInt8 typedef struct { void (*proc)(void); //處理程序 uInt8 ms_count; //時(shí)間片大小 } _op_; 數(shù)據(jù)結(jié)構(gòu)定義好之后,接著就是實(shí)現(xiàn)代碼,包括三部分,即初始化數(shù)據(jù)、時(shí)間片的刷新與時(shí)間到執(zhí)行。初始化數(shù)據(jù)。 #define proc_cnt 0x08 //定義過(guò)程或任務(wù)數(shù)量 //任務(wù)棧初始化 code _op_ Op[proc_cnt]={{ic_check,10},{disp_loop,100}, {calc_power,150},{set_led,2},… }; //設(shè)置時(shí)間片初始值 data uInt8 time_val[proc_cnt]={10,100,150,2,…}; 時(shí)間片刷新。 void time_int1(void) interrupt 3 { uInt8 cnt; Time_Counter:=Time_Unit; for(cnt=0;cnt

          本文引用地址:http://www.ex-cimer.com/article/201610/307525.htm


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();