新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)匯編程序編碼規(guī)范

        單片機(jī)匯編程序編碼規(guī)范

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

        規(guī)則8

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

        規(guī)則9

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

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

        規(guī)則10

        中斷和恢復(fù)

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

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

        規(guī)則11

        堆棧設(shè)置

        堆棧對(duì)于程序非常重要,對(duì)于堆棧的設(shè)置要合理。堆棧太小,在嵌套調(diào)用和很容易溢出,造成系統(tǒng)故障;堆棧太大,浪費(fèi)RAM資源。

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

        規(guī)則12

        看門狗

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

        6.接口

        規(guī)則1

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

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

        規(guī)則2

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

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

        規(guī)則3

        盡量不設(shè)計(jì)多參數(shù)函數(shù),將不使用的參數(shù)從接口中去掉,降低接口復(fù)雜度,減少函數(shù)間接口的復(fù)雜度。

        規(guī)則4

        對(duì)所調(diào)用函數(shù)的返回碼要仔細(xì)、全面地處理。

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

        規(guī)則5

        檢查接口函數(shù)所有輸入?yún)?shù)的有效性。

        規(guī)則6

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

        7.代碼可測(cè)性

        規(guī)則1

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

        規(guī)則2

        源代碼中應(yīng)該設(shè)計(jì)了代碼測(cè)試的內(nèi)容。

        在編寫(xiě)代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測(cè)試的方法和手段,并設(shè)計(jì)好各種調(diào)測(cè)開(kāi)關(guān)及相應(yīng)測(cè)試代碼。

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

        規(guī)則3

        在同一項(xiàng)目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測(cè)試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測(cè)開(kāi)關(guān)及相應(yīng)函數(shù),并且要有詳細(xì)的說(shuō)明。本規(guī)則是針對(duì)項(xiàng)目組或產(chǎn)品組的。

        規(guī)則4

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

        統(tǒng)一的調(diào)測(cè)信息格式便于集成測(cè)試。

        規(guī)則5

        正式軟件產(chǎn)品中應(yīng)把調(diào)測(cè)代碼去掉(即把有關(guān)的調(diào)測(cè)開(kāi)關(guān)關(guān)掉)。

        規(guī)則6

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

        規(guī)則7

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

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

        規(guī)則8

        發(fā)現(xiàn)錯(cuò)誤應(yīng)該立即修改,并且若有必要記錄下來(lái)。

        規(guī)則9

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

        規(guī)則10

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

        規(guī)則11

        代碼版本升級(jí)要經(jīng)過(guò)嚴(yán)格測(cè)試。

        8.代碼編譯

        規(guī)則1

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

        防止隱藏可能是錯(cuò)誤的告警。

        規(guī)則2

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

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

        ps2:有些可能不常用,因?yàn)榇蠹覍?xiě)不到那么長(zhǎng)的代碼,就我自己寫(xiě)的最長(zhǎng)的匯編代碼也不超過(guò)10K行;


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

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 三门峡市| 汶上县| 裕民县| 高清| 肥城市| 广安市| 延庆县| 长宁区| 万安县| 盐亭县| 长葛市| 肥西县| 泊头市| 钟山县| 襄樊市| 德清县| 二连浩特市| 珲春市| 石柱| 宜春市| 霍林郭勒市| 普定县| 彰武县| 修文县| 高雄市| 玉环县| 安化县| 都江堰市| 齐齐哈尔市| 清新县| 栾城县| 东宁县| 穆棱市| 高青县| 孟津县| 伊金霍洛旗| 兴业县| 东明县| 二连浩特市| 苗栗县| 皮山县|