打印

C语言单片机程序提高代码效率的几种方法

[复制链接]
305|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
janewood|  楼主 | 2023-9-29 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码效率包括两个方面内容:代码的大小和代码执行速度。如果代码精简和执行速度快,
我们就说这个代码效率高。一般情况下,代码精简了速度也相应提上来了。单片机的 ROM
和 RAM 的空间都很有限,当编程时遇到单片机的 ROM 和 RAM 的不够用的时
候,或者程序要求较高的执行速度时,我们就得面对解决代码效率问题了。

提高代码效率的几种方法:

一、尽量定义局部变量
单片机程序的全局变量一般是放在通用数据存储器( RAM )中,而局部变量一般是放在特殊
功能寄存器当中。处理寄存器数据的速度比处理 RAM 数据要快,如果在一个局部函数里调
用一个全局变量将会多生成好几个代码出来。所以,少定义全局变量,多定义局部变量。

二、 改换运算符
通过改换运算符能达到精简代码的例子有:
1. 把求余运算表达式改为位与运算表达式。如: b=a%8 可以改为: b=a&7 。
2. 把乘法运算表达式改为左移运算表达式。如: b=a*8 可以改为: b=a<<3 。
3. 把除法运算表达式改为右移运算表达式。如: b=a/8 可以改为: b=a>>3 。
通过将乘除运算符更改为左移、右移运算符,可以提升程序的运行效率。

三、选择合适的数据类型
C 语言里选择变量的数据类型很讲究,变量的数据类型过小满足不了程序的要求,变量的数
据类型过大会占用太多的 RAM 资源。数据类型定义也影响程序代码的 大小。
如果把变量由 unsigned int 改成 unsigned char 。编译后,程序代码会 精简4 个字节。

四、直接嵌入代码
在程序里如果某个函数只调用一次,而又要求代码提高执行速度,建议不要采用调用函数的形式,
而应该将该函数里的代码直接嵌入主调函数里,代码执行效率会大大提 高。


使用特权

评论回复
沙发
AloneKaven| | 2023-9-29 22:04 | 只看该作者
可不可以用移位实现除以任意数啊

使用特权

评论回复
板凳
caoenq| | 2023-10-8 10:04 | 只看该作者
我记得在另一份文档里看过,说使用全局变量比使用局部变量效率高,原因是局部变量 涉及到出栈、入栈,所以效率低。这里又说局部变量效率高。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

1301

帖子

1

粉丝