新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)開發(fā)原則

51單片機(jī)開發(fā)原則

作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
1.盡可能讓變量使用占用代碼空間最小的變量類型。例如無符號字符型和位操作(8051作為一款8位處理器提供了位操作支持,而且大多數(shù)操作指令都是8位或者位操作的通常用小的數(shù)據(jù)類型去編寫代碼其效率更高)

2.盡可能使用無符號類型數(shù)據(jù)(8051單片機(jī)不直接支持有符號的數(shù)據(jù)類型,有符號的操作需要額外的指令來支持,但是無符號的數(shù)據(jù)類型是直接就能被8051支持的)

本文引用地址:http://m.butianyuan.cn/article/201612/324111.htm

3.盡可能選擇小的存儲模式即small(絕大多數(shù)的應(yīng)用采用small存儲模式都能滿足,也可以選擇large存儲模式,將一些數(shù)組和結(jié)構(gòu)體存入xdata或者pdata存儲空間的話選擇極大存儲模式,注意的是keilc51實時庫使用的基本指針可以工作在任何存儲模式)

4.當(dāng)應(yīng)用其他存儲模式的時候盡可能將變量存儲在data區(qū)域內(nèi)(將變量存儲在data空間里,這部分空間單片機(jī)可以直接訪問,據(jù)有最高的執(zhí)行效率,通常這個區(qū)域存儲的是最有效率的代碼)本地圖片,請重新上傳

5.要知道如何在你的設(shè)備上使用PDATA存儲模式(pdata提供的256字節(jié)的空間,使用MOVX @Ri指令訪問8位地址,pdata存儲空間的使用不同于8051單片機(jī)內(nèi)部的設(shè)備,需要設(shè)置頁寄存器。Xdata 存儲類型是通用的能達(dá)到的最大的存儲空間64kb)

6.盡可能使用內(nèi)存類型的指針(默認(rèn)的,keil c51編譯器使用通用指針可以訪問任何類型的內(nèi)存空間,內(nèi)存型的指針只能訪問固定的存儲空間,但是這種方式能夠產(chǎn)生更快更小的程序代碼)

7.減少使用重入函數(shù)(8051系列缺乏對堆棧變量的支持,重入函數(shù)的實現(xiàn)通過keilc51編譯器使用一個編譯時間的堆棧對內(nèi)存范圍內(nèi)的數(shù)據(jù)內(nèi)容的覆蓋實現(xiàn)的,重入函數(shù)在8051單片機(jī)上模擬出堆棧的結(jié)構(gòu)。由于在嵌入式應(yīng)用很少會用到重入函數(shù)代碼,但是你在設(shè)計的過程中應(yīng)盡可能的少用這種重入屬性)

8.使用LX51 Linker/Locate 和Linker code packing來減少程序的體積。(LX51 Linker/Locate分析并且優(yōu)化你的整個程序。代碼將會在內(nèi)存中重新排列,最大限度的使用2字節(jié)的AJMP和ACALL指令來代替3字節(jié)的LJMP和LCALL指令。Linker code packing利用通用代碼段生成子程序)

9.盡量保持短的中斷函數(shù)(結(jié)構(gòu)好的的中斷函數(shù)僅僅是執(zhí)行數(shù)據(jù)的獲取或者是計時,數(shù)據(jù)的處理是在主函數(shù)或者實時系統(tǒng)的任務(wù)函數(shù)中完成,這樣可以有效的降低涉及保存/存儲的中斷函數(shù)的調(diào)用)

10.檢查對于時鐘周期的需求(代碼訪問數(shù)據(jù)需要一定的周期,尤其是在實時系統(tǒng)中使用多個線程或者中斷服務(wù)程序中需要在主函數(shù)中)



關(guān)鍵詞: 51單片機(jī)開發(fā)原

評論


技術(shù)專區(qū)

關(guān)閉