單片機(jī)編程心得體會(huì)_第1頁(yè)
單片機(jī)編程心得體會(huì)_第2頁(yè)
單片機(jī)編程心得體會(huì)_第3頁(yè)
單片機(jī)編程心得體會(huì)_第4頁(yè)
單片機(jī)編程心得體會(huì)_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

單片機(jī)編程心得體會(huì)

1.無(wú)論什么時(shí)候我們都要以實(shí)際應(yīng)用的角度去考慮程序的編寫(xiě)。

2.無(wú)論什么時(shí)候都不要讓CPU白白鋪張等待,尤其是延時(shí)(超過(guò)1MS)這樣的地方。

3.設(shè)計(jì)相應(yīng)驅(qū)動(dòng)電路時(shí)候,應(yīng)當(dāng)認(rèn)真閱讀芯片的數(shù)據(jù)手冊(cè),了解每個(gè)引腳的驅(qū)動(dòng)力量,以及整個(gè)芯片的驅(qū)動(dòng)力量。

4.最重要的是,如何去釋放CPU(假如是led每500ms閃耀一次,那么可以設(shè)置1ms為基準(zhǔn),定時(shí)器定時(shí)1ms后,進(jìn)入相應(yīng)操作使計(jì)數(shù)加1,推斷到達(dá)500時(shí),進(jìn)入led(),這些函數(shù)執(zhí)行的時(shí)間是相當(dāng)短的,假如主程序中還有其他函數(shù),則CPU會(huì)順次往下執(zhí)行,對(duì)于其它函數(shù)(有的話)也要實(shí)行一樣的措施,保證其不堵塞CPU,若全部基于這種方法執(zhí)行,我們的小系統(tǒng)照舊可以保證多個(gè)任務(wù)(多個(gè)函數(shù))同時(shí)進(jìn)展,系統(tǒng)的實(shí)時(shí)性得到了肯定的保證。

),這是寫(xiě)出合格程序的根底。

5.數(shù)碼管顯示,動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一點(diǎn),所以在限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中,動(dòng)態(tài)掃描顯示刷新頻率最好大于50HZ,即每顯示一輪的時(shí)間不超過(guò)20ms,每個(gè)數(shù)碼管顯示的時(shí)間不能太長(zhǎng)也不能太短,時(shí)間太長(zhǎng)會(huì)影響刷新率,導(dǎo)致總體顯示呈現(xiàn)閃耀的現(xiàn)象,時(shí)間太短發(fā)光二級(jí)管的電流導(dǎo)通時(shí)間也就短,會(huì)影響總體的顯示亮度,一般掌握在1ms左右最正確。

6.模塊化編程,初學(xué)單片機(jī)的時(shí)候(開(kāi)頭是C語(yǔ)言),是接觸一些芯片實(shí)現(xiàn)獨(dú)立的功能,如DS1302,DS18B20等,程序也不會(huì)很大,所以全部的程序都放在一個(gè)文件里面。

隨著學(xué)習(xí)的逐步深入,程序也愈來(lái)愈大,這給調(diào)試帶來(lái)了肯定的困難,后來(lái)了解了模塊化編程這個(gè)概念,運(yùn)用之后大大地改善了程序的可讀性和可移植性。

下面簡(jiǎn)潔的介紹

C語(yǔ)言源文件*.c略微比擬大的設(shè)計(jì)都會(huì)涉及到眾多模塊,我們可以被各自獨(dú)立的模塊封裝到不同的*.c源文件中,該文件中定義模塊函數(shù),申明局部一般不放入

C語(yǔ)言頭文件*.h把各個(gè)模塊的的申明文件(說(shuō)模塊的接口比擬適宜),放在相應(yīng)的.*.h頭文件中,相應(yīng)的模塊對(duì)應(yīng)相應(yīng)的.h頭文件.形如

#ifndef__DS1302_H__

#define__DS1302_H__

/*模塊ds1302.c文件中函數(shù)等的申明文件*/

#endif

//上面幾個(gè)條件編譯和宏定義是為了防止重復(fù)包含

這樣我們就把各個(gè)模塊的接口函數(shù)都引出到各自的頭文件中,然后在主程序中調(diào)用這些模塊的*.h頭文件即可。

這點(diǎn)和C++中的類很像。

