uchar Read_A_Byte()
{
uchar i,b;
for(i=0;i<8;i++)
{
SCL=1;b<<=1;B|=SDA;SCL=0;
}
return b;
}
帮俺讲一下,这个程序。为什么能读一个字节,B是干什么用?
------解决方案--------------------
这个程序有问题。
大写的 B 应该改为小写的 b 。
------解决方案--------------------
------解决方案--------------------
接二楼的,比如你要接受的数据为10101011(8位),b刚开始初始化为00000000
循环开始,在scl为高时,读取sda上的数据,对于数据10101011,按高位读入,则第一个读入为1,即scl为高时,sda应该为1,第一个循环结束,b=00000001
第二个循环,b左移一位,b=00000010,再次读入sda,应该为0,则b=b|sda后,b=00000010,第三个循环再左移,得00000100,再读入,得00000101
知道b=10101011,把b返回,就是得到i2c上的数据了
应该明白了吧
------解决方案--------------------
代码编写者没有一个好习惯
胡乱起名