【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,进而判断是否发生成功呢?
请各位大佬帮忙看下,先谢谢大佬们了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-07-21 06:00
 精彩回答 2  元偷偷看……
零一三南宫南
2楼-- · 2019-07-21 11:54
零一三南宫南 发表于 2019-1-26 14:31
帮你顶一下帖子

谢谢大佬顶贴
xqq27
3楼-- · 2019-07-21 13:59
请问楼主解决了吗
Teayang
4楼-- · 2019-07-21 14:54
Teayang 发表于 2019-4-10 13:46
请问楼主解决了吗

我分析了一下,PCin(3)就是读取PC3目前的状态
xqq27
5楼-- · 2019-07-21 16:47
xqq27 发表于 2019-4-16 10:15
我分析了一下,PCin(3)就是读取PC3目前的状态

不知道对不对

一周热门 更多>