关于如何提高单片机执行效率的一些建议.doc
《关于如何提高单片机执行效率的一些建议.doc》由会员分享,可在线阅读,更多相关《关于如何提高单片机执行效率的一些建议.doc(4页珍藏版)》请在三一文库上搜索。
1、关于如何提高单片机执行效率的一些建议首先,什么是执行效率?我们平常所说的执行效率就是使用相同的算法在相同输入条件下完成相同计算所产生的系统开销,目前来说一般会更多关注执行时间方面的开销。所有语言编写的代码最终要运行,都要转化成机器码。在更短的时间内完成相同的事那么效率就高。关于如何提高C语言程序的执行效率,有如下建议:1.尽量避免调用延时函数没有带操作系统的程序只能在while(1)里面循环执行,如果在这里面调用大量的延时这样会很消耗CPU的资源,延时等于是让他在这歇着不干事了,只有中断里面的才会执行。如果仅仅是做一个LED一秒闪烁一次的程序,那么很简单,可以直接调用延时函数,但是实际的项目中
2、往往在大循环里有很多事要做,对于实时性要求较高的场合就不行了。为了避免使用延时,可以使用定时器中断产生一个标志位,到了时间标志位置1,在主程序里面只需要检测标志位,置1了才执行一次,然后清标志。其他时间就去做别的事了,而不会在这等待了。最好的例子就是数码管的显示,使用中断调显示,在我们的例程里面有。然后是那个按键检测的,一般的程序都是做的while(!key)等待按键释放,如果按键一直按着,那后面的程序就永远得不到运行死在这了,其实可以做一个按键标志检测下降沿和上升沿就可以避免这个问题了。2.写出来的代码要尽量简洁,避免重复在10天学会单片机那本书上看到他写的数码管显示那部分代码,选中一个位,
3、然后送数据,再选中一个位,再送数据,依次做完。代码重复率太高了,不仅占用过多的类存,而且执行效率差可读性差,仅仅是实现了功能而已,实际的编程可以做一个循环,for循环或者while循环。这样的代码看起来更有水平。3.合理使用宏定义在程序中如果某个变量或寄存器经常用到,可以使用宏定义定义一个新的名代替他,这样的好处是方便修改,比如液晶的数据端总线接的P1,现在想改到P0,那么只需要修改宏定义这里就可以了,编译器编译的时候,他会自动的把定义的名替换成实际的名称。4.使用尽量小的数据类型比如某个变量的值范围是0-255,那么就定义成unsigned char,当然也可以定义成unsigned int
4、,但是这样造成了内存的浪费,而且运算时效率要低一点。如果数据没有负数的话,尽量定义成无符号的类型。应尽量避免定义成浮点型数据类型或双精度(占8个字节)类型,这两种类型运算时很消耗CPU资源。比如采集电压范围是0-5v,精确到小数点后三位,可以把采集到的数据扩大1000倍,即使最大也才到5000,然后多采集几次做个滤波算法,最后电压算出来后只需要在第一位后面加个小数点就可以了,变量定义成unsigned int 型变量就没问题了。5.避免使用乘除法乘除法很消耗CPU资源,查看汇编代码会发现,一个乘除法运算会编译出10几甚至几10行代码。如果是乘以或除以2的n次方,可以用来实现,这种移位运算在编译
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 如何 提高 单片机 执行 效率 一些 建议
链接地址:https://www.31doc.com/p-3388236.html