单片机程序设计编程规范(2)
2.说明部分:
1)源文件说明部分位于每个源文件的最前面,主要描述:文件名、作者、生成日期、联络方式、功能描述、版本号、软硬件平台、版权说明、修改记录等的简要说明,以英文书写。
例如:
/*************************************************
Filename:;文件名
Author:;作者
Date:;日期
Email:;邮箱地址
Description:;功能描述
Version:;版本号
Hardware&IDE
Copyright(C),SONIXTECHNOLOGYCo.,Ltd.
History:
*************************************************/;软硬件平台;修改记录
2)子程序说明部分位于每个子程序的最前面,主要描述:子程序名称、功能、设计原理、所用变量、入口条件、出口信息、调用模块、堆栈层数、影响资源、算法简述、使用说明和修改记录等。
例如:
/**************************************************
Subroutine:;子程序名称
Description:;子程序功能的描述
Principium:;程序设计原理
Calls:;被本子程序调用的子程序清单Variables:;本子程序中所用到的临时变量
Input:;子程序调用所需要基本参数的说明Output:;子程序调用后运算结果的说明Stack:;占用的堆栈层数
History:;修改记录
*************************************************/
3.边写代码边注释,修改代码的同时修改相应注释,以保证注释与代码的一致性。不再有用的注释要删除。
4.要避免在注释中使用缩写,特别是非常用缩写。
5.程序在必要的地方必须有注释,注释要准确、易懂、简洁。注释要有意义,如果有需要,还要详细描述相关含义。
例如:
以下是无意义的注释
mova,#5;把5赋给acc
movwk00,a;把acc赋给wk00
应该如下注释:
mova,#5;设置循环次数为5次
movwk00,a
6.注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)的相邻位置,不可放在下方,如放于上方则需与其上面的代码用空行隔开。
例如:
clrwk00
;CheckReadindex=FiFoLimit
cmprsa,r;IsReadindex=Limit
jmp@f
7.注释格式尽量统一,对多行注释建议使用“/*……*/”,对单行的注释建议使用“;”。
8.注释应考虑程序易读及外观排版因素,语言尽量统一。对不能进行准确英文表达的建议使用中文。
9.对有含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其含义。
变量命名规则五、五、变量命名规则
1.变量的名称要采用有意义的英文单词小写缩写。可以采用以下几种方式进行缩写命名:
1)去掉所有不在词头的元音字母。如screen可以简写为scrn。
2)使用每个单词的头几个字母。如channelactivation可以简写为chanactiv。
3)使用变量名中具有典型意义的单词。如numberofcycle可以简写为cyclenumber。
4)去掉无用的单词后缀ing、ed等。如pagingrequest可以简写为pagreq。
5)尽量使用标准或惯用的缩写形式,缩写应该保持一致性。如serialperipheralinterface可以简写为spi。
6)部门已经完成函式的变量名称,如果没有特别原因,发展人员延续使用以增加可读性
2.
3.
4.
5.在定义部分要加入注释来说明变量的含义。变量的定义要在“.DATA“段中。变量标识符的长度不超过16个字符。程序会用到起码三种变量
1)全局变量名称前面不加任何修饰
2)局部变量利用wk00,wk01….wk0n来表示,每个独立程序里面用到的Localvar.可有效节省RAM
3)中断局部变量中断里面用的Interruptlocalvar.利用Iwk00,Iwk01以作为区隔(注意中断使用的变量必定要小心的跟主程序区隔开,不然影响系统稳定性相当大)例如:
.DATA
…
accbufds1;全局变量
l_numberds5;局部变量
6.位定义。程序多处会经常对寄存器的某一位进行操作,可以在变量定义时对需要用到的位进行定义,建议名称以”f_”开头。
7.临时工作寄存器的定义。程序中经常需要用到一些临时存储数据的寄存器,我们称之为临时工作寄存器,这些临时工作寄存器的命名方法为“wk”加上一个二位数字组成,这个数字可以从“00”开始随着需要定义的临时工作寄存器的数量的增加而增加。需要特别说明的是,临时工作寄存器的使用可以大量节省RAM空间,但是要注意相应的生命周期,必须在子程序退出之前,将空间释放以便其它子程序使用。
8.在中断处理程序中用到的寄存器,为了和一般的临时工作寄存器作以区分,可以在寄存器前面加英文字母“i”来命名。在使用时需要加以注意,不要和主程序中的变量复用。例如:
.DATA
…
wk00ds1
wk01ds1
wk02ds1
iwk00ds1;中断中要用到的临时工作寄存器iwk01ds1;中断中要用到的临时工作寄存器…
…
mov
mov
mov
mov
…a,rwk00,aa,wk01r,a
常量命名规则六、六、常量命名规则
1.
2.
3.
4.常量的名称要采用有意义的英文单词大写缩写。常量要定义在“.CONST“段中。在定义部分要加入注释来说明常量含义。常量标识符的长度不超过16个字符。
5.系统寄存器中常用到的某些位可以再额外进行定义,但要有意义:
P_key1EQUP1.0;P_打头表示为Port定义
Pm_key1EQUP1m.0;Pm_打头表示为Port方向定义
…
标号命名规则七、七、标号命名规则
1.标号的名称要采用有意义的英文单词小写缩写。
2.子程序标号定义。在同一个子程序中,所有的标号应该有规律可寻。建议第一个标号为子程序名,下面所用到的标号用子程序名添加数字表示,从而便于今后程序的添加和修改。数字尽量使用两位数,在子程序的退出位置,数字一般为”90”。
例如:
在一段按键扫描程序中,如下的标号是不可取的。
Label:
LabelOK
LabelFail
LabelQuit
Labelfun:
LabelEnd:
Ret
(设计师要花许多精神命名label,同时不容易看出子程序的结构关西,所以建议在子程序里面别在花精神命名,都用号码表示)(详细的动作都用注解来说明)
应该改为:
;***************************************************
;Sub-routine,Name:label
;***************************************************
Label:
IftheconditionfailthengotoLabel90
;programbeginhere
;注解都写在这里
Label20:
;最后结尾结束的label都用90当做结尾
:有助于程序的阅读
Label90:
Ret
3.为了使程序的结构更加清晰,子程序的命名要尽量能显示出相互间的调用关系。
由main主循环中直接调用的程序,要以“mn_”作为标号的开头,下面仅列出一些常用的子程序名称,其它类似情况可同样处理。
mn_app;系统应用程序
mn_intgnd;中断与主程序之间的界面子程序
mn_key;按键扫描子程序
mn_lcd;LCD显示子程序
mn_led;LED显示子程序
mn_tone;声音处理子程序
mn_eppEEPROM读写操作
mn_bio;基本输入/输出控制
mn_adc;ADC输入及处理
mn_debug;debug处理程序
4.程序的几个常用入口地址命名如下:
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




