先将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,进而判断是否发生成功呢?
请各位大佬帮忙看下,先谢谢大佬们了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我分析了一下,PCin(3)就是读取PC3目前的状态
一周热门 更多>