用的18F6720,程序存储区大小是128kbytes。程序中有个地方用到了指针,结果运行到那个地方就出错。检查发现原因是,实际地址是0x1****,即24位的,而指针传递的却是0x****,即16位,看了《MPLAB_C18 C编译器用户指南》发现有个大存储模型的说法,即大存储模型下地址指针默认是可以在大于64k范围内寻址的。就按照命令形式设置成了大存储模型,此时可以正常运行了,但通过断点跟踪查看到指针仍然是16位的,即0x****的形式。虽然能正确运行了,但程序中用地址指针的地方较多,生怕哪个没检查到实际使用时出错就麻烦了,所以还是希望能在断点跟踪处看到指针以24位的形式传递指针。
请知道的帮忙指导一下,难道断点跟踪就看不到这个24位的指针地址吗?
另外,还有个问题,如果我选择了小存储模型,难道128kbytes的程序存储区就只能使用前64k了吗?不过我以前的程序都是小存储模型,每次烧录中提示的存储空间都是0~0x1****,即大于64k的。对于18F6720选择了小存储模型有什么影响呢? |