精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
8051單片機(jī)匯編程序編碼規(guī)范
8051單片機(jī)匯編程序編碼規(guī)范
 更新時(shí)間:2008-7-26 19:41:11  點(diǎn)擊數(shù):3
【字體: 字體顏色
引言
軟件設(shè)計(jì)更多地是一種工程,而不是一種個(gè)人藝術(shù)。如果不統(tǒng)一編程規(guī)范,最終寫出的程序,其可讀性將較差,這不僅給代碼的理解帶來障礙,增加維護(hù)階段的工作量,同時(shí)不規(guī)范的代碼隱含錯(cuò)誤的可能性也比較大。
分析表明,編碼階段產(chǎn)生的錯(cuò)誤當(dāng)中,語法錯(cuò)誤大概占20%左右,而由于未嚴(yán)格檢查軟件邏輯導(dǎo)致的錯(cuò)誤、函數(shù)(模塊)之間接口錯(cuò)誤及由于代碼可理解度低導(dǎo)致優(yōu)化維護(hù)階段對代碼的錯(cuò)誤修改引起的錯(cuò)誤則占了一半以上。
可見,提高軟件質(zhì)量必須降低編碼階段的錯(cuò)誤率。如何有效降低編碼階段的錯(cuò)誤呢?這需要制定詳細(xì)的軟件編程規(guī)范,并培訓(xùn)每一位程序員,最終的結(jié)果可以把編碼階段的錯(cuò)誤降至10%左右,同時(shí)也降低了程序的測試費(fèi)用,效果相當(dāng)顯著。
本文從代碼的可維護(hù)性(可讀性、可理解性、可修改性)、代碼邏輯與效率、函數(shù)(模塊)接口、可測試性四個(gè)方面闡述了軟件編程規(guī)范,規(guī)范分成規(guī)則和建議兩種,其中規(guī)則部分為強(qiáng)制執(zhí)行項(xiàng)目,而建議部分則不作強(qiáng)制,可根據(jù)習(xí)慣取舍。

1.排版
規(guī)則1
程序塊使用縮進(jìn)方式,函數(shù)和標(biāo)號使用空格縮進(jìn),程序段混合使用TAB和空格縮進(jìn)。縮進(jìn)的目的是使程序結(jié)構(gòu)清晰,便于閱讀和理解。
<TAB>默認(rèn)寬度應(yīng)為8個(gè)空格,由于Word中<TAB>為4個(gè)空格,為示范清晰,此處用2個(gè)<TAB>代替(下同)。
例如:
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

規(guī)則2
在指令的操作數(shù)之間的,使用空格進(jìn)行間隔,采用這種松散方式編寫代碼的目的是使代碼更加清晰。
例如:
CJNE R2, #20H, read1kloop ;END OF EEPROM

規(guī)則3
一行最多寫一條語句。

規(guī)則4
變量定義時(shí),保持對齊。便于閱讀和檢查內(nèi)存的使用情況。
例如:
RegLEDLOSS EQU 30H ; VARIABLE ; TESTLED==RegLEDLOSS.0
RegLEDRA EQU 31H ; VARIABLE
RUNLED_Flag EQU 32H ; VARIABLE ; 256ms改變一次RUNLED狀態(tài)
RUNLED_Def EQU 10H ; STATIC ; 16*32ms=500ms改變一次LED狀態(tài)


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

規(guī)則1
程序在必要的地方必須有注釋,注釋要準(zhǔn)確、易懂、簡潔。
例如如下注釋意義不大:
MOV DXCE1COUNTER, #00H ; 將DXCE1COUNTER賦值為0
而如下的注釋則給出了額外有用的信息:
JNZ PcComm_Err ; 假如校驗(yàn)出錯(cuò)

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

規(guī)則3
頭文件、源文件的頭部,應(yīng)進(jìn)行注釋。注釋必須列出:文件名、作者、目的、功能、修改日志等。

規(guī)則4
函數(shù)頭部應(yīng)進(jìn)行注釋,列出:函數(shù)的目的、功能、輸入?yún)?shù)、輸出參數(shù)、涉及到的通用變量和寄存器、調(diào)用的其他函數(shù)和模塊、修改日志等。對一些復(fù)雜的函數(shù),在注釋中最好提供典型用法。

規(guī)則5
對重要代碼段的功能、意圖進(jìn)行注釋,提供有用的、額外的信息。并在該代碼段的結(jié)束處加一行注釋表示該段代碼結(jié)束。

規(guī)則6
對于所有的常量,變量,數(shù)據(jù)結(jié)構(gòu)聲明(包括數(shù)組、結(jié)構(gòu)、類、枚舉等),如果其命名不是充分自注釋的,在聲明時(shí)都必須加以注釋,說明其含義。

規(guī)則 7
維護(hù)代碼時(shí),要更新相應(yīng)的注釋,刪除不再有用的注釋。保持代碼、注釋的一致性,避免產(chǎn)生誤解。


