打印

针对小容量单片机程序优化方式

[复制链接]
291|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
janewood|  楼主 | 2023-9-29 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前单片机的市场竞争很激烈,许多应用出于性价比的考虑,选择使用程序存储空间较小(如1K,2K)的小资源8位MCU芯片进行开发。一般情况下,这类MCU没有硬件乘法、除法指令,在程序必须使用乘除法运算时,如果单纯依靠编译器调用内部函数库来实现,常常会有代码量偏大、执行效率偏低的缺点。

结合汇编与C编译平台,给大家介绍一种即省时又节约资源的乘除法算法。

乘法篇

单片机中的乘法是二进制的乘法,也就是把乘数的各个位与被乘数相乘,然后再相加得出,因为乘数和被乘数都是二进制,所以实际编程时每一步的乘法可以用移位实现。

例如:乘数R3=01101101,被乘数R4=11000101,乘积R1R0。步骤如下

1、清空乘积R1R0;

2、乘数的第0位是1,那被乘数R4需要乘上二进制数1,也就是左移0位,加到R1R0里;

3、乘数的第1位是0,忽略;

4、乘数的第2位是1,那被乘数R4需要乘上二进制数100,也就是左移2位,加到R1R0里;

5、乘数的第3位是1,那被乘数R4需要乘上二进制数1000,也就是左移3位,加到R1R0里;

6、乘数的第4位是0,忽略;

7、乘数的第5位是1&




使用特权

评论回复
沙发
heisexingqisi| | 2023-9-30 11:07 | 只看该作者
程序从模型上优化,精简化处理流程

使用特权

评论回复
板凳
heisexingqisi| | 2023-9-30 11:08 | 只看该作者
而不是简单的从语法优化,语法上编译系统会自动优化的,不能优化的是程序实现功能的模型

使用特权

评论回复
地板
tpgf| | 2023-10-21 11:49 | 只看该作者
多大容量的单片机支持乘法操作呢

使用特权

评论回复
5
xiaoqizi| | 2023-10-21 13:11 | 只看该作者
这种对乘法的处理对数据的位数有限制吗

使用特权

评论回复
6
八层楼| | 2023-10-21 13:47 | 只看该作者
这种算法需要将临时变量的位数加大吗

使用特权

评论回复
7
keaibukelian| | 2023-10-21 20:23 | 只看该作者
这样的算法其实循环次数还是很多的

使用特权

评论回复
8
wowu| | 2023-10-21 21:00 | 只看该作者
一般来说大容量的单片机也不会直接做乘法运算

使用特权

评论回复
9
paotangsan| | 2023-10-21 21:30 | 只看该作者
如果不在算法上优化 那就只能考虑硬件来处理了

使用特权

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

本版积分规则

46

主题

1080

帖子

1

粉丝