找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于STC8A8H64D4单片机eeprom读写问题

查看数: 2333 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-11-16 10:47

正文摘要:

       问题:现定义  unsigned  int  ledld[4]=0;    使用eeprom读取数据的时候发数组里面的数字大于900,然后发现读取的数据是错误的。后续反复试验 ...

回复

ID:712072 发表于 2023-11-17 08:44
coody_sz 发表于 2023-11-16 20:43
程序问题,EEPROM只能单字节读写。

那怎么读写16位数据,我现在就是将16位数据分成两个字节读取,不就相当于单字节读取吗?
ID:57657 发表于 2023-11-16 22:01
wulin 发表于 2023-11-16 19:04
读、写、清除EEPROM是在ISP环境操作。试试读、写、清除EEPROM时关闭总中断。EA=0;。完成后再开总中断。

EEPROM可以使用unsigned char/int/long code指针(汇编MOVC指令)读取,无需配置什么ISP寄存器。
ID:1034262 发表于 2023-11-16 20:43
程序问题,EEPROM只能单字节读写。
ID:213173 发表于 2023-11-16 19:04
本帖最后由 wulin 于 2023-11-17 06:35 编辑
395164965 发表于 2023-11-16 17:57
以下是算是完整代码,后续会加其它功能,但现在卡在这个eeprom中

读、写、清除EEPROM是在IAP方式操作。试试读、写、清除EEPROM时关闭总中断。EA=0;。完成后再开总中断。
ID:712072 发表于 2023-11-16 17:58
lkc8210 发表于 2023-11-16 17:01
试试
ledld[0] = ispdu(0x0010);ledld[0] = ledld[0]

这种形式也试过,也是不行的
ID:161164 发表于 2023-11-16 17:01
试试
ledld[0] = ispdu(0x0010);ledld[0] = ledld[0] << 8 | ispdu(0x0011);
ID:123289 发表于 2023-11-16 15:23
注意以下:
1、表达一个数所用的字节数N,即一个数要分成N个字节读、写。
2、EEPROM只能写0不能写1(1是擦除后自然形成的,例:可以将11110000,改成00110000,不可以改成11110011)。
3、先擦后写,已擦了不用再擦(擦的目的是改0为1)。
4、关注擦除的范围(当心擦到其它数据,擦是按页进行的,即一擦一大片。)
ID:213173 发表于 2023-11-16 15:06
代码不全,猜不出来。单片机本身不会发生这样的问题,只能是楼主的代码有问题。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表