for(i=0;i<8;i++) { U8FLAG=2; while((!P2_0)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0; if(P2_0)U8temp=1; U8FLAG=2; while((P2_0)&&U8FLAG++); //超时则跳出for循环 if(U8FLAG==1)break; //判断数据位是0还是1 // 如果高电平高过预定0高电平值则数据位为 1 U8comdata<<=1; U8comdata|=U8temp; //0 }//rof
解答
U8comdata<<=1相当于 U8c omdata= U8comdata<<1, U8comdata|=U8temp相当于 U8comdata = U8comdata | U8temp。
类似的还有:+=、 -=、 *= 、 /= 、%=、>>=、&=、~= 、 ^=。 这在C语言中叫做复合赋值运算符。格式如下: 变量 复合赋值运算符 表达式 解释:首先对变量进行某种运算(运算符就是"="前的运算符,运算对象就是"="后面的表达式或变量或常数),然后再将结果赋值回该变量(就是“=”)。
|