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

📄 24cxx.c

📁 24CXX全系列EEPROM底层读写函数
💻 C
字号:
#include <I2C.C>
#define EWrite 0xA0
#define ERead  0xA1

/******************************************************************** 
* 名称:Wait_5ms
* 功能:延时
* 调用:无
* 输入:无
* 返回值:无
***********************************************************************/
void Wait_5ms()
{
int i;
for(i=600;i>0;i--);
}

/******************************************************************** 
* 名称:ByteWrite
* 功能:向EEPROM指定地址写入一个字节数据
* 调用:I2CStart();I2CSendByte;WaitAck();I2CStop();Wait_5ms();
* 输入:uint Eaddress,uchar Edata
* 返回值:bit 
***********************************************************************/
bit ByteWrite(uint Eaddress,uchar Edata)
{
I2CStart();
I2CSendByte(EWrite|((uchar)(Eaddress>>7)));
if(WaitAck())
	{
	 I2CSendByte((uchar)Eaddress);
	 if(WaitAck())
		 {
		 I2CSendByte(Edata);
		 if(WaitAck())
			 {
			 I2CStop();
			 Wait_5ms();
		     return(true);
			 }
		 }
	 }
I2CStop();
return(false);
}

/******************************************************************** 
* 名称:CurrentRead
* 功能:从EEPROM当前地址读出一个字节数据
* 调用:I2CStart();I2CReceiveByte;WaitAck();SendNotAck();I2CStop();
* 输入:uchar *p
* 返回值:bit 
***********************************************************************
bit CurrentRead(uchar *p)
{
I2CStart();
I2CSendByte(ERead);
if(WaitAck())
	{
	*p = I2CReceiveByte();
	SendNotAck();
	I2CStop();
	return(true);
	}
I2CStop();
return(false);
}

/******************************************************************** 
* 名称:RandomRead
* 功能:从EEPROM指定地址读出一个字节数据
* 调用:I2CStart();I2CSendByte;I2CReceiveByte;WaitAck();SendNotAck();I2CStop();
* 输入:uint Eaddress,uchar *p
* 返回值:bit 
***********************************************************************/
bit RandomRead(uint Eaddress,uchar *p)
{
I2CStart();
I2CSendByte(EWrite|((uchar)(Eaddress>>7)));
if(WaitAck())
	{
	I2CSendByte((uchar)Eaddress);
	if(WaitAck())
		{
		I2CStart();
	    I2CSendByte(ERead);
		if(WaitAck())
			{
			*p = I2CReceiveByte();
	        SendNotAck();
	        I2CStop();
	        return(true);
			}
		}
	}
I2CStop();
return(false);
}

/******************************************************************** 
* 名称:SequentialRead
* 功能:从EEPROM指定地址顺序读出一串字节数据
* 调用:I2CStart();I2CSendByte;I2CReceiveByte;WaitAck();SendNotAck();I2CStop();
* 输入:uint Eaddress,uchar *p,uint Num
* 返回值:bit 
***********************************************************************
bit SequentialRead(uint Eaddress,uchar *p,uint Num)
{
I2CStart();
I2CSendByte(EWrite|((uchar)(Eaddress>>7)));
if(WaitAck())
	{
	I2CSendByte((uchar)Eaddress);
	if(WaitAck())
		{
		I2CStart();
	    I2CSendByte(ERead);
		if(WaitAck())
			{
			while(Num--)
				{
				*(p++) = I2CReceiveByte();
		        if(Num)SendAck();
				}
			SendNotAck();
			I2CStop();
	        return(true);
			}
		}
	}
I2CStop();
return(false);
} */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -