• 大小: 771B
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: 51单片机  

资源简介

51单片机的I2C模拟通信驱动 void I2CStart();//开始 void I2CStop();//停止 bit I2CWrite(uint8 date);//写操作 uint8 I2CReadNAK();//读操作NACK uint8 I2CReadACK();//读操作ACK

资源截图

代码片段和文件信息

#include “I2C.h“

#define I2CDelay() {_nop_();_nop_();_nop_();_nop_();}



void I2CStart()
{
I2C_SCL = 1;
I2C_SDA = 1;
I2CDelay();
I2C_SDA = 0;
I2CDelay();
I2C_SCL = 0;
}

void I2CStop()
{
I2C_SCL = 0;
I2C_SDA = 0;
I2CDelay();
I2C_SCL = 1;
I2CDelay();
I2C_SDA = 1;
I2CDelay();
}

bit I2CWrite(uint8 date)
{
uint8 mark;
bit ack;
for(mark = 0x80;mark != 0;mark >>=1)
{
if((mark&date)==0)
I2C_SDA = 0;
else
I2C_SDA = 1;
I2CDelay();
I2C_SCL = 1;
I2CDelay();
I2C_SCL = 0;
}
I2C_SDA = 1;
I2CDelay();
I2C_SCL = 1;
ack = I2C_SDA;
I2CDelay();
I2C_SCL = 0;
return (~ack);
}



uint8 I2CReadNAK()
{
uint8 mask;
uint8 dat;
I2C_SDA = 1;
for(mask = 0x80;mask != 0;mask >>= 1)
{
I2CDelay();
I2C_SCL = 1;
if(I2C_SDA == 0)
dat &= ~mask;
else
dat |= mask;
I2CDelay();
I2C_SCL = 0;
}
I2C_SDA = 1;
I2CDelay();
I2C_SCL = 1;
I2CDelay();
I2C_SCL = 0;

return dat;
}

uint8 I2CReadACK()
{
uint8 mask;
uint8 dat;
I2C_SDA = 1;
for(mask = 0x80;mask != 0;mask >>= 1)
{
I2CDelay();
I2C_SCL = 1;
if(I2C_SDA == 0)
dat &= (~mask);
else
dat |= mask;
I2CDelay();
I2C_SCL = 0;
}
I2C_SDA = 0;
I2CDelay();
I2C_SCL = 1;
I2CDelay();
I2C_SCL = 0;

return dat;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1327  2014-11-09 12:29  I2C.c

     文件        267  2014-11-07 16:48  I2C.h

     文件        115  2014-11-07 16:48  driver.h

----------- ---------  ---------- -----  ----

                 1709                    3


评论

共有 条评论