<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

單片機匯編程序編碼規范

作者: 時(shí)間:2013-02-26 來(lái)源:網(wǎng)絡(luò ) 收藏

規則8

在多重循環(huán)中,應將最忙的循環(huán)放在最內層。

規則9

避免循環(huán)體內含判斷語(yǔ)句,將與循環(huán)變量無(wú)關(guān)的判斷語(yǔ)句移到循環(huán)體外。

目的是減少判斷次數。循環(huán)體中的判斷語(yǔ)句是否可以移到循環(huán)體外,要視程序的具體情況而言,一般情況,與循環(huán)變量無(wú)關(guān)的判斷語(yǔ)句可以移到循環(huán)體外,而有關(guān)的則不可以。

規則10

中斷和恢復

中斷程序應該盡量短,應該在中斷中進(jìn)行標記,在主程序中處理。但實(shí)時(shí)性很高的程序段例外。

中斷時(shí)應該保存所有涉及到的通用變量和寄存器,如A, PSW, DPTR等。

規則11

堆棧設置

堆棧對于程序非常重要,對于堆棧的設置要合理。堆棧太小,在嵌套調用和很容易溢出,造成系統故障;堆棧太大,浪費RAM資源。

為了節約堆棧資源,中斷時(shí)要求不要保存太多資源,中斷嵌套和程序嵌套層數不要太多,盡量不要超過(guò)5層。這就要求合理的劃分功能模塊。

規則12

看門(mén)狗

看門(mén)狗電路用于在死機時(shí)自動(dòng)復位。需要定時(shí)向看門(mén)狗發(fā)送脈沖,俗稱(chēng)”喂狗”。喂狗不可太勤,這樣看門(mén)狗沒(méi)有起到作用;也不可太慢,這樣容易造成復位。正確的喂狗應該在主循環(huán)中進(jìn)行,最好是建立一個(gè)獨立的系統監控進(jìn)程。不可以在定時(shí)中斷中喂狗,應為單片機有時(shí)可能會(huì )在主循環(huán)中死掉。

6.接口

規則1

去掉沒(méi)有必要的公共變量,編程時(shí)應盡量少用公共變量。

公共變量是增大模塊間耦合的原因之一,故應減少沒(méi)必要的公共變量以降低模塊間的耦合度。應該構造僅有一個(gè)模塊或函數可以修改、創(chuàng )建,而其余有關(guān)模塊或函數只訪(fǎng)問(wèn)的公共變量,防止多個(gè)不同模塊或函數都可以修改、創(chuàng )建同一公共變量的現象。

規則2

當向公共變量傳遞數據時(shí),要防止越界現象發(fā)生。

對公共變量賦值時(shí),若有必要應進(jìn)行合法性檢查,以提高代碼的可靠性、穩定性。

規則3

盡量不設計多參數函數,將不使用的參數從接口中去掉,降低接口復雜度,減少函數間接口的復雜度。

規則4

對所調用函數的返回碼要仔細、全面地處理。

防止把錯誤傳遞到后面的處理流程。如有意不檢查其返回碼,應明確指明。

規則5

檢查接口函數所有輸入參數的有效性。

規則6

檢查函數的所有非參數輸入,如外部數據、公共變量等。

7.代碼可測性

規則1

模塊編寫(xiě)應該有完善的測試方面的考慮。

規則2

源代碼中應該設計了代碼測試的內容。

在編寫(xiě)代碼之前,應預先設計好程序調試與測試的方法和手段,并設計好各種調測開(kāi)關(guān)及相應測試代碼。

程序的調試與測試是軟件生存周期中很重要的一個(gè)階段,如何對軟件進(jìn)行較全面、高率的測試并盡可能地找出軟件中的錯誤就成為很關(guān)鍵的問(wèn)題。因此在編寫(xiě)源代碼之前,除了要有一套比較完善的測試計劃外,還應設計出一系列代碼測試手段,為單元測試、集成測試及系統聯(lián)調提供方便。

規則3

在同一項目組或產(chǎn)品組內,要有一套統一的為集成測試與系統聯(lián)調準備的調測開(kāi)關(guān)及相應函數,并且要有詳細的說(shuō)明。本規則是針對項目組或產(chǎn)品組的。

規則4

在同一項目組或產(chǎn)品組內,調測打印出的信息串的格式要有統一的形式。信息串中至少要有所在模塊名(或源文件名)及行號。

統一的調測信息格式便于集成測試。

規則5

正式軟件產(chǎn)品中應把調測代碼去掉(即把有關(guān)的調測開(kāi)關(guān)關(guān)掉)。

規則6

用調測開(kāi)關(guān)來(lái)切換軟件的DEBUG版和正式版,而不要同時(shí)存在正式版本和DEBUG版本的不同源文件,以減少維護的難度。

規則7

在軟件系統中設置與取消有關(guān)測試手段,不能對軟件實(shí)現的功能等產(chǎn)生影響。

即有測試代碼的軟件和關(guān)掉測試代碼的軟件,在功能行為上應一致。

規則8

發(fā)現錯誤應該立即修改,并且若有必要記錄下來(lái)。

規則9

開(kāi)發(fā)人員應堅持對代碼進(jìn)行徹底的測試(單元測試),而不依靠他人或測試組來(lái)發(fā)現問(wèn)題。

規則10

清理、整理或優(yōu)化后的代碼要經(jīng)過(guò)審查及測試。

規則11

代碼版本升級要經(jīng)過(guò)嚴格測試。

8.代碼編譯

規則1

打開(kāi)編譯器的所有告警開(kāi)關(guān)對程序進(jìn)行編譯。

防止隱藏可能是錯誤的告警。

規則2

某些語(yǔ)句經(jīng)編譯后產(chǎn)生告警,但如果你認為它是正確的,那么應通過(guò)某種手段去掉告警信息。

ps:從網(wǎng)上收集了一些相關(guān)內容,結合我自己的經(jīng)驗,歡迎拍磚,謝絕辱罵;

ps2:有些可能不常用,因為大家寫(xiě)不到那么長(cháng)的代碼,就我自己寫(xiě)的最長(cháng)的匯編代碼也不超過(guò)10K行;


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 單片機 匯編程序 編碼規范

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>