uchar readbyte()
{
uchar i,k;
SCL=0;
delay();
SDA=1;
for(i=0;i<8;i--)
{
SCL=1;
delay();
k=(k<<1)|SDA;//这一句看不懂,不知道为什么就能完成8位的接收
SCL=0;
delay();
}
delay();
return k;
}
书上的解释是:串行接收一个字节时需要将8位一位一位地接收,然后再组合成一个字节,上面代码中我们定义了一个临时变量k,将k左移一位后与SDA进行“或”运算,依次把8个独立的位放入一个字节中来完成接收。
它为什么要k<<1之后与SDA1 按位或?怎么完成把8位放入一个字节? 这个字节放入了谁中?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>