请教IIC读函数问题 急。。。。。。

UINT8 CH454_I2c_RdByte( void ) //读一个字节数据 { UINT8 dat,i; CH454_SDA_SET; CH454_SDA_D_IN; /* 设置SDA为输入方向 */ DELAY;

dat = 0; for( i = 0; i != 8; i++ ) // 输入8位数据 { CH454_SCL_SET; DELAY;

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

CH454_SCL_CLR; DELAY; } 请问;在读函数的过程中, 刚开始是CH454_SDA_SET;将数据线置为高,如果ch454向单片机发送高低电平,SDA能否识别出来是否为高低电平?我就不明白这点:刚开始置高,后来发送高低电平,单片机的SDA能否识别? 急。。。。请您尽快恢复。。。十分感谢。。。

你这段程序是适用于51单片机的操作,这个操作就是将51的引脚设置为输入。

你可以参考AVR单片机的例子。

UINT8 CH454_I2c_RdByte( void ) //读一个字节数据 { UINT8 c, i; CH454_SDA_IN; /* 设置SDA为输入方向 */ c = 0; for( i = 0; i != 8; i++ ) // 输入8位数据 { CH454_SCL_SET; DELAY; c <<= 1; if( CH454_SDA ) c++; // 输入1位 CH454_SCL_CLR; DELAY; } CH454_SDA_SET; CH454_SDA_OUT; CH454_SCL_SET; // 发出无效应答 DELAY; CH454_SCL_CLR; DELAY; return(c); }


只有登录才能回复,可以选择微信账号登录