单片机C语言程序该这样写!不是教科书上教的那样!.pdfVIP

  • 2
  • 0
  • 约2万字
  • 约 19页
  • 2017-06-03 发布于河南
  • 举报

单片机C语言程序该这样写!不是教科书上教的那样!.pdf

单片机C语言程序该这样写!不是教科书上教的那样!

Generated by Foxit PDF Creator © Foxit Software For evaluation only. 单片机C 语言程序该这样写!不是教科书上教的那样! 发表于:2009-07-22 15:15:38 写单片机程序也是程序,也要遵循写软件的一些基本原则,不是为了完成功能那么简单。我 看过的所有的C 语言单片机书籍基本都不注重模块化思想,完全是拿着C 当汇编用,简直 是在糟蹋C 语言! 如下问题,几乎所有的单片机书籍中都大量存在(更别说网上的和现实中的代码了,书上都 写的那么差劲,学的人能好到哪里去) : 1、变量到处定义,根本不管变量的生命周期是否合适(请回答:全局变量、局部变量、静态 变量、volatile 变量有什么区别联系?) 2 、变量名称极不规范,根本从名字上看不出来这个变量类型是什么,到底想干什么。 3、函数定义几乎不用参数,全都是void 4 、语句写的一点都不直观,根本就是在用汇编。比如:想取一个字长的高字节和低字节, 应该定义一个宏或是函数来做,如#define HIBYTE(w) ((BYTE)((DWORD)(w) 8)) ,以后 直接用HIBYTE()多直观,难道非得用(BYTE)((DWORD)(w) 8)代表你的移位操作的水平 很高吗? 5、最重要的一点,没有建立模块化的编程思想。一个程序往往要很多部分协同工作,需要 把不同的功能分离出来单独创建一个.h 和.c 的文件,然后在头文件中把可以访问的函数暴露 出来。 6、不思考曾经做过的程序是否还有改进的余地,写程序如果只是为了写而写,一辈子也长 进不了多少 欢迎拍砖! Generated by Foxit PDF Creator © Foxit Software For evaluation only. 为了证明我以上的观点,特此发一下我对c51 定时器的封装,此定时器可以同时设定多个定 时任务,定时精度由晶振精度决定。我的项目中一般用的是12MHZ 的晶振,最小定时在20ms 基本可以接受,再小的不能保证。 ///////////////////////////////////////// 头文件 ////////////////////////////////////////// #ifndef _TIMER_CONFIG_H_ #define _TIMER_CONFIG_H_ #include const.h #include oscfrequencydef.h #ifndef OSC_FREQUENCY #error undefined OSC_FREQUENCY #endif //#warning must be used in AT89C52 or later version because of idata #warning ******************************************************************************* *** #warning !! make sure MAX_TIMER_EVENT_NUM and TIMER0_BASE_INTERVAL has appropriate value!! #warning ******************************************************************************* *** /**************************************************************************** 定时中断每TIMER0_BASE_INTERVAL 毫秒产生一次,用户定义的中断时间必须是它的整 数倍 ****************************************************************************/ #define MAX_TIMER_EVENT_NUM 5 //可设置不同定时事件的最大个数(至少为2) #define T

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档