打印

PIC单片机代码效率

[复制链接]
1507|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
maicon_lb|  楼主 | 2012-8-9 21:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在PIC单片机里写了以下的程序,
for(i=0;i<13;i++)              
    {  
       if((gSyn_code_Comp&(0x8000>>i))==0)
                       BarkerCodComP1++;
                   else BarkerCodComP2++;     
    }
我用的芯片计算速率比较慢,用上面那语句的时候转换成汇编指令比较多,会造成系统出错。大家能不能帮我看看改成什么写法可以更快的运算。谢谢大家了
沙发
Ryanhsiung| | 2012-8-10 08:13 | 只看该作者
16位的运算,8位的片子么???
要不直接做个结构体,来判断 gSyn_code_Comp.bit1==0;
gSyn_code_Comp.bit2==0;
gSyn_code_Comp.bit3==0;
这样会快点

使用特权

评论回复
板凳
yewuyi| | 2012-8-10 09:06 | 只看该作者
for(i=0;i<13;i++)              
    {  
       if((gSyn_code_Comp&(0x8000>>i))==0)
                       BarkerCodComP1++;
                   else BarkerCodComP2++;     
    }
-------------------
另开一个变量Buf=0x8000>>i;
另外,你指的汇编指令比较多是什么意思?怎么个多法?为何汇编指令多就会出错,这又是什么意思?

使用特权

评论回复
地板
maicon_lb|  楼主 | 2012-8-10 23:08 | 只看该作者
2# Ryanhsiung 是32位的。问题已经解决啦。我用的最土的if goto 语句,虽然写起来看着很长,但是运行起来在芯片里跑的很短。
我提的问题你都会帮我回答一下,辛苦了,分给你吧

使用特权

评论回复
5
maicon_lb|  楼主 | 2012-8-10 23:11 | 只看该作者
3# yewuyi 每一条C语言都可以转换成用汇编语句实现啊,比如说某种C语句,看起来可能就一局,但是用汇编实现起来可能要好多句。而有点C语言看着长,用汇编反而就只有很少的几句

使用特权

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

本版积分规则

2

主题

31

帖子

0

粉丝