3.命名
規(guī)則 1
標(biāo)識符縮寫
形成縮寫的幾種技術(shù):
1) 去掉所有的不在詞頭的元音字母。如screen寫成scrn, primtive寫成prmv。
2) 使用每個(gè)單詞的頭一個(gè)或幾個(gè)字母。如Channel Activation寫成ChanActiv,Release Indication寫成RelInd。
3) 使用變量名中每個(gè)有典型意義的單詞。如Count of Failure寫成FailCnt。
4) 去掉無用的單詞后綴 ing, ed等。如Paging Request寫成PagReq。
5) 使用標(biāo)準(zhǔn)的或慣用的縮寫形式(包括協(xié)議文件中出現(xiàn)的縮寫形式)。如BSIC(Base Station Identification Code)、MAP(Mobile Application Part)。
關(guān)于縮寫的準(zhǔn)則:
1) 縮寫應(yīng)該保持一致性。如Channel不要有時(shí)縮寫成Chan,有時(shí)縮寫成Ch。Length有時(shí)縮寫成Len,有時(shí)縮寫成len。
2) 在源代碼頭部加入注解來說明協(xié)議相關(guān)的、非通用縮寫。
3) 標(biāo)識符的長度不超過12個(gè)字符。

規(guī)則2
變量命名約定:<前綴> + 主體 ; 注釋
變量命名要考慮簡單、直觀、不易混淆。
前綴是可選項(xiàng),表示變量類型,由于匯編中變量多是單字節(jié)變量,所以單字節(jié)變量可以不加前綴,對于bit和雙字節(jié)型變量,使用小寫的b和d作為前綴表示。
主體是必選項(xiàng),可多個(gè)單詞(或縮寫)合在一起,每個(gè)單詞首字母大寫,其余部分小寫。

規(guī)則3
常量的命名
常量的命名規(guī)則:單詞的字母全部大寫,各單詞之間用下劃線隔開。

規(guī)則4
函數(shù)的命名
單詞首字母為大寫,其余均為小寫。函數(shù)名應(yīng)以一個(gè)動(dòng)詞開頭,即函數(shù)名應(yīng)類似一個(gè)動(dòng)詞斷語或祈使句。
例如:Test_Protect, Check_EEPROM, Init_Para


4.可維護(hù)性
規(guī)則1
函數(shù)和過程中關(guān)系較為緊密的代碼盡可能相鄰。

規(guī)則2
每個(gè)函數(shù)的源程序行數(shù)原則上應(yīng)該少于200行。
對于消息分流處理函數(shù),完成的功能統(tǒng)一,但由于消息的種類多,可能超過200行的限制,不屬于違反規(guī)定。

規(guī)則3
語句嵌套層次不得超過5層。
嵌套層次太多,增加了代碼的復(fù)雜度及測試的難度,容易出錯(cuò),增加代碼維護(hù)的難度。

規(guī)則4
避免相同的代碼段在多個(gè)地方出現(xiàn)。
當(dāng)某段代碼需在不同的地方重復(fù)使用時(shí),應(yīng)根據(jù)代碼段的規(guī)模大小使用函數(shù)調(diào)用或宏調(diào)用的方式代替。這樣,對該代碼段的修改就可在一處完成,增強(qiáng)代碼的可維護(hù)性。

規(guī)則5
每個(gè)函數(shù)完成單一的功能,不設(shè)計(jì)多用途面面俱到的函數(shù)。
多功能集于一身的函數(shù),很可能使函數(shù)的理解、測試、維護(hù)等變得困難。使函數(shù)功能明確化,增加程序可讀性,亦可方便維護(hù)、測試。

規(guī)則6
在函數(shù)的項(xiàng)目維護(hù)文檔中,應(yīng)該指出軟件適用的硬件平臺(tái)及版本。


建議1
使用專門的初始化函數(shù)對所有的公共變量進(jìn)行初始化。


5.程序正確性、效率
規(guī)則1
嚴(yán)禁使用未經(jīng)初始化的變量。
引用未經(jīng)初始化的變量可能會(huì)產(chǎn)生不可預(yù)知的后果,特別是引用未經(jīng)初始化的指針經(jīng)常會(huì)導(dǎo)致系統(tǒng)崩潰,需特別注意。

規(guī)則2
防止內(nèi)存操作越界。
說明:內(nèi)存操作越界是軟件系統(tǒng)主要錯(cuò)誤之一,后果往往非常嚴(yán)重。

規(guī)則3
注意變量的有效取值范圍,防止表達(dá)式出現(xiàn)上溢或下溢。

規(guī)則4
防止易混淆的指令和操作數(shù)拼寫錯(cuò)誤。

規(guī)則5
避免函數(shù)中不必要語句,防止程序中的垃圾代碼,預(yù)留代碼應(yīng)以注釋的方式出現(xiàn)。
程序中的垃圾代碼不僅占用額外的空間,而且還常常影響程序的功能與性能,很可能給程序的測試、維護(hù)等造成不必要的麻煩。

規(guī)則6
通過對系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的劃分與組織的改進(jìn),以及對程序算法的優(yōu)化來提高空間效率。
這種方式是解決軟件空間效率的根本辦法。

規(guī)則7
循環(huán)體內(nèi)工作量最小化。
12下一頁  GO
  • 上一篇: 51芯片的基本常識
  • 下一篇: 51單片機(jī)蜂鳴器唱祝你平安歌
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    惠东县| 陕西省| 申扎县| 尼勒克县| 岚皋县| 旌德县| 栾川县| 兴和县| 平果县| 西乌珠穆沁旗| 郯城县| 新竹市| 苍南县| 万源市| 黔南| 洛阳市| 历史| 牡丹江市| 石嘴山市| 仪征市| 清远市| 南郑县| 昭苏县| 和平区| 阜新市| 东安县| 秦皇岛市| 大田县| 邵阳县| 邹城市| 广河县| 南丹县| 仁寿县| 广元市| 洛川县| 西畴县| 湘乡市| 枣强县| 班玛县| 德昌县| 桦甸市|