用62256扩展数据存储器呢,如果变量直接定义到外存中,如何编写写入读出62256的函数?
,为了节电,将
AI 4( P2 .7) 接 到62256的片选端。一般情况下,P2口输出的是高位地址
(取 指 或 M OV X 操作)、P2寄存器的数据。由于AT89C52内置8K的
程 序 存 储 单 元,因此在MOVX操作时输出高位地址,其它时间输出P2
寄存 器 的 数 据.P2复位后为FFH,因此只在读写的瞬间A15为地电平,
选 择 6 22 56 ,其余时间A15为高电平,62256处于空闲状态,达到节电
的 目 的.
这是一个62256的读写测试程序,经过实践可行!我的硬件连接是单片机的wr脚和rd引脚分别接62256的OE和CS,这两个脚的时序单片机是由硬件自动完成的,P0口作为数据和地址用,用74hc573进行地址锁存,ALE来控制,ALE控制573的时序也是由单片机硬件自动完成的。#include
#include
#include
#define uchar unsigned char
#define nop() _nop_()
unsigned char xdata *add;//这里定义是一定要注意数据类型,这里的类型是指地址里的内容的数据类型
unsigned char temp[30]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43};
sbit WE=P3^6;
sbit OE=P3^7;
sbit CS=P2^7;
void write()
{ uchar i;
add=0x4000;//数据存储的起始地址
for(i=0;i<14;i++)//连续存储14个数据
{
*add=temp;
add++;
}
}
void read()
{uchar i,t;
add=0x4000; //读取数据的起始地址
for(i=0;i<14;i++)//连续读取14个数据
{
t=*add;
add++;
}
}
void main()
{
write();
read();
while(1);
}
用这个可以吗?多谢!