本帖最后由 liu@cqupt 于 2014-5-5 17:20 编辑
首先我是想一个按键按下后,将多个数据保存在0x2000扇区内,然后安另一个按键按下后,回复之前保存的值,结果都是用数码管显示,但是按下回复键后num1到num6都是num6的值,搞得好像num1到num5都没保存住,有哪位熟悉eepROM使用者解惑一下,
if(Key_u2==0)
{
SectorErase(0x2000);//擦除扇区
byte_write(0x2000+0,num1);//重新写入数据
byte_write(0x2000+2,num2);
byte_write(0x2000+4,num3);
byte_write(0x2000+6,num4);
byte_write(0x2000+8,num5);
byte_write(0x2000+10,num6);
}
}
if(Key_u3==0)//数据恢复键
{
DelayMS(200);
if(Key_u3==0)
{
num1=byte_read(0x2000); //程序开始时读取EEPROM中数据
num2=byte_read(0x2000+2);
num3=byte_read(0x2000+4);
num4=byte_read(0x2000+6);
num5=byte_read(0x2000+8);
num6=byte_read(0x2000+10);
}
}
附加一个stc89c52使用手册
-
-
STC89C52RC单片机使用说明.pdf
下载积分: 积分 -1 分
2.57 MB, 下载次数: 172, 下载积分: 积分 -1 分
现在问题已经解决了,因为我要用eepROM进行多个数据的读,写,但是我原来所写的读写子程序是用于单个字节的数据的读写,所以我将读写子程序改后就可以进行多数据的读写了,
if(Key_u2==0)//保存数据键
{
DelayMS(200);
if(Key_u2==0)
{
Wd_num[0]=num1;Wd_num[1]=num2;
Wd_num[2]=num3;Wd_num[3]=num4;
Wd_num[4]=num5;Wd_num[5]=num6;
ISP_IAP_sectorErase(IAP_ADDRESS);//扇区擦除,一块512字节
ISP_IAP_writeData(IAP_ADDRESS,Wd_num,sizeof(Wd_num));
}
}
if(Key_u3==0)//数据恢复键
{
DelayMS(200);
if(Key_u3==0)
{
ISP_IAP_readData(IAP_ADDRESS,Rd_num,sizeof(Rd_num));
num1=Wd_num[0];num2=Wd_num[1];
num3=Wd_num[2];num4=Wd_num[3];
num5=Wd_num[4];num6=Wd_num[5];
}
}多个子程序请参考
网址如下(这都是别人分享出来了,感谢这些人)
http://www.amobbs.com/thread-5414681-1-1.html程序参考
http://www.amobbs.com/thread-5414681-1-1.html关于这个问题别人的讨论
评分
查看全部评分
没有想到我也是这个错误困扰着,谢谢分享,受益!
一周热门 更多>