关于52rc单片机eepROM使用的问题(现问题已解决)

2019-07-15 19:54发布

本帖最后由 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 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
liu@cqupt
1楼-- · 2019-07-15 21:57
本帖最后由 liu@cqupt 于 2014-5-5 14:55 编辑

现在问题已经解决了,因为我要用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关于这个问题别人的讨论

liu@cqupt
2楼-- · 2019-07-15 22:15
还有比较重要的问题就是stc89c52才有自带的eeprOM,而atm公司生产的at89c52不带,所以在proteus上面仿真的89c52是不带eeprOM的,上面2种方面其实都可以使用的,我糊涂了

评分

参与人数 1积分 +5 收起 理由 A670521546 + 5 不错,加个分鼓励鼓励

查看全部评分

664616691
3楼-- · 2019-07-16 00:04
liu@cqupt 发表于 2014-5-5 14:52
现在问题已经解决了,因为我要用eepROM进行多个数据的读,写,但是我原来所写的读写子程序是用于单个字节的 ...

没有想到我也是这个错误困扰着,谢谢分享,受益!
ntmusic
4楼-- · 2019-07-16 02:31
 精彩回答 2  元偷偷看……
liu@cqupt
5楼-- · 2019-07-16 08:18
都没问题的,ok了
photobike
6楼-- · 2019-07-16 13:40
谢谢楼主分享!!!

一周热门 更多>