📄 iic.h
字号:
//---------------------------------------------------------------------------
//*****************************************************************//
//*************** IIC fuction ******************************//
//*****************************************************************//
//---------------------------------------------------------------------------
sbit scl=P2^0;
sbit sda=P2^1;
//sbit scl2= P2^2;
//sbit sda2 = P2^3;
//这里只写了两个I2C设备,如果需要可以再加上 sbit scl2=xx; sbit sda2=xx; 实际上多个设备的scl脚可以共用
//---------------------------------------------------------------------------
unsigned char iic_delay_time = 8;
/*
void scl(device,value)
{
if (device==0) //设备1
scl1=value;
if (device==1) //设备2
scl2=value;
}
void sda(device,value)
{
if (device==0) //设备1
sda1=value;
if (device==1) //设备2
sda2=value;
}
bit sdasense(char device)
{
switch(device)
{
case 1: return sda1;
break;
case 2: return sda2;
break;
}
}
*/
// delay
void iic_delay(unsigned char m)
{
unsigned char n;
for(n=0;n<m;n++);
}
////////////////读24c01--外部调用/////////////////////////
//启动I2C总线的函数,当scl为高电平时使sda产生一个负跳变
void iic_start(void)
{
sda=1;//sda=1;
scl=1;//scl=1;
iic_delay(iic_delay_time);
sda=0;
iic_delay(iic_delay_time);
scl=0;
iic_delay(iic_delay_time/2);
}
//终止I2C总线,当scl为高电平时使sda产生一个正跳变
void iic_stop(void)
{
scl=0;
sda=0;
scl=1;
iic_delay(iic_delay_time);
sda=1;
iic_delay(iic_delay_time);
}
//发送应答信号
void iic_ack(void) {
sda=0;
scl=1;
scl=0;
sda=1;
}
//发送无应答信号
void iic_noack(void)
{
sda=1;
scl=1;
scl=0;
}
//检测应答信号
bit iic_testack(void)
{
bit errorbit; //真确应答,返回0
sda=1;
iic_delay(iic_delay_time);
scl=1;
iic_delay(iic_delay_time);
errorbit=sda;//sdasense(device);
scl=0;
iic_delay(iic_delay_time);
return(errorbit);
}
//发送一个字节
void iic_write8bit(unsigned char input)
{
unsigned char temp;
for(temp=0;temp<8;temp++)
{
if((input<<temp)&0x80)
sda=1;
else
sda=0;
scl=1;
iic_delay(iic_delay_time);
scl=0;
}
}
//读一个字节
unsigned char iic_read8bit(void)
{
unsigned char temp,rbyte=0;
for(temp=0;temp<8;temp++)
{
scl=1;
iic_delay(iic_delay_time);
if(sda)//sdasense(device))
rbyte=(rbyte<<1)+1;
else
rbyte=rbyte<<1;
scl=0;
}
return(rbyte);
}
//-------------------end 24CXX.H-----------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -