单片机求解?dat/=0x80;是什么意思?? DQ = dat&0x01;???
/********ds18b20读一个字节**********/unsignedcharReadOneChar(void){unsignedchari=0,dat=0;f...
/********ds18b20读一个字节**********/
unsigned char ReadOneChar(void)
{
unsigned char i=0,dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; //高电平拉成低电平时读周期开始
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
//////////////////////////////////////////////////////////////////////////////////////////
/*************ds18b20写一个字节****************/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0; //从高电平拉至低电平时,写周期的开始
DQ = dat&0x01; //数据的最低位先写入
delay_18B20(5); //60us到120us延时
DQ = 1;
dat>>=1; //从最低位到最高位传入
}
} 展开
unsigned char ReadOneChar(void)
{
unsigned char i=0,dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; //高电平拉成低电平时读周期开始
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
//////////////////////////////////////////////////////////////////////////////////////////
/*************ds18b20写一个字节****************/
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0; //从高电平拉至低电平时,写周期的开始
DQ = dat&0x01; //数据的最低位先写入
delay_18B20(5); //60us到120us延时
DQ = 1;
dat>>=1; //从最低位到最高位传入
}
} 展开
4个回答
展开全部
dat/=0x80;的意思是 右移7位;
DQ = dat&0x01; 的意思是如果 dat的最低位为1,那么 DQ = 1,如果dat最低位为0,那么DQ=0,
也就是说,检测最低位.
举例: dat = 12; 换算成二进制是 0000,1100,
那么 dat & 0x01 就是 0000,1100 & 0000,0001,结果就是0
DQ = dat&0x01; 的意思是如果 dat的最低位为1,那么 DQ = 1,如果dat最低位为0,那么DQ=0,
也就是说,检测最低位.
举例: dat = 12; 换算成二进制是 0000,1100,
那么 dat & 0x01 就是 0000,1100 & 0000,0001,结果就是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
dat|=0x80; 就是把dat的最高位置1,
DQ = dat&0x01;就是把dat的最低位赋值给DQ。
DQ = dat&0x01;就是把dat的最低位赋值给DQ。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询