1.盡可能讓變量使用占用代碼空間最小的變量類型。例如無符號字符型和位操作(8051作為一款8位處理器提供了位操作支持,而且大多數操作指令都是8位或者位操作的通常用小的數據類型去編寫代碼其效率更高)
2.盡可能使用無符號類型數據(8051單片機不直接支持有符號的數據類型,有符號的操作需要額外的指令來支持,但是無符號的數據類型是直接就能被8051支持的)
3.盡可能選擇小的存儲模式即small(絕大多數的應用采用small存儲模式都能滿足,也可以選擇large存儲模式,將一些數組和結構體存入xdata或者pdata存儲空間的話選擇極大存儲模式,注意的是keil c51實時庫使用的基本指針可以工作在任何存儲模式)
4.當應用其他存儲模式的時候盡可能將變量存儲在data區域內(將變量存儲在data空間里,這部分空間單片機可以直接訪問,據有最高的執行效率,通常這個區域存儲的是最有效率的代碼)本地圖片,請重新上傳
5.要知道如何在你的設備上使用PDATA存儲模式(pdata提供的256字節的空間,使用MOVX @Ri指令訪問8位地址,pdata存儲空間的使用不同于8051單片機內部的設備,需要設置頁寄存器。Xdata 存儲類型是通用的能達到的最大的存儲空間64kb)
6.盡可能使用內存類型的指針(默認的,keil c51編譯器使用通用指針可以訪問任何類型的內存空間,內存型的指針只能訪問固定的存儲空間,但是這種方式能夠產生更快更小的程序代碼)
7.減少使用重入函數(8051系列缺乏對堆棧變量的支持,重入函數的實現通過keil c51 編譯器使用一個編譯時間的堆棧對內存范圍內的數據內容的覆蓋實現的,重入函數在8051單片機上模擬出堆棧的結構。由于在嵌入式應用很少會用到重入函數代碼,但是你在設計的過程中應盡可能的少用這種重入屬性)
8.使用LX51 Linker/Locate 和Linker code packing來減少程序的體積。(LX51 Linker/Locate分析并且優化你的整個程序。代碼將會在內存中重新排列,最大限度的使用2字節的AJMP和ACALL指令來代替3字節的LJMP和LCALL指令。Linker code packing利用通用代碼段生成子程序)
9.盡量保持短的中斷函數(結構好的的中斷函數僅僅是執行數據的獲取或者是計時,數據的處理是在主函數或者實時系統的任務函數中完成,這樣可以有效的降低涉及保存/存儲的中斷函數的調用)
10.檢查對于時鐘周期的需求(代碼訪問數據需要一定的周期,尤其是在實時系統中使用多個線程或者中斷服務程序中需要在主函數中)