📄 24c16.c
字号:
#include "24C16.h"
#include "delay.h"
tI2CM_DEVICE CAT24C02;
signed int ReE2Present_Data = 0 ; //从 EEPROM 返回的当前数据
/*******************************************************************************
函数: WriteByteToEEPROM()
功能: 向EEPROM指定地址写入一个字节的数据
参数:
add: 数据存在EEPROM的地址
data:要写入的数据
返回: 无
******************************************************************************/
void WriteByteToEEPROM(unsigned long add , unsigned char data)
{
I2CM_DeviceInitSet(&CAT24C02, 0xA0 >> 1, 0, 1, (void*)0, 0);
I2CM_DeviceDataSet(&CAT24C02, add, &data, 1);
I2CM_DataSend(&CAT24C02);
}
/*******************************************************************************
函数:ReadByteFromEEPROM()
功能:向EEPROM指定地址读取一个字节数据
参数:
add: 数据存在EEPROM的地址
返回:
data:返回的指定地址的数据
******************************************************************************/
char ReadByteFromEEPROM(unsigned long add )
{
unsigned char data;
I2CM_DeviceInitSet(&CAT24C02, 0xA0 >> 1, 0, 1, (void*)0, 0);
I2CM_DeviceDataSet(&CAT24C02, add, &data, 1);
I2CM_DataRecv(&CAT24C02);
return data;
}
/******************************************************************************
函数:WriteSetDataToEEPROM()
功能:向EEPROM的指定地址起写入4个字节数据,格式为从写入的首地址依次增加
参数:add :向EEPROM写入数据时的首地址
Present_Data :当前数据
返回: 无
******************************************************************************/
void WriteSetDataToEEPROM(unsigned int add , signed int Present_Data)
{
unsigned char Data_Buff[2];
Present_Data = Present_Data +10000; //数据加 10000 是为了区分数据正负
Data_Buff[0] = Present_Data & 0xff; //获取当前数据低位
Data_Buff[1] = (Present_Data>>8) & 0xff; //获取当前数据高位
WriteByteToEEPROM(add , Data_Buff[0]);//低位在低地址
Delay(0x10ff);
WriteByteToEEPROM(add+1 , Data_Buff[1]);
}
/******************************************************************************
函数:signed int ReadSetDataFromEEPROM()
功能:向EEPROM的指定地址起读出4个字节数据,格式为从读出的首地址依次增加
参数:
返回: 无
******************************************************************************/
signed int ReadSetDataFromEEPROM(unsigned long add)
{
unsigned char Data_Buff[2];
Data_Buff[0] = ReadByteFromEEPROM(add); //从EEPROM中读出8字节数据
Delay(0x10ff);
Data_Buff[1] = ReadByteFromEEPROM(add+1);
//如要用到从 EEPROM 中读出的当前数据、设定数据上限、设定数据下限需将这些数减 10000
ReE2Present_Data = Data_Buff[0] | (Data_Buff[1]<<8);
//从 EEPROM 读出得到实际值
ReE2Present_Data = ReE2Present_Data-10000;
return ReE2Present_Data;//返回读取数据
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -