打印

请教24位地址指针和大存储模型

[复制链接]
1622|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
46621295|  楼主 | 2009-9-4 18:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的18F6720,程序存储区大小是128kbytes。程序中有个地方用到了指针,结果运行到那个地方就出错。检查发现原因是,实际地址是0x1****,即24位的,而指针传递的却是0x****,即16位,看了《MPLAB_C18 C编译器用户指南》发现有个大存储模型的说法,即大存储模型下地址指针默认是可以在大于64k范围内寻址的。就按照命令形式设置成了大存储模型,此时可以正常运行了,但通过断点跟踪查看到指针仍然是16位的,即0x****的形式。虽然能正确运行了,但程序中用地址指针的地方较多,生怕哪个没检查到实际使用时出错就麻烦了,所以还是希望能在断点跟踪处看到指针以24位的形式传递指针。
请知道的帮忙指导一下,难道断点跟踪就看不到这个24位的指针地址吗?
另外,还有个问题,如果我选择了小存储模型,难道128kbytes的程序存储区就只能使用前64k了吗?不过我以前的程序都是小存储模型,每次烧录中提示的存储空间都是0~0x1****,即大于64k的。对于18F6720选择了小存储模型有什么影响呢?
沙发
yewuyi| | 2009-9-6 09:30 | 只看该作者
编译通过一般就没影响

使用特权

评论回复
板凳
46621295|  楼主 | 2009-9-6 09:54 | 只看该作者
我用pragma romdata txtCode=0x*****的格式定义了数据库, 两次指定的起始地址不一样,两次编译都可以通过,一次能正常运行产品LCD显示内容正确,但一次显示就正确出现乱码,用断点跟踪查看到出错的那次指针传递的地址出错。

使用特权

评论回复
地板
46621295|  楼主 | 2009-9-6 09:56 | 只看该作者
2# yewuyi

能不能给点建设性的建议,编译通不过我肯定不会烧录程序,都是编译成了才烧录的,可结果是有的正常,有的就不正常。

使用特权

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

本版积分规则

56

主题

100

帖子

1

粉丝