请教有关DS1307与C51进行IIC通信的问题
我在读写时钟芯片DS1307时,C51与其进行IIC通信没有应答,芯片地址码没问题,是什么原因,清高手指点一下,谢谢!
我的程序是:
unsigned char IICCheckAcknowledge() /*IIC总线检测从机应答位*/
{
unsigned char SDAState;
SDA=1; /*SDA=1; 线与吗?应为SDA=0?*/
SCL=0;
_nop_();
_nop_();
SCL=1;
IICAckFlag=0;
SDAState=SDA;
if(SDAState==0) /*应答正常*/
{
SCL=0;
_nop_();
_nop_();
return(IICAckFlag);
}
else
{
IICAckFlag=1; /*应答不正常*/
SCL=0;
_nop_();
_nop_();
return(IICAckFlag);
}
}
就是当SCL高电平时,检测到SDA低电平就算是DS1307应答了
IICAckFlag=0;是应答标志,先置0,如果没有应答则置1
SDAState=SDA;是采样时钟脉冲为高电平时的SDA状态,如果为高则没有应答,为低,则有应答。
这个程序有问题吗?
会不会跟电气特性不稳定有关系?
发表时间:2005年9月20日22:25:16