早期的18fxx2的内部有N多的bugs,具体的你可以看microchip有关18fxx2的戡误表(errata)。
简单说其中一个bug:程序在跳转时越过0x4000有可能有问题。所以编译器在默认状态下自动会帮你解决可能的bug——就是不用小于0x4000的空间。
解决起来也简单,在链接时加入-noerrata,这样编译器就认为你使用的是无bug 的芯片。你就能放下大的程序了。
当然,你要确定你使用的是无bug的芯片,出厂批号要大于0250,在片子上有标注。
以下这些内容在picc18的说明书中都有。
谢谢register2002!你真是个技术高超并且非常热情的人!
没想到大公司也干这种事,和我们这些干具体工作的小人物在一些问题上的做法也差不多。想必这个问题以后其他人也许会遇到,register2002先生的指导,会让大家从购买芯片时就会注意到这个问题,如果象PIC18F452 这样一个32K的芯片只能用一半,还不如买PIC16F87X了,况且很多时候选择18系列就是看中了其容量大的特点。此外,一定要记住,在LINKER设置中,一定要加入-noerrata参数。再次感谢register2002!
我也被这问题困扰着。我用MPLAB IDE v6.52 芯片PIC18F452,我选择project>Build options>project,在PICC18 complier选项中加入“-noerrata”后,能够多增加些内容进行编译,但还是跳不过0X4000。在Linker设置中怎么加入呢?
这是在没有加 -noerrata 时的提示:
Error[000]
BUILD FAILED: Thu Oct 21 09:25:31 2004
加了之后的提示:
Error[000]
BUILD FAILED: Thu Oct 21 09:28:18 2004