打印

紧急求助!!关于keil_c模式选择后出现不同现象的问题求解

[复制链接]
2919|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小心有毒|  楼主 | 2008-9-22 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠你们好,小弟在使用keil_c编译后出现以下问题,由于自己找不到问题原因所在,请各位大侠赐教:

问题是:当我在small 模式下编译通过后,把hex文件写进芯片,并通过硬件能正确显示(显示有12864LCD)

    但同样的程序我选择large模式编译通过后,再把hex文件写进芯片,但这时硬件却什么也不显示了,也就是白屏。请问这是什么原因呢!!真是搞不明啊!!!

    我用的是伟邦的w77e058芯片,在keil_c里选择的device是w77e58.keil_c是用C51V801**版!!

希望那位大侠能搭救小弟一下,谢谢!!!



跟进:
    问题有头绪了,前几次我是用**版编译的,但当时看不到它们所占用的空间,现在用了一个注册版编译,发觉效果如下:在small模式下:Program Size: data=223.1 xdata=652 code=30899由于在small下不用XRAM,所以不用管Xdata的数据,而code也在32K范围之内(w77e258是32K)这样就一切正常,所以能正常显示;在large模式下:Program Size: data=143.1 xdata=732 code=34511虽然data和xdata都没超出范围,但code已经超出32K了因为我在编译时两个都选择large都是64K的,所以编译能通过,但写进芯片的话可能就出问题了(芯片只有32K)。所以不能正常显示了。这是我下午初步检查的结果,至于是否是这个原因有待进一步检查。同时也谢谢楼上的兄弟花出宝贵的时间回贴,在这里再次谢谢回贴的朋友!!!

PS:我想问一下,怎么在这里找不到回复的按钮,想回复跟贴都不行,只能在原贴编辑了!!

相关帖子

沙发
2shift| | 2008-9-22 16:22 | 只看该作者

large模式下,变量的存取在外部ram,

这时候,你没有允许77e58的内部的那些movx ram的话,就会出错的

使用特权

评论回复
板凳
小心有毒|  楼主 | 2008-9-22 17:49 | 只看该作者

紧急求助!!关于keil_c模式选择后出现不同现象的问题求解


跟进:
    问题有头绪了,前几次我是用**版编译的,但当时看不到它们所占用的空间,现在用了一个注册版编译,发觉效果如下:在small模式下:Program Size: data=223.1 xdata=652 code=30899由于在small下不用XRAM,所以不用管Xdata的数据,而code也在32K范围之内(w77e258是32K)这样就一切正常,所以能正常显示;在large模式下:Program Size: data=143.1 xdata=732 code=34511虽然data和xdata都没超出范围,但code已经超出32K了因为我在编译时两个都选择large都是64K的,所以编译能通过,但写进芯片的话可能就出问题了(芯片只有32K)。所以不能正常显示了。这是我下午初步检查的结果,至于是否是这个原因有待进一步检查。
    同时也谢谢楼上的兄弟花出宝贵的时间回贴,在这里再次谢谢回贴的朋友!!!
    希望更多的朋友一齐来讨论问题。谢谢

使用特权

评论回复
地板
小心有毒|  楼主 | 2008-9-23 09:27 | 只看该作者

紧急求助!!关于keil_c模式选择后出现不同现象的问题求解

思路又断了,我把程序减到只有7K多,用large模式(指memory model)编译后
Program Size: data=29.1 xdata=23 code=7354,还是不能显示!!!用small模式是:Program Size: data=50.1 xdata=2 code=7130(其中有两字节的xdata数据是我另外定义的)这样又可以正常显示了!!我已经设置了w77e058中的PMR寄存器了,不是说只要置PMR中的DME0(0位)为1就可以访问它片上那1K的SRAM了吗??

使用特权

评论回复
5
呆板书生| | 2008-9-23 12:25 | 只看该作者

硬件没有外部RAM为何用large模式

large模式是为外部RAM而设的,

使用特权

评论回复
6
小心有毒|  楼主 | 2008-9-23 14:23 | 只看该作者

回复:硬件没有外部RAM为何用large模式

五楼兄弟可能说得对。经过我反复的调试,发觉只要用compact或large模式都
都显示不了。可能就是编译器把部分数据写到外面去了(芯片外面)。这我也就有了一个新的问题:也就是w77e058它本身自带一个1K的外部存储器(用MOVX操作)也就是说这个外部存储器是集成在芯片内部的。按道理我用这两种模式的话也可以把数据写进里面啊。这又出现了两种情况:一是使能这个区域(置PMR的DEM0位为1:PMR=0X01;)就可以使用这个片上的外部存储器,我试过可以,在small模式下能把xdata的数据显示出来。二是不使能这片区域(即片上那1K和外部存储区不可用)那么同样的数据就显示乱码了(同是在small模式下)。

这我就不明了,因为芯片已经集成了一个1K的外部存储器,我不用自己再外接一个吧,为什么这种情况就不能用compact和large模式了呢?是不是keil编译器只默认compact和large这两种模式就一定是外接的外部存储器呢,不管你片上有没有集成。

使用特权

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

本版积分规则

11

主题

37

帖子

0

粉丝