永发信息网

关于I2C总线读一个字节的问题 ,如何理解k=(k<<1)|SDA;这一句

答案:2  悬赏:10  手机版
解决时间 2021-03-23 13:12
uchar readbyte()
{
unsigned char i,k;
SCL=0;
delay();
SDA=1;
for(i=0;i<8;i++)
{
SCL=1;
delay();
k=(k<<1)|SDA;
SCL=0;
delay();
}
delay();
return k;
}
最佳答案
I2C读一个字节的时候是读SDA上的信号,只能一位一位的读,k=(k<<1)|SDA这样写还是不太好,有时候可能会出错,因为k是char类型,而sda上读的是0或者1,是bit类型,可以换一种写法,k=(k<<1)|SDA这样写的本意是将每次读的位保存到k临时变量中,先读取高位,每次保存到k的低位,读取下一位的时候,再将k左移就将之前读取的位都左移了一次。你可以试着每一步试着用一个数值试一下。这样你就话明白了。
全部回答
k 是八位的变量。 k=(k<<1),左移一位。 在右边,腾出一个空位,自动补上0。 |sda,把 sda (可能是1,也可能是0),加入到空位中。 循环八次,就把 sda 读出了八遍,依次写到 k 的八个位中。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新康医药连锁望庄店在什么地方啊,我要过去处
表达对美的感受的句子,求描写女子手美的词语
为什么uc浏览器下载视频网络错误
口÷△=28……5,△最小是()。当△最小时,口是
如图,Rt△BAO的直角边OA在y轴上,点B在第一
发源地美业会所地址在什么地方,想过去办事
简一大理石瓷砖花色多么?好看么?
关于写作的名言林语堂,林语堂有什么名言?
隆冬到来时,百花即已绝。(陈毅:《梅》)
临时身份证能不能办银行卡?
我男朋友是江西的,我是贵州的,我在贵州考事
读图,回答下列问题。1.图中反映出的主要问题
卷土重来的意思是什么,昨日重现什么意思
沁源达通汽贸怎么去啊,有知道地址的么
回迁房办理房产证是否根据回迁证上面的信息进
推荐资讯
为什么loga f(x)<b的不等式可变形为loga f(x)
同一劳动,在劳动时间不变的情况下,社会劳动
逍遥谷地址在哪,我要去那里办事
我的电脑可以上网,可是打不开来看电视剧,怎
包保是什么意思
惠普Photosmart A516 打印照片怎么泛紫啊
初一语文 古诗词鉴赏
不知火舞和三个小男孩无遮挡
什么叫兰花出架
同是海蝶旗下艺人,薛之谦红到发紫,为什么许
国家果酒及果蔬饮品质量监督检验中心我想知道
单选题下列有关实验的叙述,正确的是A.提高蔗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?