uchar read_byte()
{
uchar i,j,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
j=sda;
k=(k<<1)|j;
scl=0;
delay();
}
return k;
}
帮忙解释下。。那个return k。。有什么用?k=(k<<1)|j;还有这个怎么理解?
uchar read_byte()
{
uchar i,j,k;
scl=0;
delay();
sda=1;
delay();
for(i=0;i<8;i++)
{
scl=1;
delay();
j=sda;
k=(k<<1)|j;
scl=0;
delay();
}
return k;
}
帮忙解释下。。那个return k。。有什么用?k=(k<<1)|j;还有这个怎么理解?
return k 是函数返回值,这是个子函数,处理完后返回给调用函数一个处理后的值。
k=(k<<1)|j;
这个是指K左移一位,在或上J,因为J=SDA,看你的写法,据我猜测DA是一个芯片的端口,这是串行输入的方式,你要读取芯片的输出值
假设某个时候K=0000 0001,假设j这个时候为1,那执行k=(k<<1)|j;后,K左移一位再或上J就为0000 0011了,一共执行8次,刚好从sda也就是j那里读出了一个字节的数据。
欢迎追问