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

新聞中心

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

I2C通信模塊c語言庫文件

作者: 時間:2016-11-30 來源:網絡 收藏

//(主機接收函數將要調用)從設備發生的應答信號
void I2C_Ack()
{
SDA=0;
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
_nop_();
_nop_();
}

//非應答信號產生函數
void I2C_NoAck()
{
SDA=1;
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
_nop_();
_nop_();
}

//主機發送多字節函數
bit SendString(uint8 address,uint8 *s,uint8 num)
{
uint8 i;
I2C_Start();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
I2C_SendByte(address);
if(ACK==0)
return 0;
for(i=0;i{
I2C_SendByte(*s);
if(ACK==0)
return 0;
DelayMs(10);//以等待設備寫入數據處理完成
s++;
}
I2C_Stop();
DelayUs(10);
return 1;
}

//主機接收多字節函數
bit ReceiveString(uint8 address,uint8 *s,uint8 num)
{
uint8 i;
I2C_Start();
I2C_SendByte(address);
if(ACK==0)
return 0;
I2C_Start();
I2C_SendByte(address+1);
if(!ACK)
return 0;
for(i=0;i{
*s=I2C_ReceiveByte();
I2C_Ack();
DelayMs(10);
s++;
}
*s=I2C_ReceiveByte();
I2C_NoAck(); //給的非應答信號
I2C_Stop(); //停止總線
return 1;
}

#endif

庫文件的調用例子:http://www.51hei.com/bbs/dpj-20623-1.html


上一頁 1 2 下一頁

評論


技術專區

關閉