如果直接是外部RAM的话.
不用那么麻烦..直接用指令访问就行了.
char xdata *aa;
aa=0x100;
aa = 0xAA;
这样就可以忘外部ram0x100地址里面写东西了
如果你不是总线形式的话.
那就只有通过你上边的那种.时许形式.读写了.
不过看你接的那种 要两次P0口的,,估计是总线形式的.
就是不知道你的P0口有没有用锁存器.否则.是玩不成任务的.
补充:
比人问得.
上面我写错了.
应该是
aa = 0x100;
*aa = 0xAA; //这里多了一个*,,表示往地址里面写数据.
当然如果你要读0x100的数据
那就
char da;
da = *aa;去回来就行了.
这种句子.翻译成汇编就是movx dptr , @a这种的句子
因为51访问外部ram用的就是movx 指令,,非前256字节
只能通过dptr访问
用movx指令.单片机会自动产生.你上面写的操作P0上次的动作,
所以如果要这样访问,必须P0有锁存器,,否则不可能完成任务
这种方式.一般用在 51单片机.用总线形式扩展.外部ram的
/////
这是人家的问题,看看是不是和你的一样
http://zhidao.baidu.com/question/85352979.html
1.你的根本都没有读数据和写数据的操作
2.而且你的程序看样子并不是所谓的写数据和读数据的操作,而是批量数据转移,既然是批量处理,就要有循环体
4.CE下降沿锁存,则在拉低CE时就要准备好P0的地址信号而不是拉低后才赋值P0,操作完成后就要把CE拉高,你两步都没有完成
撇开头文件不谈,你程序中问题很多。首先,你CE时序就不对,只见你拉低,有拉高吗,而且,你这里没有喂狗,你肯定访问不了FLASH啊,一直不停的在复位。
要想访问外部存储器,必须包含头文件absacc.h!!你加上看它的头文件所包含的内容就明白了
我学单片机已经是2年前的事情了,很想帮你,可惜都忘了