新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/201612/324111.htm

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

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

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

        6.盡可能使用內(nèi)存類型的指針(默認的,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單片機上模擬出堆棧的結(jié)構(gòu)。由于在嵌入式應用很少會用到重入函數(shù)代碼,但是你在設(shè)計的過程中應盡可能的少用這種重入屬性)

        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單片機開發(fā)原

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 临猗县| 绥江县| 虎林市| 绥芬河市| 灵山县| 庆元县| 万盛区| 永靖县| 扎鲁特旗| 万宁市| 沙湾县| 容城县| 屏南县| 龙岩市| 枣庄市| 柳江县| 湛江市| 宝丰县| 胶州市| 岳池县| 桂东县| 光泽县| 时尚| 通辽市| 太谷县| 红原县| 济宁市| 安平县| 新化县| 伊金霍洛旗| 游戏| 广德县| 高雄县| 卢氏县| 基隆市| 右玉县| 夏邑县| 防城港市| 黔西| 新竹市| 西和县|