这是一款非常实用的IIC模式控制程序,采用了简洁明了的switch语句,让用户可以轻松理解和使用。该程序具有可读性强、便捷性高的特点,能够帮助用户轻松实现IIC通信控制。此外,该程序还包括了E24C64_Send_Byte和E24C64_Recv_Byte等函数,可以帮助用户更加方便地进行数据传输和接收。
为了进一步提高程序的效率,我们将零散的函数整合到switch语句内,使得程序更加简洁高效。如果您需要一个高效、实用、易于掌握的IIC模式控制程序,这款程序绝对是您的不二选择!
程序如下:
u8 IIC_MODE(u8 i)
{
u8 j = 0;
u16 loop_cnt = 0;
switch(i)
{
case Start:
I2C_SDA(1);
I2C_SCL(1);
I2C_SDA(0);
I2C_SCL(0);
break;
case Stop:
I2C_SDA(0);
I2C_SCL(1);
I2C_SDA(1);
break;
case Ack:
I2C_SDA(0);
I2C_SCL(1);
I2C_SCL(0);
I2C_SDA(1);
break;
case NAck:
I2C_SDA(1);
I2C_SCL(1);
I2C_SCL(0);
break;
case WAck:
I2C_SDA(1);
I2C_SCL(1);
j = I2C_SDAIN;
I2C_SCL(0);
return j;
case Waiting:
do{
IIC_MODE(Start);
E24C64_Send_Byte(0XA0);
j = IIC_MODE(WAck);
IIC_MODE(Stop);
if(++loop_cnt > 300)
{
return 1;
};
}while(j != 0);
break;
default:
break;
};
return 0;
}
void E24C64_Send_Byte(u8 j)
{
u8 i;
for (i = 0; i < 8; i++)
{
I2C_SDA(j & 0x80);
I2C_SCL(1);
I2C_SCL(0);
j <<= 1;
};
I2C_SDA(1);
return;
}
u8 E24C64_Recv_Byte(void)
{
u8 i,j=0;
for (i = 0; i < 8; i++)
{
I2C_SCL(1);
j <<= 1;
if (I2C_SDAIN){j++;};
I2C_SCL(0);
};
return j;
}
现在,使用这个程序,您可以轻松实现IIC通信控制,并且代码更加简洁高效。