单片机实用编程技巧值得习学习.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机实用编程技巧值得习单片机实用编程技巧值得学习

单片机软件系统 设计教程 基础要求 熟练运用C语言编程。 熟练掌握和运用一款单片机。包括硬件结构、寄存器、外设、了解基本汇编指令等。 熟悉一款集成开发环境及编译器。 独立编写并调通2000行以上的小型程序。 一、如何编写高质量软件 合理划分函数功能,合并常用函数 严格的函数、变量命名方法 合理划分软件层次。如硬件隔离层、驱动程序层、功能函数层、应用层。 合理运用宏定义,提高程序可移植性 经常查看反汇编代码,练习优化指令。 函数划分 常用的功能集合,可以合理合并成一个函数 利用参数传递,将多个函数合并。 例如:某菜单需要将选中的菜单条反色显示,因此需要2个中文显示函数: DisplayString(char *ptr,char x,char y); DisplayStringInvert(char *ptr,char x,char y); 可以合并成一个函数 DisplayString (char *ptr,char x,char y,bool InvertFlag); 注意函数过分合并会造成运算性能下降。 函数与变量命名 严格按照 模块名_功能名 的方法命名,按正确的英文(甚至拼音也可)命名 单词首字母大写 例如:ADC_CailbrateZero() CPU_SleepDelay(int Time_ms) Flash_WriteWord(int Addr,int Word) 软件层次划分 合理划分软件层次,将使程序结构清晰 层次良好的软件,移植性强 对软件开发者来说,便于管理和维护,甚至可实现“代码免维护” 大大提高开发速度。 例:在某液晶上需要做中文菜单、数字显示、波形显示、滚动条等。为该应用编写液晶驱动函数。 LCD驱动层划分范例 每一层含义明确,功能完整独立 每一层只调用其下一层的函数,禁止跨层调用函数。 所有变量对于非其它层函数不透明。禁止跨层使用全局变量 层次划分越多,执行效率越低 更改或更换任何一层的函数,不影响其它层函数的执行。 合理运用宏定义 1.用宏定义作硬件隔离 #define LED1_POUT P1OUT #define LED1_PDIR P1DIR #define LED1_BIT (BIT2) /*更换IO只需改以上3行*/ #define LED_ON LED1_POUT |= LED1_BIT /*亮*/ #define LED_OFF LED1_POUT = ~LED1_BIT /*灭*/ /*更换单片机只需修改以上2行*/ 用宏定义自动运算 #define OSC (1000) #define BAUD (9600) ... UBR00 = ((long)OSC*1000/8)/BAUD; UBR10 = 0x00; ... #define TIMER_PERIOD 12000 ... TH1=(unsigned int)(65536-TIMER_PERIOD)/256;/*51单片机*/ TL1=(unsigned int)(65536-TIMER_PERIOD)%256; ... 用宏定义作编译开关 用宏定义作功能开关 #define ON 1 #define OFF 0 #define HI_LO 2 #define LEV_2 1 #define NONE 0 #define MINORCUT OFF /*是否打开小值切除功能*/ #define RS485 ON /*是否打开RS-485通讯功能*/ #define DAC ON /*是否打开变送功能*/ #define DEFAULT OFF /*是否打开参数备份功能*/ #define ALARM_MODE NONE /*报警模式 NONE=无报警 LEV_2=双限 HI_LO=高低限 */ #define OFFSET ON /*是否打开偏移补偿功能*/ #define KEYTONE ON /*按键音*/ 程序优化 打开编译器自带的优化选项。注意高级别优化会删除部分“冗余”代码,或改动程序结构,应注意挥发性变量(volatile) 查看反汇编代码,看汇编代码是否有冗余操作,合理修改。 二、软件结构 如何让CPU尽可能多地执行多项任务 如何让CPU尽可能快地响应各个事件 如何让程序尽可能少地占用RAM 如何让程序具有尽可能强的可扩展性 如何让编出的程序尽可能通用 如何减少编程工作量?如何减少错误概率和调试工作量

文档评论(0)

skewguj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档