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

PIC数据存储器使用问题

[复制链接]
2492|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lhphorton|  楼主 | 2014-7-14 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC的数据存储器在使用紧张的情况下,是可以直接把变量定义到其他的存储区去的,如果不指定程序默认是定义在bank0 中的,例如unsigned char ABC;就在bank0中定义了一个变量ABC,但是unsigned char bank2 ABC;这样就定义了一个存储在bank2的变量ABC;
现在遇到一个问题,把某些变量定义在不同的存储区中,程序最终表现出来的结果不一样,试过好几次,只是简单的改变一下变量的存储区位置,结果不同,不知大家谁遇到过这种问题,个人感觉是存取数据的速度和反应时间有很大的差别,是寻址不一样导致的吗?还是有其他的使用注意事项没看到?
沙发
lanmp| | 2014-7-14 11:13 | 只看该作者
你说的结果不一样是指程序大小不一样还是逻辑关系都变了?大小不一样正常,要换Bank,有开销。

使用特权

评论回复
板凳
yewuyi| | 2014-7-14 11:29 | 只看该作者
1、切换BANK是需要代码的,而这当然要消耗时间,但这一般只消耗1~2个指令周期而已。
2、不管在哪个BANK,刨除切换BANKD的时间,读写RAM的时间都是一致的,你如果出现了巨大的时间差异,请从自身代码找问题。
3、在较新的PICC版本中,已经不需要你在定义变量的时候指定变量的BANK,C编译器会优先分配到BANK0,当BANK0溢出后会自动调整到后面的BANK中,当然,此时你强行使用BANK2这种关键字指定也可以。

使用特权

评论回复
地板
lhphorton|  楼主 | 2014-7-14 11:49 | 只看该作者
yewuyi 发表于 2014-7-14 11:29
1、切换BANK是需要代码的,而这当然要消耗时间,但这一般只消耗1~2个指令周期而已。
2、不管在哪个BANK, ...

我现在使用的是MPLAB IDE V8.80的, 编译器是picc9.50,单片机是16F系列的,这个编译器不能自动溢出调整,不知您用的是哪个版本的编译器?

使用特权

评论回复
5
yewuyi| | 2014-7-14 13:03 | 只看该作者
PICC9.8以上版本

使用特权

评论回复
6
xlsf1048| | 2014-8-6 14:29 | 只看该作者
mark

使用特权

评论回复
7
qmd01| | 2016-8-30 23:27 | 只看该作者
ddddddddddddd

使用特权

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

本版积分规则

5

主题

17

帖子

0

粉丝