下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机编程心得体会
1.无论什么时候我们都要以实际应用的角度去考虑程序的编写。
2.无论什么时候都不要让CPU白白铺张等待,尤其是延时(超过1MS)这样的地方。
3.设计相应驱动电路时候,应当认真阅读芯片的数据手册,了解每个引脚的驱动力量,以及整个芯片的驱动力量。
4.最重要的是,如何去释放CPU(假如是led每500ms闪耀一次,那么可以设置1ms为基准,定时器定时1ms后,进入相应操作使计数加1,推断到达500时,进入led(),这些函数执行的时间是相当短的,假如主程序中还有其他函数,则CPU会顺次往下执行,对于其它函数(有的话)也要实行一样的措施,保证其不堵塞CPU,若全部基于这种方法执行,我们的小系统照旧可以保证多个任务(多个函数)同时进展,系统的实时性得到了肯定的保证。
),这是写出合格程序的根底。
5.数码管显示,动态显示的亮度比静态显示要差一点,所以在限流电阻时应略小于静态显示电路中,动态扫描显示刷新频率最好大于50HZ,即每显示一轮的时间不超过20ms,每个数码管显示的时间不能太长也不能太短,时间太长会影响刷新率,导致总体显示呈现闪耀的现象,时间太短发光二级管的电流导通时间也就短,会影响总体的显示亮度,一般掌握在1ms左右最正确。
6.模块化编程,初学单片机的时候(开头是C语言),是接触一些芯片实现独立的功能,如DS1302,DS18B20等,程序也不会很大,所以全部的程序都放在一个文件里面。
随着学习的逐步深入,程序也愈来愈大,这给调试带来了肯定的困难,后来了解了模块化编程这个概念,运用之后大大地改善了程序的可读性和可移植性。
下面简洁的介绍
C语言源文件*.c略微比拟大的设计都会涉及到众多模块,我们可以被各自独立的模块封装到不同的*.c源文件中,该文件中定义模块函数,申明局部一般不放入
C语言头文件*.h把各个模块的的申明文件(说模块的接口比拟适宜),放在相应的.*.h头文件中,相应的模块对应相应的.h头文件.形如
#ifndef__DS1302_H__
#define__DS1302_H__
/*模块ds1302.c文件中函数等的申明文件*/
#endif
//上面几个条件编译和宏定义是为了防止重复包含
这样我们就把各个模块的接口函数都引出到各自的头文件中,然后在主程序中调用这些模块的*.h头文件即可。
这点和C++中的类很像。
在数据类型定义的时候,有时候用typedef会取得很好的效果。
说到模块化编程,以前曾看过不少大虾的例子,他们的源文件和输出下载文件是放在工程文件夹下地不同文件夹中,如源文件放在src文件夹中,输出*.hex放在output文件夹中,这样整个工程就更显得清楚明白。
7.多任务程序,这个概念在前面也有提到,就是充分地利用CPU来实现多任务的前后台操作,相当于自己用程序构造一个基于前后台的多任务操作系统,换句话说就是通过定时器中断合理地安排CPU资源来响应不同的任务。
多个任务需要CPU照顾的频度不一样,我们选择最快的那个频度来作为定时器的节拍(通常为最小公倍数,这样便利定时器安排),然后通过定时器分频,即满意各个任务的响应节拍。
比方任务A频度为50HZ,任务B为40HZ,这样我们就可以去定时器中断节拍为200HZ,每个任务设定一个节拍掌握计数器C,当C计数4次时,任务切换到A,计数到5次切换B
voidTime
...
单片机编程心得体会(二)
以下是笔者在C51编程过程中的一点心得体会。
1.尽量使用短的数据类型。
如uchar、bit、uint,有时需要对uchar数据类型进展按位访问,可将其定义在bdam区间。
慎重使用float数据类型,有时它可以转化成int数据类型来代用。
2.娴熟指针的使用。
例如Uint是由双字节拼接而成,有时用来存放16位地址。
猎取其高八位和低八位地址的方法为:只要用uchar*p;p=int0,则*p表示其高八位,*(++p)表示其低八位,特别便利。
3.使用自加、自减的方法为:a++;a-,它会调用INC、DEC指令,效率远比a=a+1;a=a-l高。
4.循环:使用uchar。
a;for(a=1;a:8;a++)时,条件a=8编译后代码比拟繁琐,一可用for(a=8;a;a~)来代替,充分利用单片机的为零跳转指令。
同样,在do{}while()中也适用。
5.当多个条件判别时,if(ABCD),只要第一个条件A不符合,程序是不管后面的条件的,所以可把最可能出错的条件排在前面处理。
6.子程序的参量。
调用子程序时若带参量,程序会开拓存储空间(如Rn)来存放参量,这个空间是可以充分利用的。
如延时子程序voiddelay(uehartime){while(time一);J,可以延时相当短的时间。
7.空指令NOP在C中用_nop一0实现,定义在中。
8.求余运算“%”操作是调用子程序来完成的,效率低。
假如是求2的n次方的余数,可使用位操作来代替。
如:a=a%8可改用8=a7,效率明显提高。
同样2xN的乘除运算可用移位来实现。
如:a=a*2;b=h/2可改为a=a《l;b=b》l。
9.使用构造体类型数组时,在查找第n个值时要利用乘法指令(序号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度电力工程设计著作权许可合同2篇
- 二零二四年度技术转让合同转让条款及转让价格
- 医疗废物转运车合同(2篇)
- 取消婚约协议书
- 二零二四年度林地木材采伐与销售合同
- 存款合同书范本协议样本
- 物流运输与标准制定协议
- 物流资源创新合作合同
- 水厂清水池施工方案
- 出租车合作协议格式模板
- 《房颤的研究进展》课件
- 会议室改造实施方案
- 《安全员日常工作》课件
- 2024年资格考试-PMP项目管理师考试近5年真题集锦(频考类试题)带答案
- 吉林市2024-2025学年度高三第一次模拟测试 (一模)英语试卷(含答案解析)
- 13.2 在奉献中成就精彩人生(课件)-2024-2025学年统编版道德与法治七年级上册
- 2024秋期国家开放大学《公共政策概论》一平台在线形考(形考任务1至4)试题及答案
- 2024转向节设计标准
- 《习作:-即景》说课(课件)五年级上册语文部编版
- 2024年高考英语全国II卷试卷本全解析课件
- 全国统一规范电子税务局概况介绍及操作辅导
评论
0/150
提交评论