日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]I2C串行總線標(biāo)準(zhǔn)驅(qū)動(dòng)程序(C51)-萬(wàn)能程序/*------------------------------------------------------------------------------------------[文件名] I2C.c[版本] 1.1b==============================================

I2C串行總線標(biāo)準(zhǔn)驅(qū)動(dòng)程序(C51)-萬(wàn)能程序

/*------------------------------------------------------------------------------------------

[文件名] I2C.c

[版本] 1.1b

===================================================================================*/

#i nclude "reg51.h"

#i nclude "intrins.h"

unsigned char SystemError;

sbit SCL= P1^6; //定義串行時(shí)鐘線所在口 使用時(shí)根據(jù)自己的需要來(lái)定義

sbit SDA= P1^7; //定義串行數(shù)據(jù)線所在口 使用時(shí)根據(jù)自己的需要來(lái)定義

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

/*--------------------------------------------------------------------------------

調(diào)用方式:void AD7416_I2CStart(void) 2003/05/04

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用

---------------------------------------------------------------------------------*/

void I2CStart(void)

{

EA=0;

SDA=1; SCL=1; SomeNOP();//數(shù)據(jù)線保持高,時(shí)鐘線從高到低一次跳變,I2C通信開(kāi)始

SDA=0; SomeNOP();

SCL=0;

}

/*--------------------------------------------------------------------------------

調(diào)用方式:void AD7416_I2CStop(void) 2003/05/04

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用

---------------------------------------------------------------------------------*/

void I2CStop(void)

{

SCL=0; SDA=0; SomeNOP(); //數(shù)據(jù)線保持低,時(shí)鐘線從低到高一次跳變,I2C通信停止

SCL=1; SomeNOP(); SDA=1;

EA=1;

}

/*--------------------------------------------------------------------------------

調(diào)用方式:I2CAck(void) 2003/05/13

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用,等待從器件接收方的應(yīng)答

ACK BY AD7416

---------------------------------------------------------------------------------*/

WaitAck(void)

{

unsigned char errtime=255;//因故障接收方無(wú)ACK,超時(shí)值為255。

SDA=1;

SCL=1;

SystemError=0x10;

while(SDA)

{ errtime--;

if(!errtime)

{ AD7416_I2CStop();

AD7416_SystemError=0x11; //出錯(cuò)后給全局變量賦值

return;

}

}

SCL=0;

}

/*--------------------------------------------------------------------------------

調(diào)用方式:void SendAck(void) ﹫2003/05/13

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用,主器件為接收方,從器件為發(fā)送方時(shí),應(yīng)答信號(hào)。

---------------------------------------------------------------------------------*/

void SendAck(void)

{

SDA=0; SomeNOP(); //數(shù)據(jù)線保持低,時(shí)鐘線發(fā)生一次從高低的跳變 發(fā)送一個(gè)應(yīng)答信號(hào)

SCL=1; SomeNOP();

SCL=0;

}

/*--------------------------------------------------------------------------------

調(diào)用方式:void SendAck(void) ﹫2003/05/13

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用,主器件為接收方,從器件為發(fā)送方時(shí),非應(yīng)答信號(hào)。

--------------------------------------------------------------------------------*/

void SendNotAck(void)

{

SDA=1; SomeNOP(); //數(shù)據(jù)線保持高,時(shí)鐘線發(fā)生一次從高低的跳變 沒(méi)有應(yīng)答

SCL=1; SomeNOP();

SCL=0;

}

/*--------------------------------------------------------------------------------

調(diào)用方式:void I2CSend(uchar ch) 2003/05/13

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用

---------------------------------------------------------------------------------*/

void I2CSendByte(Byte ch)

{

unsigned char i=8;

while (i--)

{

SCL=0;_nop_();

SDA=(bit)(ch&0x80); ch<<=1; SomeNOP(); //時(shí)鐘保持低可以發(fā)送數(shù)據(jù)

SCL=1; SomeNOP();

}

SCL=0;

}

/*--------------------------------------------------------------------------------

調(diào)用方式:uchar I2CReceive(void) 2003/05/13

函數(shù)說(shuō)明:私有函數(shù),I2C專(zhuān)用

---------------------------------------------------------------------------------*/

Byte I2CReceiveByte(void)

{

unsigned char i=8,data=0;

SDA=1;

while (i--)

{

data<<=1;

SCL=0;SomeNOP();

SCL=1;SomeNOP(); //時(shí)鐘做一次從低到高的跳變 可以接收數(shù)據(jù)

data|=SDA;

}

SCL=0;

return data;

}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