久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > I2C通信模塊c語言庫文件

I2C通信模塊c語言庫文件

作者: 時間:2016-11-30 來源:網絡 收藏
文件名i2c.h


/***************************************************
名稱:I2C通信模塊修改版
編寫:YuMin_Dong
時間:2012.11.17
***************************************************/
#ifndef _I2C_H_
#define _I2C_H_
sbit SDA=P1^0;
sbit SCL=P1^1;
uint8 ACK;

本文引用地址:http://cqxgywz.com/article/201611/323826.htm


//開啟I2C總線
void I2C_Start()
{
SDA=1;
//_nop_();
//_nop_();
//_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;//鉗主總線
_nop_();
_nop_();
}

//停止I2C總線
void I2C_Stop()
{
SDA=0;
//_nop_();
//_nop_();
//_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
}

//I2C通信主機發送字節
void I2C_SendByte(uint8 byte)
{
uint8 i;
for(i=0;i<8;i++)
{
if(byte&0x80)
SDA=1;
else SDA=0;
_nop_();
SCL=1;//使SDA數據有效
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
byte<<=1;
_nop_();
_nop_();
}
SDA=1;//數據線浮高
_nop_();
_nop_();
SCL=1;//使讀取的數據有效,判斷是否應答或非應答
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
if(SDA==1)
ACK=0;//收到非應答信號
else ACK=1;//收到應答信號
SCL=0;//鉗總線
_nop_();
_nop_();
}

//I2C通信主機接收字節
uint8 I2C_ReceiveByte()
{
uint8 i;
uint8 byte;

for(i=0;i<8;i++)
{
SDA=1;//拉高準備接收
_nop_();
SCL=1;
byte<<=1;
if(SDA==1)
byte|=0x01;
else byte&=0xfe;
SCL=0;
_nop_();
_nop_();
}
return byte;
}


上一頁 1 2 下一頁

評論


技術專區

關閉