• 大小: 2KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-08-06
  • 语言: 其他
  • 标签: I2C  24C16  

资源简介

只要定义SCL,SDA两个端口,可以从指定地址读写少于256个字节的内容,长期应用验证,方便使用。

资源截图

代码片段和文件信息



#include “config.h“

#ifdef C51

#define I2CWAIT _nop_();_nop_();_nop_();_nop_();_nop_()

void Start_I2c()
{
SDA=1;_nop_();
   SCL=1;I2CWAIT;    
   SDA=0;I2CWAIT;     
   SCL=0;
}

bit Stop_I2c()
{
SDA=0;I2CWAIT;
   SCL=1;I2CWAIT;
   SDA=1;_nop_();
return SDA;
}

bit SendByte(unsigned char c)
{
unsigned char i = 9;
bit rr;
 
do
{
SCL = 0;
SDA = (bit)(c & 0x80);
c = (c << 1) + 1;
I2CWAIT;
SCL = 1;
I2CWAIT;
} while(--i);
rr = SDA;
SCL = 0;
return rr;
}

unsigned char RcvByte(bit ack)
{
   unsigned char ci = 8;
  
SDA = 1;
do
{
I2CWAIT;
SCL = 1;
I2CWAIT;
c <<= 1;
if (SDA) c++;
SCL = 0;
} while(--i);
SDA = ack;
I2CWAIT;
SCL = 1;
I2CWAIT;
SCL = 0;
I2CWAIT;
return c;
}

bit SetAddr(unsigned char slaunsigned char subabit rw)
{
sla &= 0x07;
sla <<= 1;
if (rw)
sla |= 0xa1;
else
sla |= 0xa0;
Start_I2c();
if (SendByte(sla)) return 

评论

共有 条评论