📄 24cxx.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 + -