1.启动函数,结束函数按照时序图就可以写出来了。接下来就是发送字节函数,接收字节函数,应答与非应答函数。
2.发送字节函数,就是将字节变量按位赋予SDA引脚,通过引脚的高低电平变化,将字节发送出去。接收字节函数,即接收SDA上的引脚电平变化,将接收到的结果存放到字节上,最后将结果返回。至于是读还是写,在发送地址的时候,最低位就已经确定了
发送字节函数,实现方法很多,站内有很多例子可以参考。
特别要注意的是发送函数,要先将字节位赋给SDA引脚后再,将SCL引脚拉高。接收函数,则相反,需要把需要先把SCL引脚拉高再读取。 自己写的时候将接收函数弄反了,查询结果是个错误的,
①发送函数
将数据最高位放入SDA后,将数据左移一位,最后拉低SCL引脚。循环8次后数据就发送出去了。
这里是先接收数据,再拉低SCL引脚,表示接收完数据
/* I2C发送字节 */
void IIC_Send(unsigned char txd)
{
unsigned char i;
for(i=0;i<8;i++)
{
SDA=(txd&0x80);
txd<<=1;
Delay4us();
SCL=