单片机ADuC812可以扩展16M存储器,24位地址线A0-A23,三个数据指针DPL(A0-A7),
DPH(A8-A15),DPP(A16-A23),技术资料上ADuC812扩展存储器如图右边部分所示。
W29C040为512Kx8的flash存储器,19位地址A0-A18。A0-A7为页内地址,A8-A18为页地
址,中8位A8-A15和高3位A16-A18通过锁存器锁存。原理图如图左部分所示:
我的问题是如何确定W29C040的页地址(A8-A18)呢?
例如:我想把一个数组data_arr[10]写入第三页中去
void write(unsigned char page_addr unsigned char addr)
{
uchar len;
delay(2000);
Flash_addr(0x5555) = 0xaa;
Flash_addr(0x2aaa) = 0x55;
Flash_addr(0x5555) = 0xa0;
for(len=0;len <0x0a;len++)
{
XBYTE(addr+page_addr*0xFF)=data_arr[len];
addr += 1;}
delay(2000);
}
main()
{
write(0x02,0x50);
while(1);
}
这里XBYTE(addr+0x02*0xFF)=data_arr[len];怎么不能把数组写入第二页呢?
发表时间:2004年10月15日10:48:40