打印

请教,PIC单片机变量问题

[复制链接]
2003|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nevermore008|  楼主 | 2012-8-18 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
遇到一个问题,编译后变量265个,运行时候有个数一直为0(理论上不是0)。然后我删掉一部分变量,编译后255个,运行时候这个数正常。PIC单片机,这个型号给用户预留的有3.8K RAM使用,PICC编译器自动分配bank的。现在看来是变量太多了,请教一下怎么解决这个问题

相关帖子

沙发
NE5532| | 2012-8-18 17:44 | 只看该作者
只要编译器没有报警,应该不是太多的问题。他是0的时候你给他赋值也不行??

使用特权

评论回复
板凳
nevermore008|  楼主 | 2012-8-18 17:54 | 只看该作者
2# NE5532
我把一个数b赋给a,然后输出这两个数,b=0,a是一个非零常数。此时变量是265个。然后我把一组没有用到的变量删掉,再输出b就是正常等于a的数值。

使用特权

评论回复
地板
nevermore008|  楼主 | 2012-8-18 17:56 | 只看该作者
2# NE5532 删掉后的变量小于256个

使用特权

评论回复
5
NE5532| | 2012-8-18 19:36 | 只看该作者
你是不是说

b=0;
a=b;

然后你发现a!=0

????????????

使用特权

评论回复
6
nevermore008|  楼主 | 2012-8-19 07:39 | 只看该作者
5# NE5532 unsigned char a[20];
unsinged int b;
b = 0xEA61;
a[12] = b>>8;
a[13] = b&0xFF;
结果a[12] = 0,a[13] = 0x61;这时候变量总数为265;
删掉一部分未用到的变量后(255个),a[12] = 0xEA,a[13] = 0x61;

使用特权

评论回复
7
nevermore008|  楼主 | 2012-8-19 11:15 | 只看该作者
本帖最后由 nevermore008 于 2012-8-19 11:18 编辑

2# NE5532 看了一下存储地址,和反汇编代码,为什么会出现读取数据的地址和存储数据的地址不一样?

    a[n]存储地址          反汇编从该地址读取数据

a[12]
0x060
0xf60
a[12] = 0


a[13]
0x061
0x061
数据正常

a[14]
0x062
0xf62
a[14] = 0

a[15]
0x063
0x063
数据正常

a[16]
0x064
0xf64
a[16] = 0

a[17]
0x065
0x065
数据正常

使用特权

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

本版积分规则

3

主题

87

帖子

1

粉丝