[PIC®/AVR®/dsPIC®产品] 一种超怪的变量地址分配问题??

[复制链接]
1543|6
 楼主| UPS2015 发表于 2015-2-6 16:17 | 显示全部楼层 |阅读模式
我用的是MPLAB IDE v8.89 和 PICC 9.83 编译器,芯片是PIC16F886。下面我以一个变量的地址分配为例:
打开MPLAB中的file Registers查看当中某个变量的地址,如图中的ac_in_280v。其地址为0EC,对应单片机的寄存器为BANK1,因为如果该变量存放在BANK1中某些功能就实现不了,所以我想使这个变量存放在BANK0中。
我试过这样定义:                               bank0 unsigned int ac_in_280v;              但是编译一下,该变量仍然在BANK1中。
后来通过查了一下,发现在这个编译器下变量是随机分配的,然后就在一个无关紧要的地方加上了一句,if(ac_in_280v>dc_220v){},注:dc_220v存放在BANK0中,这个语句是废!话!
再编译一下,这样ac_in_280v这个变量就放到了BANK0中了。

问题来了:当我之后要增加一些功能,即要增加一些变量,ac_in_280v这个变量可能又回到BANK1中了,哎,每次更改一下函数都怕其他功能受影响,十分不安心:(

各位英雄好汉有没有什么好方法啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
zhimagod 发表于 2015-2-10 08:46 | 显示全部楼层
呃……会是这样吗?没注意过唉
把优化关掉试试呢?
 楼主| UPS2015 发表于 2015-2-10 13:25 | 显示全部楼层
zhimagod 发表于 2015-2-10 08:46
呃……会是这样吗?没注意过唉
把优化关掉试试呢?

可以把优化关掉的??
可不可以告诉我怎样子搞的
zhimagod 发表于 2015-2-11 08:22 | 显示全部楼层
在工程上右击,选Build Option...然后在compiler里面有个Optimization settings,剩下的知道该怎么做了吧
能力有限,只能帮你到这里了……
 楼主| UPS2015 发表于 2015-3-2 08:19 | 显示全部楼层
谢谢

将compiler里面的address qualifiers选项里面将默认的ignore,改成require就可以解决这个问题了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| UPS2015 发表于 2015-3-2 08:20 | 显示全部楼层
zhimagod 发表于 2015-2-11 08:22
在工程上右击,选Build Option...然后在compiler里面有个Optimization settings,剩下的知道该怎么做了吧
能 ...

谢谢您
兰天白云 发表于 2015-3-6 15:27 | 显示全部楼层
编译器把数据放哪个存储区问题不大,比较的时候会加上存储区切换
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

38

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部