include <REGX52.H>
sbit SCL=P2^1;
sbit SDA=P2^0;
void IC2_Start(void)
{
SCL=1;
SDA=1;
SDA=0;
SCL=0;
}
void IC2_End(void){
SDA=0;
SCL=1;
SDA=1;
}
void I2C_Send(unsigned char Byte){
unsigned char i;
SCL=0;
for(i=0;i<8;i++){
SDA=Byte&(0x80>>i);
SCL=1;
SCL=0;
}
}
unsigned char I2C_Receive(void){
unsigned char Byte,i;
SDA=1;
for(i=0;i<8;i++){
SCL=1;
Byte=SDA|(0x00>>i);
SCL=0;
}
return Byte;
}
void Send_Ack(bit ack){
SDA=1;
SDA=ack;
SCL=1;
SCL=0;
}
bit Receive_Ack(void){
bit ack;
SDA=1;
SCL=1;
ack=SDA;
SCL=0;
return ack;
}
头文件
ifndef I2C_H
define I2C_H
void IC2_Start(void);
void IC2_End(void);
void I2C_Send(unsigned char Byte);
unsigned char I2C_Receive(void);
void Send_Ack(bit ack);
bit Receive_Ack(void);