打印
[PIC®/AVR®/dsPIC®产品]

请问“no space for auto/param”怎么回事?

[复制链接]
1656|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dzdiy|  楼主 | 2017-6-29 15:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dzdiy 于 2017-6-29 15:51 编辑

Error   [1360] C:\Program Files (x86)\HI-TECH Software\PICC\9.83\sources\float.c; 86. no space for auto/param readTGS@sum

unsigned int readTGS(void)
{
        unsigned char i;
        unsigned int adresult[20],result,vt;
        unsigned long sum;
        double v;
        NOP();NOP();
        ADON=1;
        for(i=0;i<20;i++)
        {
                delay(5);                                        //等待模拟电压稳定
                do{;}
                while(GO);                                //AD转换是否空闲
                GO=1;                                        //开始AD转换
                do{;}
                while(GO);                                //等待AD转换完成
                adresult=0;
                adresult=ADRESH;                        //AD高2位结果
                adresult<<=8;
                adresult+=ADRESL;                //AD低8位结果
        }
        ADON=0;
        sum=0;
        for(i=0;i<20;i++)                                //20个结果相加
        {
                sum+=adresult;
        }
        result=sum/20;                                        //20个结果的平均值
        v=result;
        v*=4.8828125;                                        //5000mV/1024=4.8828125mV
        vt=(int)v;
        return(vt);        
}

系统WIN7 64位,环境MPLAB IDE8.87,编译器PICC9.83,单片机12F675,出现的这个错误是FLASH不够还是RAM空间不够?
   
沙发
Latin_newday| | 2017-6-30 11:48 | 只看该作者
RAM 空间不够,把sum改为int试试

使用特权

评论回复
板凳
dzdiy|  楼主 | 2017-6-30 17:23 | 只看该作者
Latin_newday 发表于 2017-6-30 11:48
RAM 空间不够,把sum改为int试试

改了,还是不行。是不是与64位系统有关系?

使用特权

评论回复
地板
Latin_newday| | 2017-7-3 09:30 | 只看该作者
dzdiy 发表于 2017-6-30 17:23
改了,还是不行。是不是与64位系统有关系?

你这个函数定义的变量貌似太多了,单片机数据空间经不起你几个这样的函数折腾。
int result[20],还有long、double数据,1个int型变量都可以存ad转换结果了。
建议先屏蔽其它功能,只做ad转换求平均值编译试试
可以了后面再添加其它功能。


使用特权

评论回复
5
yewuyi| | 2017-7-3 13:31 | 只看该作者
提示RAM空间不够。

12F675是一款资源非常少的超低端芯片,一般都用ASM来写程序,用C就比较奢侈了,你再如此定义和使用变量,那就是超级奢侈了。

使用特权

评论回复
6
dzdiy|  楼主 | 2017-9-12 15:34 | 只看该作者
yewuyi 发表于 2017-7-3 13:31
提示RAM空间不够。

12F675是一款资源非常少的超低端芯片,一般都用ASM来写程序,用C就比较奢侈了,你再如 ...

ASM很早就忘了。。。换了个低版本的PICC和XP系统编译就好了,高版本的PICC效率低。
感谢!

使用特权

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

本版积分规则

43

主题

194

帖子

1

粉丝