单片机中|=是什么意思?
下面是一个单片机中ds302芯片用的读程序,请大虾指导;
void read_commend()
{
uchar i,date;
for(i=0;i<8;i++)
{
date>>=1;//要返回的数据右移一位
if(SDA==1)//当数据线为高时,证明该位数据为 1
date|=0x80;//要传输数据的当前值置为 1,若不是,则为 0
sclk=1;//拉高时钟线
sclk=0;//制造下降沿
}
return date;//返回读取出的数据
}
最佳答案:
date|=0x80 等同于:data=data | 0x80; 意思是:用变量data的值与0x80做“按位或”运算,并将运算结果再赋值给变量data;
因0x80 写成二进制就是:10000000b;
所以等同于:data=data | 10000000b;
由“按位或”运算的特性可分析出,此语句的目的是要把变量data的值的最高位写成“1”,而不改变其它位的值,
其 他 回 答: (共4条)
1楼
i是变量,I等 就是赋值给I
2楼
|是“或”,将左右两数的二进制形式“逐位相加”(可以这么理解,即两数的每个位只要有一个是1就是1,例:
1|0=1, 1|1=1, 0|1=1, 0|0=0
10|01=11 00|10=10 11|00=11 ......
11000110|11101100:
11000110
+11101100
_________
=11101110
而A|=B即A=A|B
3楼
……楼上的错了……“|=”是“或等于”的意思。具体例如a |= 0x02就是说a和0x02相或后的值赋给a。“或”运算不用说了吧……
查看更多相关问题 >>