- 相關(guān)推薦
在單片機C語言編程中的心得體會
在單片機C語言編程中的心得體會在單片機C語言編程中的心得體會
作者:彭樹林
在單片機C語言編程中使用恰當(dāng)?shù)膬?yōu)化手段,可以寫出簡潔高效的代碼。以下是筆者在C51編程過程中的一點心得體會。
1.盡量使用短的數(shù)據(jù)類型。如uchar、bit、uint,有時需要對uchar數(shù)據(jù)類型進(jìn)行按位訪問,可將其定義在bdam區(qū)間。慎重使用float數(shù)據(jù)類型,有時它可以轉(zhuǎn)化成int數(shù)據(jù)類型來代用。
2.熟練指針的使用。例如Uint是由雙字節(jié)拼接而成,有時用來存放16位地址。獲取其高八位和低八位地址的方法為:只要用uchar*p;p=&int0,則*p表示其高八位,*(++p)表示其低八位,非常方便。
3.使用自加、自減的方法為:a++;a-,它會調(diào)用INC、DEC指令,效率遠(yuǎn)比a=a+1;a=a-1高。
4.循環(huán):使用uchar a;for(a=1;a≤8;a++)…時,條件a=8編譯后代碼比較繁瑣,可用for(a=8;a=a-1)…來代替,充分利用單片機的為零跳轉(zhuǎn)指令。同樣,在do{…}while()中也適用。
5.當(dāng)多個條件判別時,if(A&&B&&C&&D),只要第一個條件A不符合,程序是不管后面的條件的,所以可把最可能出錯的條件排在前面處理。
6.子程序的參量。調(diào)用子程序時若帶參量,程序會開辟存儲空間(如Rn)來存放參量,這個空間是可以充分利用的。如延時子程序void delay(uehar time){while(time一);J,可以延時相當(dāng)短的時間。
7.空指令NOP在C中用_nop一0實現(xiàn),定義在中。
8.求余運算"%"操作是調(diào)用子程序來完成的,效率低。如果是求2的n次方的余數(shù),可使用位操作來代替。如:a=a%8可改用8=a&7,效率明顯提高。同樣2xN的乘除運算可用移位來實現(xiàn)。如:a=a*2;b=h/2可改為a=a《1;b=b》1。
9.使用結(jié)構(gòu)體類型數(shù)組時,在查找第n個值時要利用乘法指令(序號乘以類型寬度),當(dāng)程序高速運行時,可能會影響其速度。
10.Keil的軟件調(diào)試非常有用。筆者常將編譯后的程序與C源程序?qū)φ,查看匯編代碼、檢查不恰當(dāng)之處。有時還可用來計算子程序執(zhí)行時間(在確定精確延時程序參數(shù)時非常有用)。
【在單片機C語言編程中的心得體會】相關(guān)文章:
c語言心得體會04-30
c語言心得04-24
c語言的心得體會(精選11篇)11-02
c語言實習(xí)心得體會03-28
心得體會 c語言心得總結(jié)03-30
C語言實習(xí)的心得體會04-26
c語言的學(xué)習(xí)心得體會02-01
C語言實訓(xùn)心得體會05-24
C語言課程教案04-24
C語言學(xué)習(xí)心得體會03-21