导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教77E58外扩RAM问题。[kuolongfei]

 *第19327篇: 请教77E58外扩RAM问题。

  
楼 主:kuolongfei 2004年2月18日15:24
 请教77E58外扩RAM问题。
大家知道77E58内部有1KRAM,在用C语言定义时用uchar XDATA s[100]_at_ 0x0000,可现在的问题是我外部有扩充RAM,也从0000开始,那这个变量怎么区分他是被定义在内部的RAM还是外部的RAM?谢谢!
  
2楼:kuolongfei 2004年2月19日09:11
 大家别只是看呀,明白多少说多少!我不闲少,谢谢!
  
3楼:guest 2004年2月19日09:15
 访问内部RAM和外部RAM能一样吗?
访问内部RAM和外部RAM能一样吗?
  
4楼:kuolongfei 2004年2月19日09:35
 不都是s[?]=?;吗?
  
5楼:kuolongfei 2004年2月19日09:34
 怎么不一样?
  
6楼:kuolongfei 2004年3月4日08:26
 多多指教,谢谢
  
7楼:lookwolf 2004年3月9日02:22
 有一个寄存器,用于打开内部的RAM
有一个寄存器,用于打开内部的RAM
  
8楼:lenglx 2004年3月9日09:07
 C51 无法区分
在C51中,这2种RAM都是同一个地址空间(XDATA区)的,是没办法区分的。
你可以用汇编或者用UNION的方式实现。
否则,是通不过LINKER的覆盖分析的。
  
9楼:kuolongfei 2004年3月9日14:26
 我倒是觉得上面的朋友说得对,通过寄存器来区分?
意思是否就是在用内部的时候该寄存器置1,定义的变量就指向内部地址空间,当该寄存器为0时,定义的变量就指向外部地址空间?
  
10楼:lenglx 2004年3月12日19:32
 C51地址空间和单片机本身的地址空间
sbit bInter = xx^x;   // 我不太知道这个具体是哪位
xdata   char  c _at_ 0;      //外部RAM区定义个变量

bInter = 0;

c = 0;   // MOV DPTR,#0;
           // MOVX @DPTR, #0
          // 使用的是外部的XDATA区
bInter = 1;

c = 1;;   // MOV DPTR,#0;
           // MOVX @DPTR, #1
           // 使用的单片机内部的XDATA区
// C51 能区别这2个地址空间? 是单片机自己区别它而已.

  
11楼:lenglx 2004年3月12日19:30
 C51地址空间和单片机本身的地址空间
sbit bInter = xx^x;   // 我不太知道这个具体是哪位
xdata   char  c _at_ 0;      //外部RAM区定义个变量

bInter = 0;
c = 0;   // 
bInter = 1;
c = 1;

  
12楼:我本闲人 2004年3月9日23:06
 确实是用一个寄存器的一个BIT来定义的,但忘了是什么了,你查一下资料就行了,很简单的。

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

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


[上一篇主题]:请教WARNING L7: MODULE NAME NOT&

[下一篇主题]:电子线路设计的超级工具---线路板制作机