标题:
C语言dat<<=1; dat|=SDA怎么移位啊,视频里说SDA=1也和移位有关系
[打印本页]
作者:
x51hei666
时间:
2020-2-23 10:26
标题:
C语言dat<<=1; dat|=SDA怎么移位啊,视频里说SDA=1也和移位有关系
unsigned char i2creadbyte() //读取字节
{
unsigned char a,dat=0;
SDA=1;
Delay10us();
for(a=0;a<8;a++)
{
SCL=1;
Delay10us();
dat<<=1;
dat|=SDA;
Delay10us();
SCL=0;
Delay10us();
}
return dat;
}
}
作者:
adject
时间:
2020-2-23 12:19
SCL=1;
Delay10us();
dat<<=1; //dat = dat<<1; dat 最低位为0
dat|=SDA; // dat = dat | SDA; 或取sda的数据 到 dat
Delay10us();
SCL=0;
Delay10us();
作者:
man1234567
时间:
2020-2-24 22:07
dat<<=1; //以二进制方式将 dat 数据位往高位移动,最高位被挤掉最低位补零
dat|=SDA; //以二进制方式将 dat 和 SDA 数据按位取或,因为读取的 SDA 只有 1 位,实际就是 dat 的最低位变成了 SDA 的值.
例 dat=①②③④⑤⑥⑦⑧B,SDA=(因为SDA只能0或1,所以SDA=0000000B),dat<<=1 后 dat=②③④⑤⑥⑦⑧0B,dat|=SDA 后 dat=②③④⑤⑥⑦⑧B ;绕回来(循环)一次是 dat=③④⑤⑥⑦⑧眧B ,直到 dat=眧砧礧稧笧簧紧B 完成数据读取。
作者:
xmfjfhcel
时间:
2020-2-25 08:53
楼上解说得太清楚了,学习了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1