【ov7670】关于ov7670的SCCB总线协议中if(SCCB_READ_SDA)res=1;的疑问

2019-07-21 02:51发布

先将sccb.c的疑问代码段贴出:


//SCCB,写入一个字节
//返回值:0,成功;1,失败.
uint_8 SCCB_WR_Byte(u8 dat)

{
    uint_8 j,res;
    for(j=0;j<8;j++) //循环8次发送数据
    {
        if(dat&0x80)SCCB_SDA_H
        else SCCB_SDA_L;
        dat<<=1;
        Delay_us(50);
        SCCB_SCL_H;
        Delay_us(50);
        SCCB_SCL_L;
    }            
    SCCB_SDA_IN();       //设置SDA为输入
    Delay_us(50);
    SCCB_SCL_H;            //接收第九位,以判断是否发送成功
    Delay_us(50);
    if(SCCB_READ_SDA)res=1; //SDA=1发送失败,返回1
    else res=0;         //SDA=0发送成功,返回0
    SCCB_SCL_L;
    SCCB_SDA_OUT();        //设置SDA为输出   
    return res;  
}     



其中,这句话没看懂:
if(SCCB_READ_SDA)res=1; //SDA=1发送失败,返回1
其中SCCB_READ_SDA有之前的宏定义:
#define SCCB_READ_SDA    PCin(3)      //输入SDA

PCin(3)不是初始化pinC组的3号引脚为输入的意思嘛,为啥这里需要判断它的值是否为非0,进而判断是否发生成功呢?
请各位大佬帮忙看下,先谢谢大佬们了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。