PIC匯編編程規(guī)范
2. 標(biāo)志注釋?zhuān)?P>l 應(yīng)分別說(shuō)明邏輯0和邏輯1代表何種狀態(tài)或功能
l 注明軟件標(biāo)志的變化時(shí)刻
l 如果程序通過(guò)判斷該標(biāo)志決定程序走向,應(yīng)說(shuō)明走向程序執(zhí)行的功能。
l 當(dāng)標(biāo)志位發(fā)生變化時(shí),應(yīng)注釋變化意義。當(dāng)標(biāo)志復(fù)用時(shí),應(yīng)標(biāo)識(shí)標(biāo)志的生命周期,用戶關(guān)系。當(dāng)程序升級(jí)增加或刪除的變量時(shí),該標(biāo)志的意義是什么?是否需要初始化?注釋?xiě)?yīng)包括版本號(hào)。
六.程序編寫(xiě)規(guī)則
1.程序功能模塊應(yīng)相對(duì)獨(dú)立。
2.有關(guān)聯(lián)的模塊應(yīng)安排在ROM空間靠近的地方。
3.程序須翻頁(yè)時(shí),頻繁調(diào)用的程序盡量安排在第一頁(yè),關(guān)聯(lián)的模塊應(yīng)安排在同一頁(yè),不被常調(diào)用的程序盡量安排在第二頁(yè)。
4.進(jìn)入中斷時(shí),應(yīng)保護(hù)中斷現(xiàn)場(chǎng)。中斷返回時(shí)應(yīng)恢復(fù)中斷現(xiàn)場(chǎng)。當(dāng)中斷有幾個(gè)分支時(shí),應(yīng)分別中斷返回
5.不允許在不同子程序之間互相跳轉(zhuǎn)。
6.對(duì)于一個(gè)子程序或中斷子程序,應(yīng)避免程序執(zhí)行不同的出口,如果可能,最好只有一個(gè)出口。
7.程序調(diào)用子程序?qū)訑?shù)不宜太多,調(diào)用語(yǔ)句與子程序返回語(yǔ)句應(yīng)配對(duì)。當(dāng)子程序有幾個(gè)分支時(shí),應(yīng)分別子程序返回。
8.使用復(fù)用標(biāo)志和寄存器時(shí),應(yīng)注意其生命周期,避免互相影響。
七.程序自動(dòng)設(shè)置規(guī)定
為了規(guī)范PIC單片機(jī)設(shè)置位的燒寫(xiě),特做如下補(bǔ)充規(guī)定:
1. 在編制程序時(shí),在程序開(kāi)始應(yīng)明確所使用的單片機(jī)并調(diào)入相應(yīng)頭文件,同時(shí)編寫(xiě)設(shè)置位。如:
LIST P=16C73B ;明確使用的單片機(jī)
#include
__CONFIG _CP_OFF _WDT_ON _BODEN_ON _PWRTE_ON _XT_OSC
;設(shè)置為:代碼保密 OFF,看門(mén)狗 ON,掉電檢測(cè) ON,上電延時(shí)ON,晶振 XT
八.匯編程序?qū)徍?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/規(guī)范">規(guī)范
在程序測(cè)試前,應(yīng)進(jìn)行審核。程序?qū)徍瞬捎糜删幊陶呖陬^宣講程序結(jié)構(gòu),講解程序必要時(shí)軟仿運(yùn)行關(guān)鍵程序的形式,審核主要內(nèi)容如下:
1.程序命名是否規(guī)范
2.程序頭格式是否規(guī)范
3.程序變量命名是否規(guī)范
4.程序格式書(shū)寫(xiě)是否規(guī)范
5.程序注釋是否規(guī)范
6.程序編程是否符合規(guī)范
7.對(duì)照程序流程圖審核程序與流程圖的符合性
8.升級(jí)程序調(diào)試完畢后應(yīng)按照更改標(biāo)識(shí)恢復(fù)原文件與升級(jí)前的程序版本進(jìn)行HEX文件的比較驗(yàn)證,應(yīng)校驗(yàn)通過(guò):
9.重點(diǎn)仿真運(yùn)行重要的時(shí)序、關(guān)鍵算法等程序。
10. 檢查是否可以自動(dòng)設(shè)置燒寫(xiě)位。
B.子程序注釋
子程序前應(yīng)加注釋?zhuān)⑨寫(xiě)?yīng)包括以下幾個(gè)方面:功能說(shuō)明、入口條件、出口信息、影響資源、執(zhí)行時(shí)間。(根據(jù)實(shí)際情況可刪減)
1. 功能:說(shuō)明該子程序的作用,如果該子程序內(nèi)部有選擇性執(zhí)行功能,應(yīng)分別說(shuō)明在什么情況下完成什么功能。
2. 入口條件:設(shè)計(jì)輸入的參數(shù)說(shuō)明。有的子程序不需要入口條件,如固定延時(shí)子程序。
3. 出口信息:子程序執(zhí)行完畢時(shí)留下的現(xiàn)場(chǎng)有用信息,這中間有運(yùn)算結(jié)果的存放地址、存放格式、輸出的特征格式(如出錯(cuò)信息)的存放地址和格式。
4. 子程序調(diào)用:說(shuō)明本子程序還要調(diào)用哪些低級(jí)子程序,將其標(biāo)號(hào)一一列出。
5. 影響資源:子程序在執(zhí)行過(guò)程中,必然要?jiǎng)佑萌舾杉拇嫫骰蛭粏卧?,使它們的?nèi)容在子程序執(zhí)行后有可能發(fā)生變化,這些寄存器或位單元即為受影響的資源,應(yīng)一一列出。
6. 執(zhí)行時(shí)間:在一些實(shí)時(shí)控制系統(tǒng)中,對(duì)程序的運(yùn)行速度有嚴(yán)格要求,這時(shí)應(yīng)標(biāo)明程序執(zhí)行時(shí)間。當(dāng)子程序有各種分支轉(zhuǎn)移時(shí),子程序的執(zhí)行時(shí)間可能是不定的,這時(shí)應(yīng)計(jì)算出最短執(zhí)行時(shí)間和最長(zhǎng)執(zhí)行時(shí)間,并按概率統(tǒng)計(jì)的方法核算出平均執(zhí)行時(shí)間。為主程序調(diào)整運(yùn)行節(jié)奏提供參考數(shù)據(jù)。
C.程序分支、I/O注釋
1.如果程序執(zhí)行GOTO、BTFSS、BTFSC、CALL語(yǔ)句,應(yīng)注釋執(zhí)行程序分支的功能。
2.相對(duì)獨(dú)立的功能前面應(yīng)注釋實(shí)現(xiàn)功能的算法。
3.關(guān)鍵I/O口變化,重要時(shí)序、定時(shí),關(guān)鍵參數(shù)應(yīng)加注釋。
D.程序升級(jí)標(biāo)識(shí)
1)對(duì)于新增的程序語(yǔ)句,應(yīng)該分別在其開(kāi)始、結(jié)束位置注明與修改注釋內(nèi)容相對(duì)應(yīng)的更改版本號(hào)的第幾項(xiàng)內(nèi)容的第幾處。例如:
movfw classl ;從EEPROM中取出的靈敏度級(jí)別數(shù)(五位三進(jìn)制)(Ver105,0701開(kāi)始)
該語(yǔ)句的文字注釋內(nèi)容的含義是:從該語(yǔ)句起為新增的內(nèi)容——程序升級(jí)Ver105中第7項(xiàng)修改內(nèi)容所涉及的第1處。
2) 對(duì)于更改(包括刪除)的程序語(yǔ)句,應(yīng)注明更改前及更改后的不同之處,如有必要還需注明更改的原因。例如:
movlw .9 ;自校驗(yàn)數(shù)據(jù)由8種改為9種,增加靈敏度級(jí)別數(shù)的校驗(yàn)(更改內(nèi)容Ver105,0901)
該語(yǔ)句的文字注釋內(nèi)容的含義是:該語(yǔ)句為更改的內(nèi)容——更改前為8,更改后為9,更改的原因是增加靈敏度級(jí)別數(shù)的校驗(yàn),同時(shí)還注明了該更改是程序升級(jí)Ver105中第9項(xiàng)修改內(nèi)容所涉及的第1處。
晶振相關(guān)文章:晶振原理
評(píng)論