宏晶的单片机现在基本上都有内置的EEPROM(听说连STC89C52RC也有),在数据量以及数据安全性要求不高的场合还是挺方便的(省了一颗24c02哈哈)。
今天在调用官方自带的eeprom库的时候发现自带的函数只能一字节一字节的写入,但是有些需要存储的数据超过255,所以字节额外写了一层函数进行封装传递。
/***********************************************************
*@fuction :write_rom
*@brief : 通过函数处理,使其可以直接存入16位数据
*@param :--u16 address:数据存入的地址 u16 Data_Address:需要存入的变量
*@return :void
*@author :--xptx
*@date :2022-11-19
***********************************************************/
void write_rom(u16 address, u16 Data_Address) //16位 数据写入
{
u8 x[2];
if(Data_Address != read_rom(address)) //数据发生更改
{
x[0] = 0xff & Data_Address; //留下低8位
x[1] = Data_Address >> 8; //留下高8位
EEPROM_write_n(address, &x, 2); //写入新的数据
}
}
/***********************************************************
*@fuction :read_rom
*@brief :读取EEPROM里面的16位数据
*@param :--u16 address:数据存放地址
*@return :返回16位数据
*@author :--xptx
*@date :2022-11-20
***********************************************************/
u16 read_rom(u16 address)
{
u8 xdata dat[2]; //EEPROM操作缓冲
EEPROM_read_n(address, dat, 2);
return (dat[0] + (dat[1] << 8)); //返回读取的值
}
注意,此函数只适用于STC8G-STC8H-LIB-DEMO-CODE的封装库中的EEPROM中的函数,仅供参考,适配其他函数需要做出修改。