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

发布者:创新火花最新更新时间:2016-05-11 来源: eefocus关键字:单片机  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)

关键字:单片机  C语言  编程格式 引用地址:基于单片机C语言编程格式

上一篇:浅谈单片机调试方法希望对初学者有帮助
下一篇:32位单片机c语言编程笔记

推荐阅读最新更新时间:2024-03-16 14:53

32位元MCU平台间的转移没有太多捷径
过去数年间,关于微控制器平台标准化的讨论不计其数,其目的是为了让不同MCU供应商产品间的转移更为容易,且在设计上无需做重大更动。然而,外围设备才是移转的真正核心,但所有讨论并未涉及外围设备的部分。 工程师在着手新设计之前会先审视功能需求,依此来决定采用什么电路以及控制这些电路所需的MCU内建外围。例如,工业级的人机接口设备需要支持LCD、按键、触控式屏幕与机器的通信、LED以及喇叭/蜂鸣器等,这些功能都需要MCU上的某些外围,例如用于通信的CAN控制器、用于触控式屏幕的ADC以及用于蜂鸣器的PWM计时器。 外围具备的功能越多所需的外部电路就越少,在某些情况下,还能减少需要撰写的程序码量。举例来说,在目的相同的情况下
[嵌入式]
一种利用串口51单片机远程升级 OTA
回馈网友的心态,发一篇关于OTA的贴,不喜勿喷,随着现在科技的发展,市面上出现很多带wifi,蓝牙等智能产品,为满足人们对产品可以不断完善,诞生了这种远程升级的技术。 在此之前呢,做过一个stm32远程升级的项目,这种片子的代码地址偏移性很好,load程序和应用程序划分好就可以,后来就想51这种便宜的mcu,能不能也实现这个功能呢,这就有了这次的实验。 废话不多说,先说说原理,OTA主要就三部分,一个是load程序,一个是应用程序,还有带升级的程序,三个分别存储在不同地址,我以flash 32K为例。如下图 为什么要这样划分地址呢。主要是因为51单片机的中断地址不能发生偏移(至少我不知道怎么偏移),所以我运行的程序
[单片机]
一种利用串口51<font color='red'>单片机</font>远程升级 OTA
基于PIC16C74单片机空调室内机软件的实现
单片机软件实现是单片机系统应用的重点,他是在硬件设计基础上实现程序设计的 重要环节 。单片机程序设计一般包括以下几个步骤:软件规划、流程图编制、代码编写。由于单片机 系统具有软硬件紧密结合的特点,因此在基于某种单片机系统的软件开发时,应充分了解该 系统实现的硬件环境,同时也应该在系统设计与硬件设计阶段,对软件设计有一个大体的规 划。因此,本文在介绍室内机控制器功能的基础上,重点讨论如何用软件实现该室内机的功 能。 1室内机控制器的功能 室内机控制器主要是驱动风门步进电机,接收来自红外遥控器设计的指令,进入到相应的工 作状态,并显示运行状态。 室内机控制器包括以下几个硬件电路模块:室内机处理器,室内机
[单片机]
飞思卡尔推出基于ARM Cortex-M系列的业界速度最快的微控制器
全新的功能完备的Kinetis X系列突破典型MCU的局限,提供更高的性能、更大的内存和同类最佳的开发支持生态系统 2011年11月8日,德州奥斯汀市讯 — 飞思卡尔半导体 [NYSE: FSL)推出新的Kinetis X系列,再次刷新了微控制器(MCU)的性能标准。该系列基于ARM® CortexTM-M内核,是业界速度最快的MCU。 X系列扩展了飞思卡尔Kinetis 32位MCU产品组合的高端部分,该系列的器件集合了出色的性能、丰富的内存和集成外设,并且具备庞大的开发支持生态系统。Kinetis X系列的目标群体是那些需要为其应用程序提供更高处理能力和内存但同时又希望保留MCU的成本效率、易用性和低功耗,而不改用微处理器解
[单片机]
基于PIC32嵌入式智能家居系统的设计与实现
引言 想象一下:在酷热的夏天或寒冷的严冬,当您工作一整天后带着疲惫的身躯在回家的路上时,空调已经开启并调节到了舒适的温度,柔缓的轻音乐已经为您播放,通风装置已经接通,室内的光线已经调节好,把您预先准备好的食物用微波炉加热。这样,您一回来就可以享受到清新的空气、美妙的音乐、舒适的环境,或许还有一杯热茶 这并不是在科幻电影里面出现的场景。事实上这样的生活已经近在咫尺。随着 IT产业的发展和人们生活水平的提高, 智能住宅 、 家庭自动化 等技术的发展正受到人们的密切关注,相关产品也在逐渐成熟。 设计概述 整个系统包含以下四个子系统: 安防子系统:该子系统中包括红外发射端,红外接收端。 家电控制子系统:该子系
[单片机]
基于PIC32嵌入式智能家居系统的设计与实现
单片机STC12C5A60S2控制AT24C04的程序(C语言
/************************************** 主芯片:STC12C5A60S2(1T) 工作频率:12.000MHz **************************************/ #include REG51.H #include INTRINS.H typedefunsignedcharBYTE; typedefunsignedshortWORD; sbitSCL=P3^4;//AT24C04的时钟 sbitSDA=P3^5;//AT24C04的数据 BYTEBUF ;//数据缓存区 BYTEcodeTESTDATA = { 0x00,0x11,0x22,0x33,0x44
[单片机]
52单片机Timer2的中断应用
/* This file is an example to use timer2 in mode 0 此程序用于定时器2模式0*/ #define MSB_reload_value 0x36 /* msb reload value exemple 高位重载值:延时60ms*/ #define LSB_reload_value 0x36 /* lsb reload value exemple 低位重载值*/ #include reg_c51.h //当前文件夹内的文件 /* * FUNCTION_PURPOSE: This file set up timer 2 in mode 0 (16 b
[单片机]
采用C8051F060单片机和现场总线CAN实现网络测控系统的设计
1 绪论 随着网络技术的不断发展,Internet把世界上分散的计算机系统、通信系统实现了互连,形成了共用数据网络,成功的实现了网络资源共享。而CAN总线技术使得控制系统向着分散化、网络化、智能化的方向发展,使控制技术与计算机以及网络技术更为紧密的结合在一起。随着CAN总线控制网络的进一步发展,控制网络与因特信息网络的结合,方便了对设备的远程监控、诊断和维护。 2 系统模型概述 本设计采用在CAN总线控制网络和因特网之间加入一个转换接口。这种方式是通过硬件来实现的,即在底层网络与中间监控层之间加入中继器、网桥、路由器等专门的硬件设备,使控制网络作为信息网络的扩展与之紧密集成。硬件设备可以是一台专门的计算机,依靠其中运行的软件完
[单片机]
采用C8051F060<font color='red'>单片机</font>和现场总线CAN实现网络测控系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved