⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24c16.c

📁 基于Cortex-M3的全自动焊接机
💻 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 + -