- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 如何让程序具有尽可能强的可扩展性 如何让编出的程序尽可能通用 如何减少编程工作量?如何减少错误概率和调试工作量
您可能关注的文档
- 十年拼搏百年执着十年拼百年执着.doc
- 十九 5-3、4相似矩,对称矩阵的对角化十九 5-3、4相似矩阵,对称矩阵的对角化.ppt
- 升降架施工方案升降架施方案.doc
- 医院感染知识竞赛医院感知识竞赛.ppt
- 十堰居家养老服务网络中解决方案十堰居家养老服务网络中心解决方案.doc
- 十大产品中看不中用 竟两款苹果电脑十大产品中看不中用 竟有两款苹果电脑.doc
- 华东《建设项目质量控制2016年秋学期在线作业(一)华东《建设项目质量控制》2016年秋学期在线作业(一).doc
- 华东师范版九年级历史期试题末试题.doc
- 华东师大版七年级数学上5.1_数据的收集说课课件华东师大版七年级数学上册5.1_数据的收集说课课件.ppt
- 华东政法大学研究生教育要学科介绍华东政法大学研究生教育主要学科介绍.doc
文档评论(0)