#include
sbit I2C_SCL = P2^1;
sbit I2C_SDA = P2^0;
void I2C_Start() //I2C×ÜÏ߯ôÓÃ
{
I2C_SCL = 1;
I2C_SDA = 1;
I2C_SDA = 0;
I2C_SCL = 0;
}
void I2C_Stop() //I2C×ÜÏß½áÊø
{
I2C_SDA = 0;
I2C_SCL = 1;
I2C_SDA = 1;
}
void I2C_SendByte(unsigned char Byte)//·¢ËÍһλ
{
unsigned char i;
for (i = 0; i < 8; i++)
{
I2C_SDA = Byte&(0x80>>i);
I2C_SCL = 1;
I2C_SCL = 0;
}
}
unsigned char I2C_ReceveByte(void)//½ÓÊÕһλ
{
unsigned char i;
unsigned char Byte = 0x00;
I2C_SDA = 1;
for (i = 0; i < 8; i++)
{
I2C_SCL = 1;
if(I2C_SDA){Byte|=(0x80>>i);}
I2C_SCL = 0;
}
return Byte;
}
void I2C_SendAck(unsigned char Ack)//·¢ËÍУÑéÂë
{
I2C_SDA = Ack;
I2C_SCL = 1;
I2C_SCL = 0;
}
unsigned char I2C_ReceiceAck(void)//½ÓÊÜУÑéÂë
{
unsigned char AckBit;
I2C_SDA = 1;
I2C_SCL = 1;
AckBit = I2C_SDA;
I2C_SCL = 0;
return AckBit;
{
报错:I2C.c(58): error C141: syntax error near ''
根据代码,第58行缺少一个右括号,这可能会导致编译器在第58行附近出现语法错误。请尝试将第58行的代码修改为:
return AckBit;
}
并重新编译代码。
应该是左右类型不一致的问题,修改第57行为 AckBit = (unsigned char)I2C_SDA;