在數(shù)據(jù)類型定義的時(shí)候,有時(shí)候用typedef會(huì)取得很好的效果。

說(shuō)到模塊化編程,以前曾看過(guò)不少大蝦的例子,他們的源文件和輸出下載文件是放在工程文件夾下地不同文件夾中,如源文件放在src文件夾中,輸出*.hex放在output文件夾中,這樣整個(gè)工程就更顯得清楚明白。

7.多任務(wù)程序,這個(gè)概念在前面也有提到,就是充分地利用CPU來(lái)實(shí)現(xiàn)多任務(wù)的前后臺(tái)操作,相當(dāng)于自己用程序構(gòu)造一個(gè)基于前后臺(tái)的多任務(wù)操作系統(tǒng),換句話說(shuō)就是通過(guò)定時(shí)器中斷合理地安排CPU資源來(lái)響應(yīng)不同的任務(wù)。

多個(gè)任務(wù)需要CPU照顧的頻度不一樣,我們選擇最快的那個(gè)頻度來(lái)作為定時(shí)器的節(jié)拍(通常為最小公倍數(shù),這樣便利定時(shí)器安排),然后通過(guò)定時(shí)器分頻,即滿意各個(gè)任務(wù)的響應(yīng)節(jié)拍。

比方任務(wù)A頻度為50HZ,任務(wù)B為40HZ,這樣我們就可以去定時(shí)器中斷節(jié)拍為200HZ,每個(gè)任務(wù)設(shè)定一個(gè)節(jié)拍掌握計(jì)數(shù)器C,當(dāng)C計(jì)數(shù)4次時(shí),任務(wù)切換到A,計(jì)數(shù)到5次切換B

voidTime

...

單片機(jī)編程心得體會(huì)(二)

以下是筆者在C51編程過(guò)程中的一點(diǎn)心得體會(huì)。

1.盡量使用短的數(shù)據(jù)類型。

如uchar、bit、uint,有時(shí)需要對(duì)uchar數(shù)據(jù)類型進(jìn)展按位訪問(wèn),可將其定義在bdam區(qū)間。

慎重使用float數(shù)據(jù)類型,有時(shí)它可以轉(zhuǎn)化成int數(shù)據(jù)類型來(lái)代用。

2.嫻熟指針的使用。

例如Uint是由雙字節(jié)拼接而成,有時(shí)用來(lái)存放16位地址。

獵取其高八位和低八位地址的方法為:只要用uchar*p;p=int0,則*p表示其高八位,*(++p)表示其低八位,特別便利。

3.使用自加、自減的方法為:a++;a-,它會(huì)調(diào)用INC、DEC指令,效率遠(yuǎn)比a=a+1;a=a-l高。

4.循環(huán):使用uchar。

a;for(a=1;a:8;a++)時(shí),條件a=8編譯后代碼比擬繁瑣,一可用for(a=8;a;a~)來(lái)代替,充分利用單片機(jī)的為零跳轉(zhuǎn)指令。

同樣,在do{}while()中也適用。

5.當(dāng)多個(gè)條件判別時(shí),if(ABCD),只要第一個(gè)條件A不符合,程序是不管后面的條件的,所以可把最可能出錯(cuò)的條件排在前面處理。

6.子程序的參量。

調(diào)用子程序時(shí)若帶參量,程序會(huì)開(kāi)拓存儲(chǔ)空間(如Rn)來(lái)存放參量,這個(gè)空間是可以充分利用的。

如延時(shí)子程序voiddelay(uehartime){while(time一);J,可以延時(shí)相當(dāng)短的時(shí)間。

7.空指令NOP在C中用_nop一0實(shí)現(xiàn),定義在中。

8.求余運(yùn)算“%”操作是調(diào)用子程序來(lái)完成的,效率低。

假如是求2的n次方的余數(shù),可使用位操作來(lái)代替。

如:a=a%8可改用8=a7,效率明顯提高。

同樣2xN的乘除運(yùn)算可用移位來(lái)實(shí)現(xiàn)。

如:a=a*2;b=h/2可改為a=a《l;b=b》l。

9.使用構(gòu)造體類型數(shù)組時(shí),在查找第n個(gè)值時(shí)要利用乘法指令(序號(hào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論