打印
[国产单片机]

关于低功耗问题(用C编写和用汇编有区别吗)

[复制链接]
8897|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
浚凡小子|  楼主 | 2021-7-24 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近我用一国产单片机来驱动三位数码管显示(有用的是阻容降压供电方式),遇到功耗过高的问题。造成数码管显示闪动,整机以上电工作几秒就复位了。(声明一下,相同的硬件,之前用的台系和进口的单片机没有这个问题)。我是用C写的代码跟之前台系和进口的基本一样(除相关寄存器设置不同)。此芯片提供内部16M高频晶振。我降低了相关频率来工作(因为仿真器上面看不出问题,只有一次一次的试整机,结果都一样)。最后没办法,我改用汇编来写,相关的配置跟C一样,结果就没有这个问题了。所以觉得很奇怪,特发一文想跟大家一起讨论一下,C代码 和汇编代码对功耗真有很大区别吗?

使用特权

评论回复

相关帖子

沙发
资深技术| | 2021-7-24 20:56 | 只看该作者
C代码和汇编代码对功耗没有区别。
但是有个运行效率问题,因为这个问题有可能在扫描显示方式下出现数码管显示时间不同,这会造成功耗增大。因没实际测试,只是猜测供参考。

使用特权

评论回复
评论
zlf1208 2021-7-28 11:15 回复TA
正解 
板凳
coody| | 2021-7-25 10:00 | 只看该作者
对于MCU全速运行,C代码和汇编代码对功耗没有区别。
不同厂家的MCU工作电流不同,你测下电流就知道了。
阻容降压,等于是恒流供电,所以电流一定要留点余量。比如工作电流最大是20mA,则恒流值最少为25mA或以上。

使用特权

评论回复
地板
chineseboyzxy| | 2021-7-25 13:54 | 只看该作者
一个汇编写的电子钟程序,4位数码管,把显示程序放主程序里循环和放中断里显示,电流差了好几个毫安,在中断里显示电流大。什么原因?难道就因为开了一个定时器就多了几毫安?

使用特权

评论回复
5
henangongda123| | 2021-7-25 18:38 | 只看该作者
chineseboyzxy 发表于 2021-7-25 13:54
一个汇编写的电子钟程序,4位数码管,把显示程序放主程序里循环和放中断里显示,电流差了好几个毫安,在中 ...

差不多,开定时器、开中断,都增加单片机负担

使用特权

评论回复
6
henangongda123| | 2021-7-25 18:45 | 只看该作者
C写和汇编写,区别就只是C用的是软件去汇编,而汇编是用人脑自己去汇编,现在的编译器效率都很高,感觉还没到你说的会引起功耗变化巨大的程度,个人感觉还是你C程序写的有问题。

使用特权

评论回复
7
oufuqiang| | 2021-7-25 22:39 | 只看该作者
你的显示扫描程序的停留时间长短会显著影响整体功耗的。所以你要看看每个数码管被点亮的时间。可以适当缩短一点降低功耗

使用特权

评论回复
8
jyrpxj| | 2021-7-28 17:17 | 只看该作者
测一下输出波形,肯定不一样。

使用特权

评论回复
9
单模先声| | 2021-8-10 08:00 | 只看该作者
电路的漏洞被硬生生地说成了单片机的问题,请问楼主是哪个研究所的所长啊?被世人遗忘的顶级天才?

使用特权

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

本版积分规则

21

主题

86

帖子

1

粉丝