PIC汇编编程及审核规范(V1.1)
一、程序命名规范
程序文件名由两部分构成:一部分为产品型号或功能描述,一部分为软件版本号。产品型号用字母描述,可为英文或中文拼音。软件版本号为4位,前一位固定为字母”V”,后3位为数字,编写软件版本号应按照从小到大的顺序递增。开发阶段版本号从001开始;中试之后版本号从100开始。
例如:光电感烟探测器JTY-GD-G3程序GDG3V001
电子差定温探测器JTW-ZCD-G3N程序GWG3NV101
二、程序头格式
在每个文件的开始要有一个对该文件总体功能的描述,软件版本,以及作者及编写时
间。采用模版统一格式。
1.在功能描述中,除了对软件实现的功能做简要描述外,还应包括使用的单片机,晶振频率,
以及主要I/O口实现的功能。2.如果程序升级时应增加如下说明。
1)程序升级后的版本号:例如“版本号:Ver105”2)程序升级的修改作者:例如“更改人:×××”3)程序升级的修改日期:例如“更改日期:011217”4)应对程序升级进行简单修改说明。
5)应给出程序增加、更改、删除项说明,每项总处数。
3.
程序头如采用如下统一格式:
;****************;*文件名*;****************;*功能描述:;*软件版本
;*开始编写—完成日期:;*作者:
三、子程序、标号及变量命名规则(推荐)
1.子程序及标号命名规则
子程序命名应使用相关含义英文。子程序入口标号应使用子程序名相关含义、常用的英语单词(拼音)或单词(拼音)缩写。如果一个英语单词表述不清,应使用多个英语单词缩写表示。程序里边的标号应与执行该分支功能相关含义、常用的英语单词(拼音)或单词(拼音)缩写,如果没有确切含义,应优先选用子程序入口标号前面字母缩写加两位序号。2.变量命名规则
标志寄存器使用相关含义、常用的英语单词英文+Flag;暂用寄存器使用:暂存对象英文缩写+Temp;计数寄存器使用暂存对象英文缩写+Numb;其它寄存器:与存放对象相关含义、常用的英语单词(拼音)或单词(拼音)缩写。3.标志位命名规则
标志对象相关含义、常用的英语单词(拼音)缩写。
四、程序格式书写规范
汇编语言的格式为:
[标号]<指令助记符>[操作数];[注释]编程时为了程序结构清楚,要求如下:
1.四个部分之间以tab键分隔(tab键定义为8个空格),而不使用空格。2.对于相同的部分要求上下对齐。
3.标号后必须跟冒号(:)
4.虽然标号中的字母大小写表示不同的含义,但不允许用同样的字符定义两个不同的标号。5.操作数的第一个字母要求大写,其余字符小写;如果操作数为常量,要求第一个大写的字符为“C“。
6.注释要求使用中文。
五.程序注释
A.变量及软件标志注释
对于标志寄存器、全局变量和关键的标志位应加注释,说明如下:1.变量注释:
写清变量在程序中起的作用注明变化时刻。
当使用复用变量时,应注释变量生命周期。
程序升级所涉及到的变量的增加、改变或者删除。该变量的用途是什么?是否需要初始化?注释应包括版本号。2.标志注释:
应分别说明逻辑0和逻辑1代表何种状态或功能
注明软件标志的变化时刻
如果程序通过判断该标志决定程序走向,应说明走向程序执行的功能。
当标志位发生变化时,应注释变化意义。当标志复用时,应标识标志的生命周期,用户关系。当程序升级增加或删除的变量时,该标志的意义是什么?是否需要初始化?注释应包括版本号。
B.子程序注释
子程序前应加注释,注释应包括以下几个方面:功能说明、入口条件、出口信息、影响资源、执行时间。(根据实际情况可删减)
1.功能:说明该子程序的作用,如果该子程序内部有选择性执行功能,应分别说明在什么情
况下完成什么功能。
2.入口条件:设计输入的参数说明。有的子程序不需要入口条件,如固定延时子程序。3.出口信息:子程序执行完毕时留下的现场有用信息,这中间有运算结果的存放地址、存放格式、输出的特征格式(如出错信息)的存放地址和格式。
4.子程序调用:说明本子程序还要调用哪些低级子程序,将其标号一一列出。
5.影响资源:子程序在执行过程中,必然要动用若干寄存器或位单元,使它们的内容在子程
序执行后有可能发生变化,这些寄存器或位单元即为受影响的资源,应一一列出。6.执行时间:在一些实时控制系统中,对程序的运行速度有严格要求,这时应标明程序执行
时间。当子程序有各种分支转移时,子程序的执行时间可能是不定的,这时应计算出最短执行时间和最长执行时间,并按概率统计的方法核算出平均执行时间。为主程序调整运行节奏提供参考数据。
C.程序分支、I/O注释
1.如果程序执行GOTO、BTFSS、BTFSC、CALL语句,应注释执行程序分支的功能。2.相对独立的功能前面应注释实现功能的算法。3.关键I/O口变化,重要时序、定时,关键参数应加注释。
D.程序升级标识
1)对于新增的程序语句,应该分别在其开始、结束位置注明与修改注释内容相对应的
更改版本号的第几项内容的第几处。例如:
movfwclassl;从EEPROM中取出的灵敏度级别数(五位三进制)(Ver105,0701
开始)
该语句的文字注释内容的含义是:从该语句起为新增的内容——程序升级Ver105
中第7项修改内容所涉及的第1处。
2)对于更改(包括删除)的程序语句,应注明更改前及更改后的不同之处,如有必
要还需注明更改的原因。例如:movlw.9;自校验数据由8种改为9种,增加灵敏度级别数的校验(更改内容Ver105,0901)
该语句的文字注释内容的含义是:该语句为更改的内容——更改前为8,更改后为9,更改的原因是增加灵敏度级别数的校验,同时还注明了该更改是程序升级Ver105中第9项修改内容所涉及的第1处。
六.程序编写规则
1.程序功能模块应相对独立。
2.有关联的模块应安排在ROM空间靠近的地方。3.程序须翻页时,频繁调用的程序尽量安排在第一页,关联的模块应安排在同一页,不被
常调用的程序尽量安排在第二页。
4.进入中断时,应保护中断现场。中断返回时应恢复中断现场。当中断有几个分支时,应分别中断返回
5.不允许在不同子程序之间互相跳转。
6.对于一个子程序或中断子程序,应避免程序执行不同的出口,如果可能,最好只有一个出口。7.程序调用子程序层数不宜太多,调用语句与子程序返回语句应配对。当子程序有几个分
支时,应分别子程序返回。8.使用复用标志和寄存器时,应注意其生命周期,避免互相影响。
七.程序自动设置规定
为了规范PIC单片机设置位的烧写,特做如下补充规定:
1.在编制程序时,在程序开始应明确所使用的单片机并调入相应头文件,同时编写设置位。如:
LISTP=16C73B;明确使用的单片机
#include<p16c73b.inc>;调入PIC16C73B头文件
__CONFIG_CP_OFF&_WDT_ON&_BODEN_ON&_PWRTE_ON&_XT_OSC;设置为:代码保密OFF,看门狗ON,掉电检测ON,上电延时ON,晶振XT
八.汇编程序审核规范
在程序测试前,应进行审核。程序审核采用由编程者口头宣讲程序结构,讲解程序必要时软仿运行关键程序的形式,审核主要内容如下:1.程序命名是否规范2.程序头格式是否规范3.程序变量命名是否规范4.程序格式书写是否规范5.程序注释是否规范
6.程序编程是否符合规范
7.对照程序流程图审核程序与流程图的符合性
8.升级程序调试完毕后应按照更改标识恢复原文件与升级前的程序版本进行HEX文件的比较验证,应校验通过:9.重点仿真运行重要的时序、关键算法等程序。10.检查是否可以自动设置烧写位。