unsigned char Read18B20()
{
unsigned char dat;
unsigned char mask;
EA=0;
for(mask=0x01;mask!=0;mask<<=1)
{
IO_18B20=0;
_nop_();
_nop_();
IO_18B20=1;
_nop_();
_nop_();
if(!IO_18B20)
dat&=~mask;
else
dat|=mask;
DelayX10us(6);
}
EA=1;
return dat;
}
dat&=~mask;
dat|=mask;
這兩個看的不是很懂,麻煩可以清楚講解一下
假如我把最低一位寫了0那mask=0000 0010,一取反就是1111 1101,再dat&,怎么得到把最低位寫零。
而第二個,假如我寫了最低一位為1,mask=0000 0011,dat|=mask;
那dat=? 怎么把最低位寫1的信息賦值到dat? |