打印

请教W77E58的内部RAM的问题

[复制链接]
2304|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
why_buaa|  楼主 | 2007-4-17 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  W77E58内部有1K的XRAM,DataSheet上说是从地址0000-03ff。当使能内部XRAM的时候,如果访问的地址超过了03ff,则自动访问外部RAM空间。

  我现在1K RAM正好够用,但是我还要控制外部的一些器件,所以就把它们定义到高地址空间去了,我的这个应用要从内部RAM中读一些数(几十个字节),然后把它输出到外部器件的寄存器中,由于对时间要求比较严格,所以我想采用一些方法来减少搬运每个字节所需的周期。
  
  现在的问题就是,W77E58所谓的双DPTR其实是个假的,如果我每次切换DPTR,则需要多花4个周期,并且INC DPTR也需要两个周期,而如果我用一个R0来作为另一个数据指针,采用
MOVX A,@DPTR
INC DPTR

MOVX @R0,A
INC R0
的指令的话,就可以比采用切换DPTR的方式少用5个周期,速度提高40%,刚刚可以满足时间要求。

  但是现在的问题就是,普通的51采用MOVX @R0 ,A这种方式,高地址是由P2决定的,可是在这里,由于我使能了内部RAM,那么此时这种方式访问的是哪一段内存呢?(事先设置了P2的情况下) 到底是访问内部RAM,还是访问外部RAM,或是根据P2的值来切换呢? (对于我来说后两种情况都可以)
  DataSheet上没有明确的说明,希望知道的高人指点一下。

相关帖子

沙发
农民讲习所| | 2007-4-17 22:17 | 只看该作者

内部RAM

你可以对内部RAM使用R0,对外使用DPTR,只要你把RAM定位到前256。

最好是把晶振提高,比如从22.1184M提高到30M,拨特率误差可满足。

使用特权

评论回复
板凳
why_buaa|  楼主 | 2007-4-17 23:54 | 只看该作者

内部地址的范围不能定到256字节之内

  内部数据表接近1K大,无法只定义到256字节。如果MOVX @R0,A这种方式只能访问内部RAM的话,那也就只能采用提高频率的手段了。但是这样可能会造成稳定性下降的问题。
  这是个很老的设计,当时没有对速度提出什么要求来,图方便就拿了个51,现在急着要用,对速度的要求大大提高了,来不及改设计重制板了,只能靠频率硬撑了。
  51这个东西啊,先天不足得太严重了,怎么改也改不好。
  不过近年来的ARM,它那32位定长指令其实也挺讨厌的,太浪费,很多功能又不足,T模式实际上也是个半吊子,效率低,还要切来切去的。以前听说有人做改进的ARM单片机,有16/32位指令无缝切换的,不知现在怎么样了,我对这个是相当期待啊。

使用特权

评论回复
地板
xwj| | 2007-4-18 01:42 | 只看该作者

那1K是集成在芯片上的片外RAM(XRAM),可以用MOVX @R0,A访问的

只是超过256字节时里还要控制P2翻页,就不见得比用MOVX A,@DPTR快了,但可以每256字节才设置一次P2


不过我看你的应用好像没必要用双DPTR啊

使用特权

评论回复
5
ayb_ice| | 2007-4-18 07:38 | 只看该作者

双DPTR怎么会没有用呢,我看你的应用刚好用...

使用特权

评论回复
6
why_buaa|  楼主 | 2007-4-18 21:40 | 只看该作者

感谢大家的回复

  我并不是觉得双DPTR没用,而是觉得非要切换一下很没效率。
  51空闲的寄存器空间还有很多,完全可以找个空间定义一个独立的DPTR2,这样就好多了。即使非要切换,也要把切换指令设计成单周期的嘛,真不知道是怎么想的。
  现在的各种51千奇百怪的,各家都加了一堆的乱七八糟的外设寄存器,可就是没有哪个把51的两大瓶颈给真正解决了。设计一个独立的DPTR和一个附加的累加器难道很难吗?如果说是考虑代码兼容的话,你加了那一堆乱七八糟的寄存器,难道还指望能不加修改的兼容?真搞不明白

使用特权

评论回复
7
ayb_ice| | 2007-4-19 07:45 | 只看该作者

切换比重新赋值哪个效率更高...

使用特权

评论回复
8
itravel| | 2013-4-19 16:12 | 只看该作者
楼主有W77E58的中文版DataSheet吗?能不能发给小弟一下
邮箱 sshjhf@yeah.net
谢谢

使用特权

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

本版积分规则

3

主题

31

帖子

0

粉丝