关于51单片机外部数据和地址的问题

uchar xdata e1_buff[6*16] _at_(0x300);
麻烦解释下这个定义的意思,还有后面这个地址0x300 可以可以随便设吗?比方说我2M的Flash,是不是可以设置了0x000-0xfff之间的任意数据呢,这个定义的意思是不是定义一个数组缓冲区,他存在外部存储器的某个地址,但是我对这种表述不明白 _at_(0x300) 中的_at_是啥意思

uchar xdata e1_buff[6*16] _at_(0x300);
麻烦解释下这个定义的意思,
定义数组,分配在片外RAM,起始地址是0300H。

还有后面这个地址0x300 可以可以随便设吗?
根据硬件电路来设。

比方说我2M的Flash,
不行。
单片机没有2M的地址空间。

是不是可以设置了0x000-0xfff之间的任意数据呢,
外部电路正确,你才可以使用这些地址。

这个定义的意思是不是定义一个数组缓冲区,他存在外部存储器的某个地址,
对。

但是我对这种表述不明白 _at_(0x300) 中的_at_是啥意思
设置起始地址。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-23
这是定义了一个含6个变量的双字节数组,其分配地址为外部存储器0300H开始的单元里。
51单片机没有特殊处理的话,最大存储空间只有64K,所以2M是不可能的。当然在这个例子里面,如果你将外部空间都扩展了的话,你可以在0x0000~0x0fff4之间任何设置。
相似回答