找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC8H单片机eeprom保存问题

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

正文摘要:

本人新手,请教教各位大佬,使用STC8H8K64U单片机内置eeprom功能保存unsigned int类型数组,总是出错,原始数据一切正常,没有超出int范围,保存后读取的数据总有几个大于65530的数据,附图,附程序: #ifndef& ...

回复

ID:965189 发表于 2023-8-31 17:33

请问楼主解决了吗?我也遇到了同样的问题。
ID:773929 发表于 2023-8-9 11:29
ID:773929 发表于 2023-8-9 11:28
IdeaMing 发表于 2023-8-8 14:14
10125是0x278D,65421是0xFF8D,说明存住了8D,问题应该出在读取位置。
504是0x01F8,65528是0xFFF8,同理,存 ...

谢谢大佬
ID:213173 发表于 2023-8-8 17:09
本帖最后由 wulin 于 2023-8-8 20:31 编辑
  1. void SaveUIntToEEPROM(int addr, unsigned int dta)//保存unsigned int类型的数据
  2. {
  3.         IapErase(addr);//擦除整个扇区
  4.     IapProgram(addr, dta);
  5.     IapProgram(addr + 1, dta>>8);
  6. }

  7. unsigned int ReadUIntFromEEPROM(int addr)//读取指定地址的uint数据
  8. {
  9.     char lowByte,highByte;
  10.     unsigned int dta;
  11.     lowByte = IapRead(addr);
  12.     highByte  = IapRead(addr + 1);

  13.     dta = (highByte << 8) | lowByte;

  14.     return dta;
  15. }
  16. /*
  17. void EraseUIntFromEEPROM(int addr)//擦除数据
  18. {
  19.     IapErase(addr);
  20.     IapErase(addr + 1);
  21. }*/
复制代码

ID:1034262 发表于 2023-8-8 15:47
楼主可以使用STC公司的例子测试,或者你先存一个字符串,再读出来串口传给电脑看看。。。
ID:123289 发表于 2023-8-8 15:05
IAP_CONTR = 0x80; 读、写、擦都是80H吗?
ID:276663 发表于 2023-8-8 14:20
你大可以一个u8 buff[30]数组,存完,然后再读出来,就能验证了。
ID:276663 发表于 2023-8-8 14:14
10125是0x278D,65421是0xFF8D,说明存住了8D,问题应该出在读取位置。
504是0x01F8,65528是0xFFF8,同理,存住了F8,但是前面的01你取的位置不对。

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

Powered by 单片机教程网

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