最近用51扩展RAM/IO时老访问不到外部扩展的RAM,用的是8155
8155_IO/\M---->P2.5
8155_\CE------>P2.4
所以扩展RAM的地址是0XCFXX
AT89C51ED2中的EXTRAM的描叙
EXTRAM
EXTRAM bit
Cleared to access internal XRAM using movx @ Ri/ @ DPTR.
Set to access external memory.
Programmed by hardware after Power-up regarding Hardware Security Byte (HSB),
default setting, XRAM selected.
- C/C++ code
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h>#include<absacc.h>#include<intrins.h>#include "REGAT89C51ED2.H"#define ramtest XBYTE[0XCF02].....main() { unsigned char xdata * data pstr; int i=0; int j=0; int t=0; unsigned char test; P0=P1=P2=P3=0xff;//测试P0,P2口读写正常 P2=0; _nop_(); P2=0x55; _nop_(); P2=0xaa; long_delay(10); // rst=0; AUXR|=0x02;//选择片外的XRAM //test----- ramtest=0xaa; i=ramtest; ramtest++; j=ramtest; pstr=0xcf02; test=*pstr; *pstr=0x55; test=*pstr+1;
用I,j,test去测试XRAM没一个是对的,都是0X7F,有人能看出问题出在哪没?
------解决方案--------------------
现在还有人扩展RAM的,呵呵,是不是在学习51单片机呀,实际中不太适用,直接选个内置FLASH大点的单片机,不就完事了。如果实在要扩展,要注意电路的连接及RAM的访问时序,这个看几个书中的例子就可以搞定了
------解决方案--------------------
------解决方案--------------------
现在还有人扩展RAM的,呵呵,是不是在学习51单片机呀,实际中不太适用,直接选个内置FLASH大点的单片机,不就完事了。如果实在要扩展,要注意电路的连接及RAM的访问时序,这个看几个书中的例子就可以搞定了
正解