請(qǐng)教IIC讀函數(shù)問題 急。。。。。。

UINT8 CH454_I2c_RdByte( void ) //讀一個(gè)字節(jié)數(shù)據(jù) { UINT8 dat,i; CH454_SDA_SET; CH454_SDA_D_IN; /* 設(shè)置SDA為輸入方向 */ DELAY;

dat = 0; for( i = 0; i != 8; i++ ) // 輸入8位數(shù)據(jù) { CH454_SCL_SET; DELAY;

dat <<= 1; if( CH454_SDA_IN ) dat++; // 輸入1位

CH454_SCL_CLR; DELAY; } 請(qǐng)問;在讀函數(shù)的過程中, 剛開始是CH454_SDA_SET;將數(shù)據(jù)線置為高,如果ch454向單片機(jī)發(fā)送高低電平,SDA能否識(shí)別出來是否為高低電平?我就不明白這點(diǎn):剛開始置高,后來發(fā)送高低電平,單片機(jī)的SDA能否識(shí)別? 急。。。。請(qǐng)您盡快恢復(fù)。。。十分感謝。。。

你這段程序是適用于51單片機(jī)的操作,這個(gè)操作就是將51的引腳設(shè)置為輸入。

你可以參考AVR單片機(jī)的例子。

UINT8 CH454_I2c_RdByte( void ) //讀一個(gè)字節(jié)數(shù)據(jù) { UINT8 c, i; CH454_SDA_IN; /* 設(shè)置SDA為輸入方向 */ c = 0; for( i = 0; i != 8; i++ ) // 輸入8位數(shù)據(jù) { CH454_SCL_SET; DELAY; c <<= 1; if( CH454_SDA ) c++; // 輸入1位 CH454_SCL_CLR; DELAY; } CH454_SDA_SET; CH454_SDA_OUT; CH454_SCL_SET; // 發(fā)出無效應(yīng)答 DELAY; CH454_SCL_CLR; DELAY; return(c); }


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频