导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教一个关于C51存储器分配的问题[rain_cxp]

 *第23754篇: 请教一个关于C51存储器分配的问题

  
楼 主:rain_cxp 2004年7月15日16:22
 请教一个关于C51存储器分配的问题
1.   uchar  xdata *y;   是指y这个变量是存在外部存储器中呢还是说Y这个变量指向外部存储器?如果是后者的话那Y这个变量又是放在哪里的?
2.   Uchar  xdata x[8000];   X这个数组是被定义在外部存储器中的。那么,我要是想要给这个数组指定一个固定的地址该怎么做呢?比如我想把这个数组定义在0X2000开始的地址,可以这样定义吗?
  Uchar xdata x[8000];
  X=0x2000;
  
2楼:dongshan 2004年7月15日17:03
 1.是向外部存储区的指针
2。可以先编

1.是向外部存储区的指针
2。可以先编译,然后在BL51中指定地址。
Uchar xdata x[8000];
  X=0x2000;
是错误的,因为数组名是常量,是个右值。不能被赋值!
  
3楼:rain_cxp 2004年7月16日09:01
 还是有些不太明白
1.当这个指向外部存储区的指针被赋值的时候,这个值是被放在内部存储区里的吗?
2。先编译,然后在BL51中指定?能说得具体一点吗?
谢谢
  
4楼:lenglianxi 2004年7月16日13:47
 偏见。
1、uchar xdata * y;
  y 是指向xdata的指针,本身在data区。
2、如果要指定地址,可以
   *1 在LINK中指定 
   *2 或者 uchar xata x[8000] _at_ 0x2000;
这些问题都可以解决。
我不是说汇编不好,确实一些频繁执行的代码,你可以用汇编提高速度。
但如果是一个大型的程序,一些不是经常执行的代码,你可以用C,加快开发进度。
你知道80-20的概念吗?80%的执行时间是在20%的代码上。
  
5楼:rain_cxp 2004年7月16日14:10
 非常感谢这位仁兄,简单明了,句句切中要害

>>>>>>对该主题发表你的看法

本主题贴数5,分页: [第1页]


[上一篇主题]:想知道2051配置FPGA的情况

[下一篇主题]:向斑竹求教