基于c语言开发单片机程序,基于单片机C语言编程格式

1. 凡是注解均用如下长度的字符数,此数是正常情况下在keil中A4纸的打印长度(105个字符),在word中设置左右边距为1.0cm。

//

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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值