电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

单片机汇编程序编码标准

2017-04-17 20:22分类:PLC基础知识 阅读:

 

软件方案更多地是一种工程,而不是一种自个艺术。假定纷歧致编程标准,究竟写出的程序,其可读性将较差,这不只给代码的了解带来阻遏,添加保护时期的作业量,一同不标准的代码隐含过错的或许性也比照大。
剖析标明,编码时期发作的过错傍边,语法过错大约占20%分配,而由于未严峻查看软件逻辑致使的过错、函数(模块)之直接口过错及由于代码可了解度低致使优化保护时期对代码的过错批改致使的过错则占了一半以上。
可见,跋涉软件质量有必要下降编码时期的过错率。怎么有用下降编码时期的过错呢这需求拟定详细的软件编程标准,并操练每一位程序员,究竟的作用能够把编码时期的过错降至10%分配,一同也下降了程序的查验费用,作用恰当显着。
这篇文章从代码的可保护性(可读性、可了解性、可批改性)、代码逻辑与功率、函数(模块)接口、可查验性四个方面论说了软件编程标准,标准分红规矩和主张两种,其间规矩有些为强行施行项目,而主张有些则不作强行,可依据习气取舍。
1.排版
规矩1
程序块运用缩进办法,函数和标号运用空格缩进,程序段混合运用TAB和空格缩进。缩进的意图是使程序构造了解,便于阅览和了解。
默许宽度应为8个空格,由于Word中为4个空格,为演示了解,此处用2个替代(下同)。
例如:
MOV R1, #00H
MOV R2, #00H
MOV PMR, #PMRNORMAL
MOV DPS, #FLAGDPTR
MOV DPTR, #ADDREEPROM
read1kloop:
read1kpage:
INC R1
MOVX A, @DPTR
MOV SBUF, A
JNB TI, $
CLR TI
INC DPTR
CJNE R1, #20H, read1kpage
INC R2
MOV R1, #00H
CPL WDI
CJNE R2, #20H, read1kloop ;END OF EEPROM
规矩2
在指令的操作数之间的,运用空格进行距离,选用这种懈怠办法编写代码的意图是使代码愈加了解。
例如:
CJNE R2, #20H, read1kloop ;END OF EEPROM
规矩3
一行最多写一条句子。
规矩4
变量界说时,坚持对齐。便于阅览和查看内存的运用状况。
例如:
RegLEDLOSS EQU 30H ; VARIABLE ;
TESTLED==RegLEDLOSS.0
RegLEDRA EQU 31H ; VARIABLE
RUNLED_Flag EQU 32H ; VARIABLE ;
256ms改动一次RUNLED状况
RUNLED_Def EQU 10H ; STATIC ;
16*32ms=500ms改动一次LED状况
2.注释
注释的准则是有助于对程序的阅览了解,注释不宜太多也不能太少,太少晦气于代码了解,太多则会对阅览发作搅扰,因此只在必要的本地才加注释,并且注释要精确、易懂、尽或许简练。注释量一般操控在30%到50%之间。
规矩1
程序在必要的本地有必要有注释,注释要精确、易懂、简练。
例如如下注释含义不大:
MOV DXCE1COUNTER, #00H ; 将DXCE1COUNTER赋值为0
而如下的注释则给出了额外有用的信息:
JNZ PcComm_Err ; 假定校验犯错
规矩2
注释应与其描写的代码邻近,对代码的注释应放在其上方或右方(对单条句子的注释)相邻方位,不行放鄙人面,如放于上方则需与其上面的代码用空行离隔。
规矩3
头文件、源文件的头部,应进行注释。注释有必要列出:文件名、作者、意图、功用、批改日志等。
规矩4
函数头部应进行注释,列出:函数的意图、功用、输入参数、输出参数、触及到的通用变量和寄存器、调用的别的函数和模块、批改日志等。对一些杂乱的函数,在注释中最好供给典型用法。
规矩5
对首要代码段的功用、意图进行注释,供给有用的、额外的信息。并在该代码段的结束处加一行注释标明该段代码结束。
规矩6
关于悉数的常量,变量,数据构造声明(包含数组、构造、类、枚举等),假定其命名不是充沛自注释的,在声明时都有必要加以注释,阐明其含义。
规矩 7
保护代码时,要更新相应的注释,删去不再有用的注释。坚持代码、注释的一同性,防止发作误解。
3.命名
规矩 1
标识符缩写
构成缩写的几种技能:
1) 去掉悉数的不在词头的元音字母。如screen写成scrn, primtive写成prmv。
2) 运用每个单词的头一个或几个字母。如Channel Activation写成ChanActiv,Release
Indication写成RelInd。
3) 运用变量名中每个有典型含义的单词。如Count of Failure写成FailCnt。
4) 去掉无用的单词后缀 ing, ed等。如Paging Request写成PagReq。
5) 运用标准的或惯用的缩写办法(包含协议文件中呈现的缩写办法)。如BSIC(Base Station
Identification Code)、MAP(Mobile Application Part)。
关于缩写的准则:
1) 缩写应当坚持一同性。如Channel不要有时缩写成Chan,有时缩写成Ch。Length有时缩写成Len,有时缩写成len。
2) 在源代码头部参与注解来阐明协议有关的、非通用缩写。
3) 标识符的长度不逾越12个字符。
规矩2
变量命名约好:<前缀> + 主体 ; 注释
变量命名要思考简略、直观、不易混杂。
前缀是可选项,标明变量类型,由于汇编中变量多是单字节变量,所以单字节变量能够不加前缀,关于bit和双字节型变量,运用小写的b和d作为前缀标明。
主体是必选项,可多个单词(或缩写)合在一同,每个单词首字母大写,别的有些小写。
规矩3
常量的命名
常量的命名规矩:单词的字母悉数大写,各单词之间用下划线离隔。
规矩4
函数的命名
单词首字母为大写,别的均为小写。函数名应以一个动词开端,即函数名应相似一个动词断言或祈使句。
例如:Test_Protect, Check_EEPROM, Init_Para
4.可保护性
规矩1
函数和进程中联络较为严密的代码尽或许相邻。
规矩2
每个函数的源程序行数准则上应当少于200行。
关于音讯分流处理函数,结束的功用一同,但由于音讯的品种多,或许逾越200行的绑缚,不归于违背规矩。
规矩3
句子嵌套层次不得逾越5层。
嵌套层次太多,添加了代码的杂乱度及查验的难度,简略犯错,添加代码保护的难度。
规矩4
防止一样的代码段在多个本地呈现。
当某段代码需在纷歧样的本地重复运用时,应依据代码段的方案巨细运用函数调用或宏调用的办法替代。这么,对该代码段的批改就可在一处结束,增强代码的可保护性。
规矩5
每个函数结束单一的功用,不方案多用处摆布逢源的函数。
多功用集于一身的函数,很或许使函数的了解、查验、保护等变得艰难。使函数功用了解化,添加程序可读性,亦可便当保护、查验。
规矩6
在函数的项目保护文档中,应当指出软件适用的硬件途径及版别。
主张1
运用专门的初始化函数对悉数的公共变量进行初始化。
5.程序精确性、功率
规矩1
阻遏运用未经初始化的变量。
引证未经初始化的变量或许会发作不行预知的作用,格外是引证未经初始化的指针常常会致使体系溃散,需格外留神。
规矩2
防止内存操作越界。
阐明:内存操作越界是软件体系首要过错之一,作用一般十分严峻。
规矩3
留神变量的有用取值方案,防止表达式呈现上溢或下溢。
规矩4
防止易混杂的指令和操作数拼写过错。
规矩5
防止函数中不用要句子,防止程序中的废物代码,预留代码应以注释的办法呈现。
程序中的废物代码不只占用额外的空间,并且还常常影响程序的功用与功用,很或许给程序的查验、保护等构成不用要的费事。
规矩6
经过对体系数据构造的差异与安排的改进,以及对程序算法的优化来跋涉空间功率。
这种办法是处理软件空间功率的根柢办法。
规矩7
循环体内作业量最小化。
应细心思考循环体内的句子是不是能够放在循环体以外,使循环体内作业量最小,然后跋涉程序的时刻功率。
规矩8
在多重循环中,应将最忙的循环放在最内层。
规矩9
防止循环体内含差异句子,将与循环变量无关的差异句子移到循环体外。
意图是削减差异次数。循环体中的差异句子是不是能够移到循环体外,要视程序的详细状况而言,一般状况,与循环变量无关的差异句子能够移到循环体外,而有关的则不行以。
规矩10
接连和康复
接连程序应当尽量短,应当在接连中进行符号,在主程序中处理。但实时性很高的程序段破例。
接连时应当保留悉数触及到的通用变量和寄存器,如A, PSW, DPTR等。
规矩11
库房设置
库房关于程序十分首要,关于库房的设置要合理。库房太小,在嵌套调用和很简略溢出,构成体系缺陷;库房太大,糟蹋RAM本钱。
为了节约库房本钱,接连时恳求不要保留太多本钱,接连嵌套和程序嵌套层数不要太多,尽量不要逾越5层。这就恳求合理的差异功用模块。
规矩12
看门狗
看门狗电路用于在单片机死机时主动复位。单片机需求守时向看门狗发送脉冲,俗称”喂狗”。喂狗不行太勤,这么看门狗没有起到作用;也不行太慢,这么简略构成单片机复位。精确的喂狗应当在主循环中进行,最好是树立一个独立的体系监控进程。不行以在守时刻断中喂狗,应为单片机有时或许会在主循环中死掉。

上一篇:单片机晶振上两个电容的效果

下一篇:51单片机准确延时结束办法

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部