ydcsb 发表于 2023-10-1 11:03:05

关于STC EEPROM 读写小数点数据的问题

关于STCEEPROM 读写小数点数据的问题:
IAP_DATA这个好像只能字节类型,无符号char型,
如果我要读写带小数的数据怎么办

请高手帮忙解读一下,谢谢了,顺祝大家节日快乐!!!

神农鼎 发表于 2023-10-1 11:12:49

IAP_DATA 这个寄存器是8位的,里面放啥 ?
===就放 0x00~ 0xff

神农鼎 发表于 2023-10-1 11:13:38


https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3184&extra=&page=1

神农鼎 发表于 2023-10-1 11:16:07





EEPROM/DataFlash, STC8H系列数据手册 EEPROM 内容 - EEPROM/DataFlash - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

ydcsb 发表于 2023-10-1 17:17:36

只能放0--255的数,比如我要放超256就不行,还有放比如说10.2这个带小数点的也不行

神农鼎 发表于 2023-10-1 17:47:18

自己定义转换格式存放

angmall 发表于 2023-10-1 19:20:54

在EEPROM中保存浮点数的方法
任何定的类(数组、图像、浮点数、音乐……)都是按字节存放的,读取也是按字节读出的。
要点是(以图像为例):如何编码的,就如何解码。
也即你缺少(XX格式,如浮点数)编码的知识,当然就不知道如何解码了。

保存一个16位数据,分两个字节写入即可,32位的数(长整形或浮点数)就要分4个字节写入。
浮点数(实数)长度32位,用位移的方式拆分成4个字节存入eeprom,读取后按存入时的拆分顺序还原。对于eeprom存储器单元而言,存入的只是一个字节的数据。与数据的类型无关。

用union联合体转换或指针操作。你这样移位可以直接用union联合体代替,不需要移位。
一般我会这样定义:
typedef union
{
    float value1;
    unsigned char value2;
} pValue;

存储的时候调用value2,其他时候用value1
pValue pVal;

pVal.value1 = 10.3;

IapProgram(0x0000,pVal.value2);
IapProgram(0x0001,pVal.value2);
IapProgram(0x0002,pVal.value2);
IapProgram(0x0003,pVal.value2);


ydcsb 发表于 2023-10-3 10:53:15

angmall 发表于 2023-10-1 19:20
在EEPROM中保存浮点数的方法
任何定的类(数组、图像、浮点数、音乐……)都是按字节存放的,读取也是按字 ...

谢谢

gentleman 发表于 2023-10-3 14:40:11

你 搞清楚 浮点数(小数)在内存中是怎么存储的



存放在eeprom和存放在内存中是一样的


就是连续的四个字节   32位




ainiwuhui 发表于 2023-10-7 15:50:48

{:4_175:}学习了。
页: [1] 2 3
查看完整版本: 关于STC EEPROM 读写小数点数据的问题