松翰单片机 c语言例程 宏定义出错,AVR单片机c语言编程风格

avr单片机c语言的编程风格

AVR单片机c语言编程风格

作为一个初学者如何具有良好的程序设计风格呢?我想引用一个关于初学者请教编程

大师的故事让读者自己去领悟。

有一位编程大师,他写非结构化的程序,一位初学者刻意模仿他,也写非结构化的程序。

当他让大师看他的进步时,大师批评了他的非结构化程序:“ 对一位编程大师合适的东西

未必对一个初学者同样合适,在超越结构化之前,你必须理解编程之道。” 我个人认为作

为一个初学者应该踏踏实实的打好程序设计的基础,不要急功近利,舍本逐末。我走过不少

弯路,希望大家能和我一样能牢记编程大师的忠告:“对编程大师合适的东西未必对一个初

学者同样合适”。

AVR c语言优秀编程风格

1文件结构

模块化的程序应该是有一个很好的程序结构的。AVR C语言程序有两种用户文件,.c

程序文件,.h头文件,程序中编写过程中需要在.c文件中包含.h头文件。初学者往往出现

重复包含或者头文件包含错误的问题,我当时也时常为这种错误而发愁。下面以电机驱动例

程来给大家说明一下,优秀的编程文件结构。

成型的程序的文件个数基本上都是偶数,因为每一个结构化的函数定义.c文件都会对

应一个.h文件。main.c对应config.h。我们来看看各文件的包含关系。下面我们看看这些

文件的包含关系与内容:[推荐的文件包含顺序与关系]

所有.c文件都包含了config.h文件。如: #include "config.h"

在config.h 中有如下代码:

#include "delay.h"

#include "device_init.h"

#include "motor.h"

这样做就不容易出现错误的包含关系,为了预防万一,我们还引入了宏定义与预编译。

如下:

#ifndef _UNIT_H__

#define _UNIT_H__ 1

//100us

extern void Delay100us(uint8 n);

//1s

extern void Delay1s(uint16 n); // n <= 6 ,when n==7, it is 1.

//1ms

extern void Delay1ms(uint16 n);

#endif

第一次包含本文件的时候正确编译,并且#define _UNIT_H__ 1,第二次包含本文件

#ifndef _UNIT_H__就不再成立,跳过文件。

预编译还有更多的用途,比如可以根据不同的值编译不同的语句,如下:

//#pragma REGPARMS

#if CPU_TYPE == M128

#include

#endif

#if CPU_TYPE == M64

#include

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值