打印

keil 能仿真XRAM吗?

[复制链接]
5507|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 刘前辈 于 2010-10-3 11:42 编辑

麻烦各位高手,我的仿真器不支持带有片内XRAM的单片机,像P89C51RD2之类。仿真器厂家建议我先用keil 仿真,通过后烧写即可。(跳过单步断点调试)可是我发现 keil 不能仿真XRAM,是吗?(只能调试在片256字节RAM)。
        是不是我太笨了?请教高手。

相关帖子

沙发
jt4117| | 2010-10-3 13:21 | 只看该作者
可以仿真。 你要选择芯片有外扩Ram的型号才行。
定义成 xdata类型的就行了。
还有你的ID,与水平不符。 bs!!

使用特权

评论回复
板凳
原野之狼| | 2010-10-3 14:31 | 只看该作者
可以仿真的

使用特权

评论回复
地板
刘前辈|  楼主 | 2010-10-3 18:40 | 只看该作者

任何仿真器都可以仿真外部XDATA。我说的是片内XRAM。

本帖最后由 刘前辈 于 2010-10-3 18:51 编辑

好像诸位没理解我的问题,keil 仿真的是外部XDATA,而不是内部XRAM,例如P89C51RD2,带有768字节片内XRAM,我选了89C52RD2,也勾选XRAM,可是调试状态只有外部XDATA( 0x000000——,看不到内部768字节(0--0x2FF )XRAM。

keil-4 就有d:00-0ff,  d01:00-0ff,  d02:00-0ff,……,多个内部RAM区,但是操作起来不独立的,好像写d00:时,d0x:多个页也同时被改写。显然不对。

使用特权

评论回复
5
jt4117| | 2010-10-3 18:56 | 只看该作者
51框架内置RAM最大就256, 地址0x00开始。
有些芯片厂家考虑到51的这个局限,就在芯片内部增加了XRAM。它其实跟你通过P0口,P2口外接芯片的XRAM是一样的。只不过用的时候不会影响P0,P2口的值!!!!
芯片资料里会有介绍,如果硬件外扩了XRAM,需要如何设置寄存器。防止内外冲突。

使用特权

评论回复
6
刘前辈|  楼主 | 2010-10-3 20:25 | 只看该作者
本帖最后由 刘前辈 于 2010-10-3 20:32 编辑

LS先谢了。继续请教jt4117 :芯片原理、手册意思是这样。关键 keil 软件仿真是如何显示的?我的硬件仿真器上有明确显示 RAM (L)(标准51 低256字节),RAM(H )(用MOVX 访问的高0x2FF 字节)。含义很清楚。
    因此我觉得keil 也至少一样应该显示0x000~ 0x2FF,——无论我的写入操作正确与否,但是它没有这个显示区呀。它只有XDATA:0x00000~0x0FFFF。这显然是指的外部扩展XDATA(6264什么的,用MOVX @   操作的)。

keil 调试窗口中:D:, idata, xdata, pdata,都是51标准存储器显示标识 ,XRAM显示输入什么标识符 ?

多谢各位高手了。

使用特权

评论回复
7
highgear| | 2010-10-3 23:40 | 只看该作者
刘公好久不见了, 不搞 plm51 了?

jt4117 说的没错。768bytes ram 只是把片外的ram 集成到片内而已, 这片 ram 自然是 xdata, 只不过寻址时不影响外部端口。

When EXTRAM = 0, the expanded RAM is indirectly addressed using the MOVX instruction in combination with any of the registers R0, R1 of the selected bank or DPTR. Accessing the expanded RAM does not affect ports P0, P3.6 (WR), P3.7(RD), or P2.

使用特权

评论回复
8
jt4117| | 2010-10-3 23:58 | 只看该作者
用x:
XDATA:0x00000~0x0FFFF只是代表总线宽度所能扩展的外部RAM最大值。当然也包括了你的0x000~ 0x2FF。

使用特权

评论回复
9
刘前辈|  楼主 | 2010-10-4 12:34 | 只看该作者

再次感谢jt4117。

本帖最后由 刘前辈 于 2010-10-4 12:39 编辑

多谢8楼jt4117 深入指导。叫法也不同——内部768字节叫XRAM,外部64K RAM叫XDATA。
好不容易找到一张图。




Expanded RAM Access (Indirect Addressing only):
    MOVX @DPTR, A ; DPTR contains 0A0H
DPTR points to 0A0H and data in “A” is written to address
0A0H of the expanded RAM rather than external memory.
   Access to external memory higher than 2FFH using the
MOVX instruction will access external memory (0300H to
FFFFH) and will perform in the same way as the standard
8051, with P0 and P2 as data/address bus, and P3.6 and
P3.7 as write and read timing signals.

使用特权

评论回复
10
刘前辈|  楼主 | 2010-10-4 12:40 | 只看该作者
也谢谢7楼 highgear 啦。

使用特权

评论回复
11
ejack| | 2010-10-4 12:42 | 只看该作者
不要在XRAM、XDATA这种名词上纠结。
知道单片机在访问不同的地址时执行不同的内部操作就行了

使用特权

评论回复
12
刘前辈|  楼主 | 2010-10-4 12:50 | 只看该作者
本帖最后由 刘前辈 于 2010-10-4 13:14 编辑

是做芯片的人这样区分硬件的。概念不一样,名称也应该不一样。如果是教材,一个叫XRAM--扩展RAM另一个叫 XDATA--外部DATA,学生马上知道指的是什么。
       我以前咨询一个做51开发板的总工:“你的板子如果用W77E58,如何调试XDATA?( 称呼错了)”

      “……都什么年代了,这会儿谁还用外存?初学者不用……”  然后把我损了一顿。我如果说“扩展RAM”,效果就不一样了。


使用特权

评论回复
13
624026387| | 2013-9-24 21:08 | 只看该作者
好**呀

使用特权

评论回复
14
ygl968| | 2013-9-24 21:40 | 只看该作者
mark

使用特权

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

本版积分规则

个人签名:做自己所热爱的,并热爱自己所做的。

24

主题

1038

帖子

4

粉丝