📄 i2c.h
字号:
/*--------------------------------------------------------------------------
I2C.H
自编I2C函数 可修改控制口
--------------------------------------------------------------------------*/
#ifndef __I2C_H__
#define __I2C_H__
sbit SDA=P2^1; //定义控制口
sbit SCL=P2^2;
void start(void); //声明启动I2C函数
void stop(void); //声明停止I2C函数
void ack(void); //声明应答函数
void noack(void); //声明非应答函数
void sendbyte(uchar); //声明发送一个字节函数
uchar readbyte(void); //声明接受一个字节函数
void writetorom(uchar dt[],uchar,uchar); //声明写数据函数
void readfromrom(uchar dt[],uchar,uchar);//声明读数据函数
void start(void)
{
SDA=1;
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
}
void stop(void)
{
SDA=0;
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SDA=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
}
void ack(void)
{
SDA=0;
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
SDA=1;
}
void noack(void)
{
SDA=1;
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
SDA=0;
}
void sendbyte(uchar idata d)
{
uchar idata n=8;
uchar idata temp;
temp=d;
while(n--)
{
if((temp&0x80)==0x80)
{
SDA=1;
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
SDA=0;
}
else
{
SDA=0;
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=0;
}
temp=temp<<1;
}
}
uchar readbyte(void)
{
uchar idata temp=0;
uchar idata n=8;
SDA=1;
do{
SCL=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
SCL=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
if(SDA)
temp=temp|0x01;
else
temp=temp&0xfe;
if(n-1)
{
temp=temp<<1;
}
n--;
}
while(n);
return(temp);
}
void writetorom(uchar dt[],uchar address,uchar n)
{
uchar idata i;
uchar idata *pdt;
pdt=dt;
for(i=0;i<n;i++)
{
start();
sendbyte(0xa0);
ack();
sendbyte(address+i);
ack();
sendbyte(*(pdt+i));
ack();
stop();
delay(5);
}
}
void readfromrom(uchar dt[],uchar address,uchar n)
{
uchar idata i;
uchar idata *pdt;
pdt=dt;
for(i=0;i<n;i++)
{
start();
sendbyte(0xa0);
ack();
sendbyte(address+i);
ack();
start();
sendbyte(0xa1);
ack();
*(pdt+i)=readbyte();
SCL=0;
noack();
stop();
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -