打印

关于keil里面的设置问题,大小模式

[复制链接]
6375|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llllwwww|  楼主 | 2009-5-20 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在在用一种P89LV51RD2的单片机,其内部资源有1K的XDATA寻址的SRAM,想把它用起来,现在写的程序KEIL里面的RAM设置为了SMALL模式,程序可以正常运行,我现在只是简单的把这个改为了LARGE模式,发现程序能够正常编译,但是程序不能正常运行,重新改为SMALL模式后,又可以正常运行了,不知道是什么原因~程序里面大部分变量都是定义为DATA,有那位高手指点一下~谢谢了!

相关帖子

沙发
computer00| | 2009-5-20 10:30 | 只看该作者

是不是要先使能xdata的?有些芯片默认是不使能的

使用特权

评论回复
板凳
llllwwww|  楼主 | 2009-5-20 10:45 | 只看该作者

好像这个原因,汇编里面的代码不同!

使用特权

评论回复
地板
llllwwww|  楼主 | 2009-5-20 11:13 | 只看该作者

好象不是这个原因~

哪个使不使能都不能用大模式,我看了一下汇编的结果,发现大模式和小模式的编译结果不一样,奇怪了~~

使用特权

评论回复
5
huangqi412| | 2009-5-20 11:18 | 只看该作者

是不是有积存器要先操作?

使用特权

评论回复
6
llllwwww|  楼主 | 2009-5-20 11:31 | 只看该作者

是不是对片内的XDATA操作一次,哪个使能的寄存器要清零一次?

使用特权

评论回复
7
cooperate| | 2009-5-21 07:54 | 只看该作者

圈圈说的可能比较大

    另外 内部扩展的xram通常很小的,使用大模式编译时可能会溢出

使用特权

评论回复
8
walkrain| | 2009-5-21 09:50 | 只看该作者

溢出?

假设xram有1K,实际程序占用1000bytes,内部ram占用128bytes,那么small模式可以正常运行,但是切换到large模式就不行。
另外我在编译时也出现过这个问题,当时也没细想,后来采用的small模式,或者是采用large模式,但是变量声明加上data
知道详情的解答下吧

使用特权

评论回复
9
llllwwww|  楼主 | 2009-5-21 11:36 | 只看该作者

多谢大家回复!

我现在已经把哪个EXTRAM使能位清零了,数据手册上说是用内部的XDATA必须要清零,还是不行~~关键是现在我想利用其内部的1K的XDATA,因为P0,P2口都用在数据传输上了,不能访问外部XDATA,它内部还有768个BYTES的XDATA空间,可以不通过P0,P2口来访问的,但是用大模式不行,我想能不能这样,编译还是用小模式,关EXTRAM位,数据定义成XDATA?

使用特权

评论回复
10
computer00| | 2009-5-21 16:12 | 只看该作者

使能xram应该在启动代码里做

使用特权

评论回复
11
ayb_ice| | 2009-5-21 23:07 | 只看该作者

首选确认是否有片内XRAM

其次还要确认地址范围,有些芯片并不是从地址0开始,当然还要确认是否被使能...

使用特权

评论回复
12
llllwwww|  楼主 | 2009-5-21 23:27 | 只看该作者

启动代码?

回圈圈:又不是用的IAP或者ISP模式,我是直接接的仿真器来调试的,启动代码从何说起?莫不是要用到它的ISP功能?
回楼上:芯片内部确实是有1K的SRAM资源,EA=0时范围是从000H-2FFH,使能就是让EXTRAM=0嘛?
圈圈说在启动代码里面怎么做?

使用特权

评论回复
13
computer00| | 2009-5-22 00:53 | 只看该作者

仿真器?你先确认你的仿真器是否支持这个xram?

启动代码就是startup.a文件,你可以在里面增加使能XRAM的代码。

使用特权

评论回复
14
llllwwww|  楼主 | 2009-5-22 08:57 | 只看该作者

啊?加我邮箱~~祥谈!

我的邮箱是liwei19760410@126.com
仿真器怎么不会支持XRAM呢?汇编的结果都有了~
好的,我再试试~我感觉XRAM的指令都没起作用~~

使用特权

评论回复
15
llllwwww|  楼主 | 2009-5-22 09:21 | 只看该作者

我用的仿真器是伟福的WAVE-SP51的,标准的MCS-51仿真驱动DRIVER!

是不是标准的MCS-51不支持这个XRAM功能?我在KEIL里面选择的就是这个P89LV51RD2这个器件,仿真器的驱动是装在了KEIL里面的DEBUG里面,用的是MCS-51DRIVER来模拟仿真的,还有哪个STARTUP.A51这个文件我从来没有改过,不知道在那里可以改~~我觉得在我的初始化应用文件里面初始化一下还不是可以吗?
谢谢圈圈赐教了~~

使用特权

评论回复
16
computer00| | 2009-5-22 17:08 | 只看该作者

我估计是你的仿真器不支持片内XRAM的仿真,你烧到芯片去试

使用特权

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

本版积分规则

91

主题

450

帖子

2

粉丝