搜索
bottom↓
回复: 9

求助:pic16f877a用PICC编译程序时提示"BANK0"空间不够大,这是什么原因呢?

[复制链接]

出0入4汤圆

发表于 2009-4-15 07:51:45 | 显示全部楼层 |阅读模式
Error   [491] ; . can't find 0x48 words for psect "rdata_0" in segment "BANK0"
怎么跳到"BANK1"去呢?不是四个bank都能用的吗?怎么用其他的三个呢?大家帮帮忙啊,谢谢。

出0入0汤圆

发表于 2009-4-15 11:49:11 | 显示全部楼层
直接加限定词bank1 xxxxxxx  bank2 xxxxxxx

出0入4汤圆

 楼主| 发表于 2009-4-15 21:31:36 | 显示全部楼层
我是用C语言的哦,那个xxxxxxx是地址码?

出0入0汤圆

发表于 2009-4-15 21:42:16 | 显示全部楼层
应该是你要定义的变量吧

出0入0汤圆

发表于 2009-4-18 09:29:13 | 显示全部楼层
定义变量时如果不特别指出是在哪个bank里,编译器就会把它们全放在bank0,于是就有了LZ的问题……
解决办法如1楼所述,xxxxxxx就是你原来的变量定义。

出0入4汤圆

 楼主| 发表于 2009-4-18 19:51:49 | 显示全部楼层
比如可以这样定义:bank1 int code[]={};对不?谢谢各位帮助了。

出0入0汤圆

发表于 2009-4-18 20:04:04 | 显示全部楼层
可以类似于这样
unsigned int  Set_totalbuf,Cur_totalbuf,Cur_speedbuf,Set_speedbuf,Totalbuf,Totalbuf_int,testbuf_speed,testbuf_total;
bank1 unsigned char K_code,Zusealamct,Totalbuf_float,Xsloop,Cur_totalbuf_float;

出0入90汤圆

发表于 2009-4-18 22:16:35 | 显示全部楼层
那是因为PIC单片机是分页的,2K一页!默认时bank0,你想定义在bank1就用bank1 uchar xxx;

出0入0汤圆

发表于 2009-4-18 22:23:17 | 显示全部楼层
RAM空间可不是2K一页,2K一页的是ROM(FLASH)空间,RAM是256字节/BANK
PICC默认将变量放在BANK0,所以变量定义的多了,RAM也就不够用了。

使用限定词就可以解决这个问题,比如
unsigned int i, j;
BANK1 int x, y, z;
BANK2 char a, b, c;
BANK3 float m, n, t;

差不多就这意思了吧,好像MICROCHIP自己的MCC编译软件是不区分RAM BANK的(这种BANK相当令人讨厌!虽说初衷是好的)

出0入4汤圆

 楼主| 发表于 2009-4-19 00:34:59 | 显示全部楼层
受教受教,多谢了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 06:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表