3722
- 收藏
- 点赞
- 分享
- 举报
C51编程风格
现在单片机的程序设计,C51已经得到广泛的推广和应用,算是单片机的主流设计程序,甚至可以说作为单片机开发人员必须要掌握的一门语言了。
作为一门工具,最终的目的就是实现功能。在满足这个前提条件下,我们希望我们的程序能很容易地被别人读懂,或者能够很容易地读懂别人的程序,在团体合作开发中就能起到事半功倍之效。在网上请求帮助时,如能以规范的写法贴出程序,网友会比较容易地明白你的问题,则会比较快的得到网友的帮助,否则让人看上半天也不明所以然,这样就达不到预期的效果了。因此,为了便于源程序的交流,减少合作开发中的障碍,希望大家能够探讨一下C51的编程规范。把各人认为好的建议提出来,然后做一个总结,作为一种大家一致认同的规范,我认为将会是一件很有意义的事。我先提出一些自已的想法,以此抛砖引玉。
一、注释
1,采用中文;
2,开始的注释:
文件(模块)注释内容:
公司名称、版权、作者名称、修改时间、模块功能、背景介绍等,复杂的算法需要加上流程说明;
比如:
/*********************************************************************/
/*公司名称: */
/*模 块 名: LCD 模块 LCD 型号:HD44780 */
/*创 建 人:zhaojunjie 日期:2001-06-08 */
/*修 改 人: 日期:2001-06-08 */
/*功能描述: */
/*其他说明: */
/*版 本:
/**********************************************************************/
函数开头的注释内容:
函数名称、功能、说明 输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;
/*********************************************************************
*
* 函 数 名: v_LcdInit
* 功能描述: LCD初始化
* 函数说明: 初始化命令:0x3c, 0x08, 0x01, 0x06, 0x10, 0x0c
* 调用函数: v_Delaymsec(),v_LcdCmd()
* 全局变量:
* 输 入: 无
* 返 回: 无
* 设 计 者:zhao 日期:2001-12-09
* 修 改 者:zhao 日期:2001-12-09
* 版 本:
***********************************************************************/
3、程序中的注释内容:
修改时间和作者、方便理解的注释等。注释内容应简炼、清楚、明了,一目了然的语句不加注释。
二、命名:
命名必须具有一定的实际意义。
1、常量的命名:全部用大写。
2、变量的命名:
变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。
其中变量数据类型:
unsigned char 前缀 uc signed char 前缀 sc
unsigned int 前缀 ui signed int 前缀 si
unsigned long 前缀 ul signed long 前缀 sl
bit 前缀 b 指针 前缀 p
例:ucReceivData 接收数据
3、结构体命名:
4、函数的命名:
函数名首字大写,若包含有两个单词的每个单词首字母大写。
函数原型说明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名, 内部函数,只要注释其定义文件名;
三、编辑风格
1、缩进:缩进以 Tab 为单位,一个 Tab 为四个空格大小。预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的“{”“}”配对对齐,并与其前一行对齐;
2、空格:数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格,如:
if ( ... ) 等,运算符的空格规定如下:“->”、“[”、“]”、“++”、“--”、“~”、“!”、“+”、“-”(指正负号),“&”(取址或引用)、“*”(指使用指针时)等几个运算符两边不空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符“?:”两边均空一格,“(”、“)”运算符在其内侧空一格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。“,”运算符只在其后空一格,需对齐时也可不空或多空格,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。
3、对齐:原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在“,”处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。
4、空行:程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行
5、修改:版本封存以后的修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要在文件及函数的修改记录中加以记录。
6、形参:在定义函数时,在函数名后面括号中直接进行形式参数说明,不再另行说明。
作为一门工具,最终的目的就是实现功能。在满足这个前提条件下,我们希望我们的程序能很容易地被别人读懂,或者能够很容易地读懂别人的程序,在团体合作开发中就能起到事半功倍之效。在网上请求帮助时,如能以规范的写法贴出程序,网友会比较容易地明白你的问题,则会比较快的得到网友的帮助,否则让人看上半天也不明所以然,这样就达不到预期的效果了。因此,为了便于源程序的交流,减少合作开发中的障碍,希望大家能够探讨一下C51的编程规范。把各人认为好的建议提出来,然后做一个总结,作为一种大家一致认同的规范,我认为将会是一件很有意义的事。我先提出一些自已的想法,以此抛砖引玉。
一、注释
1,采用中文;
2,开始的注释:
文件(模块)注释内容:
公司名称、版权、作者名称、修改时间、模块功能、背景介绍等,复杂的算法需要加上流程说明;
比如:
/*********************************************************************/
/*公司名称: */
/*模 块 名: LCD 模块 LCD 型号:HD44780 */
/*创 建 人:zhaojunjie 日期:2001-06-08 */
/*修 改 人: 日期:2001-06-08 */
/*功能描述: */
/*其他说明: */
/*版 本:
/**********************************************************************/
函数开头的注释内容:
函数名称、功能、说明 输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;
/*********************************************************************
*
* 函 数 名: v_LcdInit
* 功能描述: LCD初始化
* 函数说明: 初始化命令:0x3c, 0x08, 0x01, 0x06, 0x10, 0x0c
* 调用函数: v_Delaymsec(),v_LcdCmd()
* 全局变量:
* 输 入: 无
* 返 回: 无
* 设 计 者:zhao 日期:2001-12-09
* 修 改 者:zhao 日期:2001-12-09
* 版 本:
***********************************************************************/
3、程序中的注释内容:
修改时间和作者、方便理解的注释等。注释内容应简炼、清楚、明了,一目了然的语句不加注释。
二、命名:
命名必须具有一定的实际意义。
1、常量的命名:全部用大写。
2、变量的命名:
变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。
其中变量数据类型:
unsigned char 前缀 uc signed char 前缀 sc
unsigned int 前缀 ui signed int 前缀 si
unsigned long 前缀 ul signed long 前缀 sl
bit 前缀 b 指针 前缀 p
例:ucReceivData 接收数据
3、结构体命名:
4、函数的命名:
函数名首字大写,若包含有两个单词的每个单词首字母大写。
函数原型说明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名, 内部函数,只要注释其定义文件名;
三、编辑风格
1、缩进:缩进以 Tab 为单位,一个 Tab 为四个空格大小。预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的“{”“}”配对对齐,并与其前一行对齐;
2、空格:数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格,如:
if ( ... ) 等,运算符的空格规定如下:“->”、“[”、“]”、“++”、“--”、“~”、“!”、“+”、“-”(指正负号),“&”(取址或引用)、“*”(指使用指针时)等几个运算符两边不空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符“?:”两边均空一格,“(”、“)”运算符在其内侧空一格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。“,”运算符只在其后空一格,需对齐时也可不空或多空格,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。
3、对齐:原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在“,”处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。
4、空行:程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行
5、修改:版本封存以后的修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要在文件及函数的修改记录中加以记录。
6、形参:在定义函数时,在函数名后面括号中直接进行形式参数说明,不再另行说明。
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
02008-11-12 19:34:07
-
02008-11-12 19:39:51
-
02008-11-12 19:40:51
-
2008-11-18 18:39:09
-
2008-09-28 20:14:51
-
2008-07-06 21:01:58
-
2008-07-06 20:55:53
-
2008-11-15 12:44:06
-
2008-11-15 12:41:39
-
2008-05-28 20:02:06
-
2008-11-18 18:42:45
-
2008-07-16 12:55:34
-
2012-12-04 13:12:32
-
2008-07-06 21:17:18
-
2018-12-14 17:01:15
-
2008-07-15 18:02:31
-
2008-07-06 20:57:45
-
2013-11-30 21:43:27
-
2013-12-03 20:28:27
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认