新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機匯編程序編碼規范

        單片機匯編程序編碼規范

        作者: 時間:2013-02-26 來源:網絡 收藏

        軟件設計更多地是一種工程,而不是一種個人藝術。如果不統一編程規范,最終寫出的程序,其可讀性將較差,這不僅給代碼的理解帶來障礙,增加維護階段的工作量,同時不規范的代碼隱含錯誤的可能性也比較大。

        分析表明,編碼階段產生的錯誤當中,語法錯誤大概占20%左右,而由于未嚴格檢查軟件邏輯導致的錯誤、函數(模塊)之間接口錯誤及由于代碼可理解度低導致優化維護階段對代碼的錯誤修改引起的錯誤則占了一半以上。

        可見,提高軟件質量必須降低編碼階段的錯誤率。如何有效降低編碼階段的錯誤呢?這需要制定詳細的軟件編程規范,并培訓每一位程序員,最終的結果可以把編碼階段的錯誤降至10%左右,同時也降低了程序的測試費用,效果相當顯著。

        本文從代碼的可維護性(可讀性、可理解性、可修改性)、代碼邏輯與效率、函數(模塊)接口、可測試性四個方面闡述了軟件編程規范,規范分成規則和建議兩種,其中規則部分為強制執行項目,而建議部分則不作強制,可根據習慣取舍。

        1.排版

        規則1

        程序塊使用縮進方式,函數和標號使用空格縮進,程序段混合使用TAB和空格縮進。縮進的目的是使程序結構清晰,便于閱讀和理解。

        默認寬度應為8個空格,由于Word中為4個空格,為示范清晰,此處用2個代替(下同)。

        例如:

        MOV R1, #00H

        MOV R2, #00H

        MOV PMR, #PMRNORMAL

        MOV DPS, #FLAGDPTR

        MOV DPTR, #ADDREEPROM

        read1kloop:

        read1kpage:

        INC R1

        MOVX A, @DPTR

        MOV SBUF, A

        JNB TI, $

        CLR TI

        INC DPTR

        CJNE R1, #20H, read1kpage

        INC R2

        MOV R1, #00H

        CPL WDI

        CJNE R2, #20H, read1kloop ;END OF EEPROM

        規則2

        在指令的操作數之間的,使用空格進行間隔,采用這種松散方式編寫代碼的目的是使代碼更加清晰。

        例如:

        CJNE R2, #20H, read1kloop ;END OF EEPROM

        規則3

        一行最多寫一條語句。

        規則4

        變量定義時,保持對齊。便于閱讀和檢查內存的使用情況。

        例如:

        RegLEDLOSS EQU 30H ; VARIABLE ;

        TESTLED==RegLEDLOSS.0

        RegLEDRA EQU 31H ; VARIABLE

        RUNLED_Flag EQU 32H ; VARIABLE ;

        256ms改變一次RUNLED狀態

        RUNLED_Def EQU 10H ; STATIC ;

        16*32ms=500ms改變一次LED狀態

        2.注釋

        注釋的原則是有助于對程序的閱讀理解,注釋不宜太多也不能太少,太少不利于代碼理解,太多則會對閱讀產生干擾,因此只在必要的地方才加注釋,而且注釋要準確、易懂、盡可能簡潔。注釋量一般控制在30%到50%之間。

        規則1

        程序在必要的地方必須有注釋,注釋要準確、易懂、簡潔。

        例如如下注釋意義不大:

        MOV DXCE1COUNTER, #00H ; 將DXCE1COUNTER賦值為0

        而如下的注釋則給出了額外有用的信息:

        JNZ PcComm_Err ; 假如校驗出錯

        規則2

        注釋應與其描述的代碼相近,對代碼的注釋應放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岱山县| 龙陵县| 玉田县| 平武县| 大同县| 武强县| 临夏市| 永丰县| 馆陶县| 常熟市| 陆川县| 定安县| 福安市| 甘南县| 灵璧县| 博罗县| 宁陵县| 钟祥市| 岳阳县| 鹿邑县| 山东省| 七台河市| 柳河县| 阿荣旗| 阿鲁科尔沁旗| 什邡市| 南汇区| 宜兰市| 绥宁县| 宁武县| 平塘县| 无为县| 新平| 莱西市| 武清区| 宁南县| 游戏| 当涂县| 县级市| 唐河县| 湖北省|