ba7lnn 发表于 2023-6-9 10:12:43

STC8A8K64D4, EEPROM, unsigned long长度问题

hi, 各位老师, 看了例程,
EEPROM多为u16, u8,
我这需要一个 unsigned long长度的数据读和存,实验下来,似乎不行?

怎么处理?

电子DIY小家 发表于 2023-6-9 13:44:51

一个unsignedlong数据拆成4个u8就好了呀;

假设这个unsignedlong 变量是x,那么可以定义个dat【4】数组,然后:

dat = (u8)(x>>24);
dat = (u8)(x>>16);
dat =(u8)(x>>8);
dat = (u8)(x>>0);

再把这个数组调用个写入函数写入进去就好了

ba7lnn 发表于 2024-3-17 22:09:57

取回组合?

dat = (u8)(x<<0);
dat =(u8)(x<<8);
dat = (u8)(x<<16);
dat = (u8)(x<<24);


soma 发表于 2024-3-18 10:10:40

eeprom只能存u8数据吧

_奶咖君_ 发表于 2024-3-18 10:51:11

soma 发表于 2024-3-18 10:10
eeprom只能存u8数据吧

这看你怎么理解了,,写入的时候只能按字节写入,
但是这个数据嘛,,16位的32位的就分开存储呗

cadplus 发表于 2024-3-19 08:04:21

_奶咖君_ 发表于 2024-3-18 10:51
这看你怎么理解了,,写入的时候只能按字节写入,
但是这个数据嘛,,16位的32位的就分开存储呗 ...

新人,正有这个困惑,U16拆分写入读回拼合成功,long有正负的拆成四个U8存储读回拼合结果不对,请大佬指教{:4_196:}

_奶咖君_ 发表于 2024-3-19 08:36:44

cadplus 发表于 2024-3-19 08:04
新人,正有这个困惑,U16拆分写入读回拼合成功,long有正负的拆成四个U8存储读回拼合结果不对,请大佬指 ...

用左移加或运算 应该是不需要关注原数据的正负来着

社区闲人 发表于 2024-3-19 08:46:18

使用指针强制类型转换。

cadplus 发表于 2024-3-19 08:49:44

_奶咖君_ 发表于 2024-3-19 08:36
用左移加或运算 应该是不需要关注原数据的正负来着

谢谢大佬{:4_196:}
我再去上机试试,在网上找遍了也没的这方面的例子,有一个C的例子可能是PC版的,U32拼成long是不对的,说要用指针,这个还没弄明白

ba7lnn 发表于 2024-3-22 23:48:28

我也是没有成功,中间也,EA=0, 存之后,也再EA=1,所以中断干扰应该不是,关键是有时对,有时不对,头晕。

看看有没有大佬来个举个栗子。
页: [1]
查看完整版本: STC8A8K64D4, EEPROM, unsigned long长度问题