找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1171|回复: 11
收起左侧

关于STC8A8H64D4单片机eeprom读写问题

[复制链接]
ID:712072 发表于 2023-11-16 10:47 | 显示全部楼层 |阅读模式
       问题:现定义  unsigned  int  ledld[4]=0;    使用eeprom读取数据的时候发数组里面的数字大于900,然后发现读取的数据是错误的。后续反复试验发现数字只要大于640的话就无法读取正确的值,低于640可以正常读取。
       想问问有没有遇到这种情况的,帮我解答一下,谢谢。后面又用了STC8H3K64S4这个单片机也是一样的问题
1.png
2.png
回复

使用道具 举报

ID:712072 发表于 2023-11-16 11:25 | 显示全部楼层
以下是eeprom的程序
3.png
回复

使用道具 举报

ID:213173 发表于 2023-11-16 15:06 | 显示全部楼层
代码不全,猜不出来。单片机本身不会发生这样的问题,只能是楼主的代码有问题。
回复

使用道具 举报

ID:123289 发表于 2023-11-16 15:23 | 显示全部楼层
注意以下:
1、表达一个数所用的字节数N,即一个数要分成N个字节读、写。
2、EEPROM只能写0不能写1(1是擦除后自然形成的,例:可以将11110000,改成00110000,不可以改成11110011)。
3、先擦后写,已擦了不用再擦(擦的目的是改0为1)。
4、关注擦除的范围(当心擦到其它数据,擦是按页进行的,即一擦一大片。)
回复

使用道具 举报

ID:161164 发表于 2023-11-16 17:01 | 显示全部楼层
试试
ledld[0] = ispdu(0x0010);ledld[0] = ledld[0] << 8 | ispdu(0x0011);
回复

使用道具 举报

ID:712072 发表于 2023-11-16 17:57 | 显示全部楼层
wulin 发表于 2023-11-16 15:06
代码不全,猜不出来。单片机本身不会发生这样的问题,只能是楼主的代码有问题。

     以下是算是完整代码,后续会加其它功能,但现在卡在这个eeprom中
1.png
2.png
回复

使用道具 举报

ID:712072 发表于 2023-11-16 17:58 | 显示全部楼层
lkc8210 发表于 2023-11-16 17:01
试试
ledld[0] = ispdu(0x0010);ledld[0] = ledld[0]

这种形式也试过,也是不行的
回复

使用道具 举报

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:1034262 发表于 2023-11-16 20:43 | 显示全部楼层
程序问题,EEPROM只能单字节读写。
回复

使用道具 举报

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:712072 发表于 2023-11-17 08:44 | 显示全部楼层
coody_sz 发表于 2023-11-16 20:43
程序问题,EEPROM只能单字节读写。

那怎么读写16位数据,我现在就是将16位数据分成两个字节读取,不就相当于单字节读取吗?
回复

使用道具 举报

ID:712072 发表于 2023-11-20 16:03 | 显示全部楼层
     现在算是解决了这个问题了,改了一下程序,将eeprom读写程序从8位改为16位就可以正确读取数字超过640的。
     至于8位的为什么不可以,后续我再查找一下问题。

1.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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