51單片機(jī)開發(fā)原則
2.盡可能使用無(wú)符號(hào)類型數(shù)據(jù)(8051單片機(jī)不直接支持有符號(hào)的數(shù)據(jù)類型,有符號(hào)的操作需要額外的指令來(lái)支持,但是無(wú)符號(hào)的數(shù)據(jù)類型是直接就能被8051支持的)
本文引用地址:http://m.butianyuan.cn/article/201612/324111.htm3.盡可能選擇小的存儲(chǔ)模式即small(絕大多數(shù)的應(yīng)用采用small存儲(chǔ)模式都能滿足,也可以選擇large存儲(chǔ)模式,將一些數(shù)組和結(jié)構(gòu)體存入xdata或者pdata存儲(chǔ)空間的話選擇極大存儲(chǔ)模式,注意的是keilc51實(shí)時(shí)庫(kù)使用的基本指針可以工作在任何存儲(chǔ)模式)
4.當(dāng)應(yīng)用其他存儲(chǔ)模式的時(shí)候盡可能將變量存儲(chǔ)在data區(qū)域內(nèi)(將變量存儲(chǔ)在data空間里,這部分空間單片機(jī)可以直接訪問(wèn),據(jù)有最高的執(zhí)行效率,通常這個(gè)區(qū)域存儲(chǔ)的是最有效率的代碼)本地圖片,請(qǐng)重新上傳
5.要知道如何在你的設(shè)備上使用PDATA存儲(chǔ)模式(pdata提供的256字節(jié)的空間,使用MOVX @Ri指令訪問(wèn)8位地址,pdata存儲(chǔ)空間的使用不同于8051單片機(jī)內(nèi)部的設(shè)備,需要設(shè)置頁(yè)寄存器。Xdata 存儲(chǔ)類型是通用的能達(dá)到的最大的存儲(chǔ)空間64kb)
6.盡可能使用內(nèi)存類型的指針(默認(rèn)的,keil c51編譯器使用通用指針可以訪問(wèn)任何類型的內(nèi)存空間,內(nèi)存型的指針只能訪問(wèn)固定的存儲(chǔ)空間,但是這種方式能夠產(chǎn)生更快更小的程序代碼)
7.減少使用重入函數(shù)(8051系列缺乏對(duì)堆棧變量的支持,重入函數(shù)的實(shí)現(xiàn)通過(guò)keilc51編譯器使用一個(gè)編譯時(shí)間的堆棧對(duì)內(nèi)存范圍內(nèi)的數(shù)據(jù)內(nèi)容的覆蓋實(shí)現(xiàn)的,重入函數(shù)在8051單片機(jī)上模擬出堆棧的結(jié)構(gòu)。由于在嵌入式應(yīng)用很少會(huì)用到重入函數(shù)代碼,但是你在設(shè)計(jì)的過(guò)程中應(yīng)盡可能的少用這種重入屬性)
8.使用LX51 Linker/Locate 和Linker code packing來(lái)減少程序的體積。(LX51 Linker/Locate分析并且優(yōu)化你的整個(gè)程序。代碼將會(huì)在內(nèi)存中重新排列,最大限度的使用2字節(jié)的AJMP和ACALL指令來(lái)代替3字節(jié)的LJMP和LCALL指令。Linker code packing利用通用代碼段生成子程序)
9.盡量保持短的中斷函數(shù)(結(jié)構(gòu)好的的中斷函數(shù)僅僅是執(zhí)行數(shù)據(jù)的獲取或者是計(jì)時(shí),數(shù)據(jù)的處理是在主函數(shù)或者實(shí)時(shí)系統(tǒng)的任務(wù)函數(shù)中完成,這樣可以有效的降低涉及保存/存儲(chǔ)的中斷函數(shù)的調(diào)用)
10.檢查對(duì)于時(shí)鐘周期的需求(代碼訪問(wèn)數(shù)據(jù)需要一定的周期,尤其是在實(shí)時(shí)系統(tǒng)中使用多個(gè)線程或者中斷服務(wù)程序中需要在主函數(shù)中)
評(píng)論