打印
[KungFu8位 MCU]

ChipON-IDE编译器效率实现说明

[复制链接]
1148|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
喵喵小星人|  楼主 | 2017-6-25 19:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、位取反:  

Flagbit0 = ~Flagbit0 ;//效率低
Flagbit0 = ! Flagbit0 ;//效率高
if(Flagbit0 ==0) //效率最高
{ Flagbit0 = 1;}
else
{ Flagbit0 = 0;}


沙发
喵喵小星人|  楼主 | 2017-6-25 19:05 | 只看该作者
二、位判断:
if(DCIN!=1) //效率低
if(DCIN==0) //效率高

使用特权

评论回复
板凳
喵喵小星人|  楼主 | 2017-6-25 19:06 | 只看该作者
三、定义
在RAM空间够的情况下,用结构体定义的位变量没有定义成字节型效率高,采用指针表达效率较低,尽量少用

使用特权

评论回复
地板
喵喵小星人|  楼主 | 2017-6-25 19:06 | 只看该作者
四、表达式
if(vot_value<(vot_temp-1)) //效率低
vot_temp=vot_temp-1;
if(vot_value<vot_temp) //效率高
公共表达式 提前获取结果到中间变量中。

使用特权

评论回复
5
喵喵小星人|  楼主 | 2017-6-25 19:07 | 只看该作者
五、逻辑运算
函数带返回值
dc_value=adc(2)/2; //效率低
dc_value=adc(2);
dc_value=dc_value/2; //效率高

使用特权

评论回复
6
喵喵小星人|  楼主 | 2017-6-25 19:07 | 只看该作者
六、简单结构体、结构联合体
1、结构体定义不应太复杂,建议简单数据集合,不包含大数组、结构体。
2、位结构体实现程序标记,实现置1、清零操作。
3、结构联合体,整数和字节组合实现AD值的获取。

使用特权

评论回复
7
喵喵小星人|  楼主 | 2017-6-25 19:08 | 只看该作者
七、嵌汇编实现
__asm
BANKSEL Var_1
MOV R0,#0x32
MOV Var_1,R0
CLR PSW,0
RLRC Var_1 ;;// 偏移量
ADD R0, #(_Arr_Var+0) ;;//操作地址
BANKSEL _Arr_Var
LD R1,[R0]
PAGESEL _Fun_A
CALL _Fun_A
PAGESEL $ ;//函数调用
__endasm;

使用特权

评论回复
8
yyj8902| | 2017-6-29 16:57 | 只看该作者
学习了,有时候碰到运到算法的时候,这些细节就管用了。

使用特权

评论回复
9
单片机菜菜| | 2017-6-29 18:44 | 只看该作者
总的来说,总结成一句话就是,不支持堆叠的操作,最好每次尽量少的寄存器参与,减少堆栈的次数吧。

使用特权

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

本版积分规则

16

主题

175

帖子

0

粉丝