一、程序中最好不要出现乘和除,影响效率。Aiver=Sum/16可以换成Aiver=Sum》》4;
二、低功耗就是精炼减少CPU工作时间。靠让CPU进入休眠来实现。只能用中断和复位可以唤醒休眠。
三、中断函数前加上__interruput关键字表明是中断函数式中断函数(注意是两个__),
四、#pragmati cvector=XXXX_VECTOR表明中断源。
五、代码优化问题,在时间和空间上找一个最好切合点,可以在Option—》Compiler->Optimzation-》C/C++选择优化级取向。Size or Speed
建议在调试时用LOW,在发布时用High.
六、函数命名采用模块名_功能名的方式。如; LCD_Init();
七、注释的时候对一个整体框架实现功能注释,还有关键语句注释即可。
八、用宏定义可以消除一些CPU的差异,如MSP430没有位操作,51有位操作。可以用
(MSP430) #defin LED_ON P2OUT |=BIT0;等价于(C51)#defin LED_ON=0;
九、用函数也可以消除CPU差异和硬件差异。函数命名不变,只要修改函数定义即可。这样就可以保持上层软件不变。
十、用Config.h的条件编译宏的方法来实现版本的管理。(参考网络文章《C条件编译和宏定义》)
/*指令 用途
# 空指令,无任何效果 #i nclude 包含一个源代码文件
#define 定义宏
#undef 取消已定义的宏
#if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码
#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif 结束一个#if……#else条件编译块 #error 停止编译并显示错误信息
*/
为了避免那些只能包含一次的头文件被多次包含,可以在头文件中用编译时条件来进行控制。例如:
/*my.h*/#ifndefMY_H
#defineMY_H……#endif
在程序中包含头文件有两种格式:
#include<my.h>
#include"my.h"
第一种方法是用尖括号把头文件括起来。这种格式告诉预处理程序在编译器自带的或外部库的头文件中搜索被包含的头文件。
第二种方法是用双引号把头文件括起来。这种格式告诉预处理程序在当前被编译的应用程序的源代码文件中搜索被包含的头文件,如果找不到,再搜索编译器自带的头文 件。
采用两种不同包含格式的理由在于,编译器是安装在公共子目录下的,而被编译的应用程序是在它们自己的私有子目录下的。一个应用程序既包含编译器提供的公共头文 件,也包含自定义的私有头文件。采用两种不同的包含格式使得编译器能够在很多头文件中区别出一组公共的头文件。