新闻中心

EEPW首页>嵌入式系统>设计应用> 基于单片机C语言编程格式

基于单片机C语言编程格式

作者: 时间:2016-11-20 来源:网络 收藏
1. 凡是注解均用如下长度的字符数,此数是正常情况下在keil中A4纸的打印长度(105个字符),在word中设置左右边距为1.0cm。

//

本文引用地址://m.amcfsurvey.com/article/201611/318718.htm

2. 文件头的格式:

/*
* Company Name
* Address
*
* (c) Copyright 20xx, Company Name, City, State
* All Rights Reserved
*
*
* FileName :
* Version :
* Programmer(s) :
* Description :
*
*
*/

3. 函数头的格式:

/*
* FunctionName :
* Description :
* EntryParameter :
* ReturnValue :
*/

4. 文件结束格式:

/*
* End Of File
*/

5. 文件管理:

对于文件的管理来说,应把每一个程序模块分成两份。一个是C语言源代码,一个对应的头文件,且放在一个文件夹中。
例如,关于LCD1602的驱动模块,应该分为LCD1602.C和LCD1602.H,并放在LCD1602文件夹中。LCD1602.C中包含的是驱动程序
的源代码,尽量做到与移植无关;LCD1602.H中应该包含函数的申明部分、宏定义、全局变量的申明接管脚定义等,也就是
与移植相关的部分。
对于main.c函数应该对于config.h头文件。main.c中为应用程序的主程序部分,负责把各个模块联系起来;而config.h头
文件为整个系统的配置文件,里边除了编写不依赖于编译器的数据类型的定义外,还应该把整个工程需要的所有程序模块均包含进来,这样每一个程序
模块中都只需要包含config.h头文件即可。

6. 命名规则:

A. 函数命名:
函数名均由大写字母开头,单词之间也应用大写区别,为了移植以后程序模块的函数名不重复,应在程序模块的每一个函数名中加上模块名。如: LCDWriteData(),LCD表示液晶模块,WriteData写数据到液晶模块中。至于下划线的带与否,可以用与区分是函数的内部函数与否,也就是说,如果带下划线,表示为模块内部函数,应用程序可能不需要调用,模块内部调用;不带下划线表示为应用程序需要调用的函数。
B. 变量命名:
全局变量 -- 大写字母开头,并且加上文件名为变量前缀。
局部变量 -- 小写字母开头,
内部变量 -- 用简单字母表示,如:循环用i,j,k等;指针 - p,字符 - c,字符串 - s。

总结:形式参数 -- 在函数中应也小写开头;
自动变量 -- 小写字母;
静态变量 -- 大写开头;
外部变量 -- 文件名开头;
函数命名 -- 文件名开头。

7. 注解规则:

对于函数的注解均该应“//”来表示,而不是“//”。因为前者表示后,如果想把整段代码注释掉只要加上后者,但如果一开始就用了后者,再想注释掉整段代码就比较麻烦了。注解应该对齐,如果一行写不下,可以写在代码的前面一行,也可以在后面一行继续编写。

8. 代码编写格式:

对于代码的编写格式,将严格按照《c语言编程规范》来编写。

9. 宏的定义:

常数和宏定义要用全大写表示,单词之间可以用下划线分割开。十六进制要用“0x”开头,其后的字母一定要用大写表示。如果是定义的是常量不需要加括号,但是表示的是一个或更多的语句时应该加上括号,而要替代的表达式均应加括号。如:

#define KEY_FF (0x0F) // 常量定义,常量后不加括号,表达式加括号
#define KEY_BUF_FULL() (KeyNRd > 0) // 语句应加括号

10. 数据类型:

typedef unsigned char Boolean; // Boolean 位变量
typedef unsigned char uint8; // defined for unsigned 8-bits integer variable 无符号8位整型变量
typedef signed char int8; // defined for signed 8-bits integer variable 有符号8位整型变量
typedef unsigned short uint16; // defined for unsigned 16-bits integer variable 无符号16位整型变量
typedef signed short int16; // defined for signed 16-bits integer variable 有符号16位整型变量
typedef unsigned int uint32; // defined for unsigned 32-bits integer variable 无符号32位整型变量
typedef signed int int32; // defined for signed 32-bits integer variable 有符号32位整型变量
typedef float fp32; // single precision floating point variable (32bits) 单精度浮点数(32位长度)
typedef double fp64; // double precision floating point variable (64bits) 双精度浮点数(64位长度)

11. 局部变量:

一些程序模块会用到局部变量,这些局部变量只用于这个模块中,应将这些局部变量隐藏起来,不让别的文件看到。则应该在这写变量前加上static关键字实现。

12. 括号应用:

在多个运算符存在的条件下,应该应用括号,避免优先级的错误及阅读方便。如:

ssY = ssM * ssX + ssB; 应写成 : ssY = ((ssM * ssX) + ssB);

13. 真假定义:

当定义逻辑对立面时,基于原始的陈述,以宏的方式,首先定义其中一种逻辑情形,然后再定义相反的另一种情形。

#define TRUE (1)
#define FALSE (!TRUE)



评论


技术专区

关闭