导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教C51程序如何实现外部数据的访问?[guest]

 *第14006篇: 请教C51程序如何实现外部数据的访问?

  
楼 主:guest 2003年7月2日15:29
 请教C51程序如何实现外部数据的访问?
请教C51程序如何实现外部数据的访问?
C51程序中用如下定义及操作是不是能实现对外部数据的访问:

unsinged char i=0;
unsinged char xdata ExtenalData[255];


for(i=0;i  <255;i++)
{
    ExtenalData[i]=i;
}

本人按以下定义试图对外部数据存储器进行访问,在\RD和\WR信号脚上看不到外部该问时钟,不知道怎么回事,请各位大虾指点。

  
2楼:guest 2003年7月3日18:12
 难道没有人用过外部数据存储?
回答Yes或No的勇气都没有吗?
  
3楼:流浪漢 2003年7月3日18:19
 客人请进
如果访问页内地址,
unsigned char pdata *ip;
ip=0x80;
*ip=0x80;
实现对外部0x80地址写数据0x80内容
如果访问64k内地址
unsigned char xdata *ip;
ip=0x1234;
*ip=0x80;
实现对外部地址0x1234写0x80内容
  
4楼:tm1300 2003年7月4日09:09
 你的外部RAM地址如何分配的,在KEIL编译环境中有没有设置?没有设置的话,可能不能使用
一般写的话,可以利用XBYTE宏:

void write_12887_ram(u_char *ptr1,u_char *ptr2)      //写12887RAM空间,保存录像状态数据
{
    u_char i;
    u_int adr=0x7f0e;                                             //外部RAM地址

    for(i=0;i  <7;i++)
    {
        XBYTE[adr++]=*ptr1++;
    }

    for(i=0;i  <7;i++)
    {
        XBYTE[adr++]=*ptr2++;
    }
}

  
5楼:guest 2003年7月4日11:42
 非常感谢各位的帮助,在下这厢有礼了。
果如上面有位老兄所说,是我的硬件有问题。我被元器件商给刷了。我的程序是对一个Flash器件进行访问,按照资料上讲的,如果是原装芯片的话,它的写保护应该是取消的,但是我之前的程序没有加去掉写保护的程序段,所以不管怎么样都不能实现对外部数据的正确读写,所以对自已的程序产生了怀疑。在不经意间我使了个土招,我用写芯片的编程器对器件进行了一次读出写入的操作,后来用前面的程序也能正常地读写了。
    我恨死那奸商了AT29C512-15PC,是该型号中最慢的,还要收我8。00RMB。不知在这一环上他有没有刷我,请各位提供一下参考供。
  
6楼:guest 2003年7月4日12:13
 [quote][b]以下是引用[i]gu
以下是引用guest在2003-7-2 15:29:59的发言:
请教c51程序如何实现外部数据的访问?请教c51程序如何实现外部数据的访问?
 c51程序中用如下定义及操作是不是能实现对外部数据的访问:

 unsigned char i=0;
 unsigned char xdata extenaldata[255];

 
 for(i=0;i  <255;i++)
 {
     extenaldata[i]=i;
 }

 本人按以下定义试图对外部数据存储器进行访问,在\rd和\wr信号脚上看不到外部该问时钟,不知道怎么回事,请各位大虾指点。
 


我也在用此語句使得\wr信號跳變,但在我的仿真器上執行後,\wr信號未跳變,請問是何原因.
  
7楼:guest 2003年7月4日13:57
 跳变的脉冲太窄,一般的示波器看不到。
跳变的脉冲太窄,一般的示波器看不到。
事实上我现在的程序已经能正常运行了,但是我确实也没有看到\WR或\RD的信号有明显的跳变,只是偶尔有那么一点点脉冲信号。
建议你如果是程序没错的话还是查一下硬件吧。以上的程序在KEIL C里是能运行的,别忘了设置外部数据地址。

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

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


[上一篇主题]:[求助]请教各位高手:有关LED驱动的问题

[下一篇主题]:86启动是怎样实现的?有源代码么?