?? i2c.c
字號(hào):
//i1c test//
sbit SDA=P3^2;
sbit SCL=P3^3;
//************* Delay *********//
void delay(int n)
{
int i;
for(i=0;i<=n;i++);
}
//**************Start**********//
void I2C_start(void)
{
SDA=1;
SCL=1;
delay(3);
SDA=0;
delay(3);
SCL=0;
}
//*************Stop***********//
void I2C_stop(void)
{
SDA=0;
SCL=1;
delay(3);
SDA=1;
delay(3);
SCL=0;
}
//*************Ack**************//
void I2C_ack(void)
{
SDA=0;
SCL=1;
delay(3);
SCL=0;
SDA=1;
}
//*************No Ack*********//
void I2C_nack(void)
{
SDA=1;
SCL=1;
delay(3);
SCL=0;
SDA=0;
}
//*********Check ack signal*******//
bit I2C_Cack(void)
{
bit a;
SDA=1;
SCL=1;
delay(1);
a=SDA;
delay(1);
SCL=0;
delay(3);
if(a==1)
{
return 1;
}
else
{
return 0;
}
}
//**********Send a Bety*********//
void I2C_Send_byte(char da)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((da<<i)&0x80)
{
SDA=1; //send "1"//
SCL=1;
delay(3);
SCL=0;
SDA=0;
delay(3);
}
else
{
SDA=0; //send "0"//
SCL=1;
delay(3);
SCL=0;
delay(3);
}
}
}
//*************receive a byte *********//
unsigned char I2C_Receive_byte(void)
{
unsigned char i,da=0;
bit a;
for(i=0;i<8;i++)
{
SDA=1;
SCL=1;
delay(3);
a=SDA;
delay(3);
SCL=0;
if(a==1)
{
da=da<<1;
da=da|0x01;
}
else
{
da=da<<1;
}
}
return da;
}
//********main************//
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -