📄 standard_i2c.h
字号:
/*--------------------------------------------------------------------------
I2C.H
Design For : I2C 器件
Description: I2C总线的标准通讯模式(12MHz晶振)
Author:xieqin
CopyRight:2004.9.7
--------------------------------------------------------------------------*/
#ifndef __I2C_H__
#define __I2C_H__
#include<intrins.h>
sbit SCL=P1^1; //串行时钟口
sbit SDA=P1^0; //串行数据口
void Start_I2C() //申请I2C总线函数
{
SDA=1;
SCL=1;
_nop_(); _nop_();_nop_(); _nop_();
SDA=0;
_nop_(); _nop_();_nop_(); _nop_();
SCL=0;
}
void Stop_I2C() //释放I2C总线函数
{
SDA=0;
SCL=1;
_nop_(); _nop_();_nop_(); _nop_();
SDA=1;
_nop_(); _nop_(); _nop_(); _nop_();
SCL=0;
}
void AckS_I2C(bit c) //发送应答位函数
{
if(c)SDA=1;
else SDA=0;
SCL=1;
_nop_(); _nop_(); _nop_(); _nop_();
SCL=0;
}
bit SendByte_I2C(unsigned char val)//发送单字节数据函数
{
unsigned char x,i;
bit c;
for(x=0x80,i=0;i<8;i++,x>>=1)
{
if(val&x)SDA=1;
else SDA=0;
SCL=1;
SCL=0;
}
SDA=1;
SCL=1;
_nop_(); _nop_(); _nop_(); _nop_();
c=SDA;
SCL=0;
return c;
}
unsigned char ReadByte_I2C() //接收单字节数据函数
{
unsigned char i,x,val;
for(SDA=1,i=0,x=0x80,val=0x00;i<8;i++,x>>=1)
{
SCL=0;
_nop_(); _nop_(); _nop_(); _nop_();
SCL=1;
if(SDA)val|=x;
}
SCL=0;
return val;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -