PIC匯編編程規(guī)范
一、程序命名規(guī)范
程序文件名由兩部分構(gòu)成:一部分為產(chǎn)品型號或功能描述,一部分為軟件版本號。產(chǎn)品型號用字母描述,可為英文或中文拼音。軟件版本號為4位,前一位固定為字母”V”,后3位為數(shù)字,編寫軟件版本號應按照從小到大的順序遞增。開發(fā)階段版本號從001開始;中試之后版本號從100開始。
例如:光電感煙探測器JTY-GD-G3程序 GDG3V001
電子差定溫探測器JTW-ZCD-G3N程序 GWG3NV101
二、程序頭格式
在每個文件的開始要有一個對該文件總體功能的描述,軟件版本,以及作者及編寫時間。采用模版統(tǒng)一格式。
1. 在功能描述中,除了對軟件實現(xiàn)的功能做簡要描述外,還應包括使用的單片機,晶振頻率,以及主要I/O口實現(xiàn)的功能。
2. 如果程序升級時應增加如下說明。
1) 程序升級后的版本號:例如“版本號:Ver105”
2) 程序升級的修改作者:例如“更改人:×××”
3) 程序升級的修改日期:例如“更改日期:01 12 17”
4) 應對程序升級進行簡單修改說明。
5) 應給出程序增加、更改、刪除項說明,每項總處數(shù)。
1.
程序頭如采用如下統(tǒng)一格式:
;****************
;* 文件名 *
;****************
;* 功能描述:
;* 軟件版本
;* 開始編寫—完成日期:
;* 作者:
三、子程序、標號及變量命名規(guī)則(推薦)
1.子程序及標號命名規(guī)則
子程序命名應使用相關含義英文。子程序入口標號應使用子程序名相關含義、常用的英語單詞(拼音)或單詞(拼音)縮寫。如果一個英語單詞表述不清,應使用多個英語單詞縮寫表示。程序里邊的標號應與執(zhí)行該分支功能相關含義、常用的英語單詞(拼音)或單詞(拼音)縮寫,如果沒有確切含義,應優(yōu)先選用子程序入口標號前面字母縮寫加兩位序號。
2.變量命名規(guī)則
標志寄存器使用相關含義、常用的英語單詞英文+ Flag;暫用寄存器使用:暫存對象英文縮寫+Temp;計數(shù)寄存器使用暫存對象英文縮寫+ Numb;其它寄存器:與存放對象相關含義、常用的英語單詞(拼音)或單詞(拼音)縮寫。
3. 標志位命名規(guī)則
標志對象相關含義、常用的英語單詞(拼音)縮寫。
四、程序格式書寫規(guī)范
匯編語言的格式為:
[標號] <指令助記符> [操作數(shù)] ;[注釋]
編程時為了程序結(jié)構(gòu)清楚,要求如下:
1. 四個部分之間以tab鍵分隔(tab鍵定義為8個空格),而不使用空格。
2. 對于相同的部分要求上下對齊。
3. 標號后必須跟冒號(:)
4. 雖然標號中的字母大小寫表示不同的含義,但不允許用同樣的字符定義兩個不同的標號。
5. 操作數(shù)的第一個字母要求大寫,其余字符小寫;如果操作數(shù)為常量,要求第一個大寫的字符為“C“。
6. 注釋要求使用中文。
五.程序注釋
A.變量及軟件標志注釋
對于標志寄存器、全局變量和關鍵的標志位應加注釋,說明如下:
1. 變量注釋:
l 寫清變量在程序中起的作用
l 注明變化時刻。
l 當使用復用變量時,應注釋變量生命周期。
l 程序升級所涉及到的變量的增加、改變或者刪除。該變量的用途是什么?是否需要初始化? 注釋應包括版本號。
2. 標志注釋:
l 應分別說明邏輯0和邏輯1代表何種狀態(tài)或功能
l 注明軟件標志的變化時刻
l 如果程序通過判斷該標志決定程序走向,應說明走向程序執(zhí)行的功能。
l 當標志位發(fā)生變化時,應注釋變化意義。當標志復用時,應標識標志的生命周期,用戶關系。當程序升級增加或刪除的變量時,該標志的意義是什么?是否需要初始化?注釋應包括版本號。
六.程序編寫規(guī)則
1.程序功能模塊應相對獨立。
2.有關聯(lián)的模塊應安排在ROM空間靠近的地方。
3.程序須翻頁時,頻繁調(diào)用的程序盡量安排在第一頁,關聯(lián)的模塊應安排在同一頁,不被常調(diào)用的程序盡量安排在第二頁。
4.進入中斷時,應保護中斷現(xiàn)場。中斷返回時應恢復中斷現(xiàn)場。當中斷有幾個分支時,應分別中斷返回
5.不允許在不同子程序之間互相跳轉(zhuǎn)。
6.對于一個子程序或中斷子程序,應避免程序執(zhí)行不同的出口,如果可能,最好只有一個出口。
7.程序調(diào)用子程序?qū)訑?shù)不宜太多,調(diào)用語句與子程序返回語句應配對。當子程序有幾個分支時,應分別子程序返回。
8.使用復用標志和寄存器時,應注意其生命周期,避免互相影響。
七.程序自動設置規(guī)定
為了規(guī)范PIC單片機設置位的燒寫,特做如下補充規(guī)定:
1. 在編制程序時,在程序開始應明確所使用的單片機并調(diào)入相應頭文件,同時編寫設置位。如:
LIST P=16C73B ;明確使用的單片機
#include
__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _XT_OSC
;設置為:代碼保密 OFF,看門狗 ON,掉電檢測 ON,上電延時ON,晶振 XT
八.匯編程序?qū)徍艘?guī)范
在程序測試前,應進行審核。程序?qū)徍瞬捎糜删幊陶呖陬^宣講程序結(jié)構(gòu),講解程序必要時軟仿運行關鍵程序的形式,審核主要內(nèi)容如下:
1.程序命名是否規(guī)范
2.程序頭格式是否規(guī)范
3.程序變量命名是否規(guī)范
4.程序格式書寫是否規(guī)范
5.程序注釋是否規(guī)范
6.程序編程是否符合規(guī)范
7.對照程序流程圖審核程序與流程圖的符合性
8.升級程序調(diào)試完畢后應按照更改標識恢復原文件與升級前的程序版本進行HEX文件的比較驗證,應校驗通過:
9.重點仿真運行重要的時序、關鍵算法等程序。
10. 檢查是否可以自動設置燒寫位。
B.子程序注釋
子程序前應加注釋,注釋應包括以下幾個方面:功能說明、入口條件、出口信息、影響資源、執(zhí)行時間。(根據(jù)實際情況可刪減)
1. 功能:說明該子程序的作用,如果該子程序內(nèi)部有選擇性執(zhí)行功能,應分別說明在什么情況下完成什么功能。
2. 入口條件:設計輸入的參數(shù)說明。有的子程序不需要入口條件,如固定延時子程序。
3. 出口信息:子程序執(zhí)行完畢時留下的現(xiàn)場有用信息,這中間有運算結(jié)果的存放地址、存放格式、輸出的特征格式(如出錯信息)的存放地址和格式。
4. 子程序調(diào)用:說明本子程序還要調(diào)用哪些低級子程序,將其標號一一列出。
5. 影響資源:子程序在執(zhí)行過程中,必然要動用若干寄存器或位單元,使它們的內(nèi)容在子程序執(zhí)行后有可能發(fā)生變化,這些寄存器或位單元即為受影響的資源,應一一列出。
6. 執(zhí)行時間:在一些實時控制系統(tǒng)中,對程序的運行速度有嚴格要求,這時應標明程序執(zhí)行時間。當子程序有各種分支轉(zhuǎn)移時,子程序的執(zhí)行時間可能是不定的,這時應計算出最短執(zhí)行時間和最長執(zhí)行時間,并按概率統(tǒng)計的方法核算出平均執(zhí)行時間。為主程序調(diào)整運行節(jié)奏提供參考數(shù)據(jù)。
C.程序分支、I/O注釋
1.如果程序執(zhí)行GOTO、BTFSS、BTFSC、CALL語句,應注釋執(zhí)行程序分支的功能。
2.相對獨立的功能前面應注釋實現(xiàn)功能的算法。
3.關鍵I/O口變化,重要時序、定時,關鍵參數(shù)應加注釋。
D.程序升級標識
1)對于新增的程序語句,應該分別在其開始、結(jié)束位置注明與修改注釋內(nèi)容相對應的更改版本號的第幾項內(nèi)容的第幾處。例如:
movfw classl ;從EEPROM中取出的靈敏度級別數(shù)(五位三進制)(Ver105,0701開始)
該語句的文字注釋內(nèi)容的含義是:從該語句起為新增的內(nèi)容——程序升級Ver105中第7項修改內(nèi)容所涉及的第1處。
2) 對于更改(包括刪除)的程序語句,應注明更改前及更改后的不同之處,如有必要還需注明更改的原因。例如:
movlw .9 ;自校驗數(shù)據(jù)由8種改為9種,增加靈敏度級別數(shù)的校驗(更改內(nèi)容Ver105,0901)
該語句的文字注釋內(nèi)容的含義是:該語句為更改的內(nèi)容——更改前為8,更改后為9,更改的原因是增加靈敏度級別數(shù)的校驗,同時還注明了該更改是程序升級Ver105中第9項修改內(nèi)容所涉及的第1處。

編輯:admin 最后修改時間:2018-05-19