求助 关于xdata的问题

[复制链接]
3424|5
 楼主| book99 发表于 2010-5-18 15:13 | 显示全部楼层 |阅读模式
我现在用80c51f120单片机,因为定义的变量较多 一部分变量定义成了xdata形式,单片机外部扩展了双口ram,用于存储单片机采集的某些数据,
片内xram与外部ram有什么关系呀,
现在要对外部存储器接口进行配置,如果设置为只用外部ram,对存储在片内xram里的变量有影响吗
ayb_ice 发表于 2010-5-18 15:21 | 显示全部楼层
本帖最后由 ayb_ice 于 2010-5-18 15:25 编辑

纠正一点
"现在要对外部存储器接口进行配置,如果设置为只用外部ram,对存储在片内xram里的变量有影响吗"
"片内XRAM变量"说法是错误的,因为这和总线配置有关,如果配置没有使用片内XRAM是根本不存在"片内XRAM变量"说法,即使使用了片内XRAM,你也不知道变量的地址是多少,除非你绝对定位
请看下面


首先片内XRAM和片外RAM都是XRAM,其它的MCU一般是只能用其一(通过控制SFR),而C8051F如果有外部总线的,有多种配置
1:可以配置成仅使用内部XRAM,外部不可用
2:可以配置成仅使用外部XRAM,内部不可用
3:可以配置内部外部同时使用,当地址高于内部XRAM地址时,自动访问外部XRAM
好象还有一种配置,好久没有用了,不记得了
...
 楼主| book99 发表于 2010-5-18 15:36 | 显示全部楼层
如果设置为只使用外部ram 那么定义成xdata型的变量是自动保存在片外ram中还是不可以使用了呀
我看好多程序对xdata型的变量的操作没有涉及到地址  并没有像片外ram 那样每一个变量对应一个地址呀
ayb_ice 发表于 2010-5-18 15:46 | 显示全部楼层
如果设置成只使用片外,那么XRAM变量当然自动定位在片外了
但是如果内外都使用,那么XRAM变量是在片内还是片外当然取决它的地址了,而地址一般是编译器分配的,也就是说用户并不知道是在片内还是在片外,当然如果只是个一般的变量也没有关系,但是有些总线扩展控制的变量就必须知道是在片外还是在片内了,因为片内的话外部总线根本不动作了,这种情况就要绝对定位变量了
 楼主| book99 发表于 2010-5-18 16:02 | 显示全部楼层
谢谢楼上高手帮忙啊 我刚刚毕业 问题有点白痴啊:(
因为我有些变量定义成了xdata  所以现在只能内外ram都用了吧?
对于定义成xdata 的变量编译器会自动保存到片内ram的某个地址吧?
如果我想把某些变量存到片外ram里,应该自己分配地址了 吧?地址从0x2000开始吧?内外地址以8k为界吧?
ayb_ice 发表于 2010-5-18 16:56 | 显示全部楼层
1: "因为我有些变量定义成了xdata  所以现在只能内外ram都用了吧?"
不一定
2"对于定义成xdata 的变量编译器会自动保存到片内ram的某个地址吧?"
这个取决于编译器怎么编译,一般是从0开始分配,但这也取决于具体芯片,因为有些芯片XARM根本就不是从0开始的
3:"如果我想把某些变量存到片外ram里,应该自己分配地址了 吧?地址从0x2000开始吧?内外地址以8k为界吧?"
一般是这样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

185

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部