标题:
普中es V2.0 开发板的IIC发送程序是不是有问题?
[打印本页]
作者:
xzf586
时间:
2017-9-17 10:53
标题:
普中es V2.0 开发板的IIC发送程序是不是有问题?
unsigned char I2cSendByte(unsigned char dat)
{
unsigned char a=0,b=0;//最大255,一个机器周期为1us,最大延时255us。
for(a=0;a<8;a++)//要发送8位,从最高位开始
{
SDA=dat>>7; //起始信号之后SCL=0,所以可以直接改变SDA信号
dat=dat<<1;
Delay5us();
SCL=1;
Delay5us();//建立时间>4.7us
SCL=0;
Delay5us();//时间大于4us
}
SDA=1;
Delay5us();
SCL=1;
while(SDA)//等待应答,也就是等待从设备把SDA拉低
{
b++;
if(b>200) //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束
{
SCL=0;
Delay5us();
return 0;
}
}
SCL=0;
Delay5us();
return 1;
}
如果是这样,不论有无应答,返回都是1
作者:
HC6800-ES-V2.0
时间:
2017-9-18 08:34
看到这段程序没?
while(SDA)//等待应答,也就是等待从设备把SDA拉低
{
b++;
if(b>200) //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束
{
SCL=0;
Delay5us();
return 0;
}
}
执行这段程序,就返回0啊。
只要执行了return,那么,子函数就返回了,不会再执行其它子函数的语句了。
作者:
riverlonger
时间:
2017-9-18 09:35
对着手册看时序了吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1