关于STC EEPROM 读写小数点数据的问题
关于STCEEPROM 读写小数点数据的问题:IAP_DATA这个好像只能字节类型,无符号char型,
如果我要读写带小数的数据怎么办
请高手帮忙解读一下,谢谢了,顺祝大家节日快乐!!!
IAP_DATA 这个寄存器是8位的,里面放啥 ?
===就放 0x00~ 0xff
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3184&extra=&page=1
EEPROM/DataFlash, STC8H系列数据手册 EEPROM 内容 - EEPROM/DataFlash - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
只能放0--255的数,比如我要放超256就不行,还有放比如说10.2这个带小数点的也不行 自己定义转换格式存放 在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);
angmall 发表于 2023-10-1 19:20
在EEPROM中保存浮点数的方法
任何定的类(数组、图像、浮点数、音乐……)都是按字节存放的,读取也是按字 ...
谢谢 你 搞清楚 浮点数(小数)在内存中是怎么存储的
存放在eeprom和存放在内存中是一样的
就是连续的四个字节 32位
{:4_175:}学习了。