单片机求解?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; //从最低位到最高位传入
}
}
展开
 我来答
alex20035
推荐于2018-03-14 · 商业零售物流条码应用
alex20035
采纳数:78 获赞数:378

向TA提问 私信TA
展开全部
单总线协议的读写操作;
读操作是根据DQ信号变化情况,接受一个BIT的数据,并
dat|=0x80; 保存到dat的高位,然后在后面的循环中不断的将dat>>=1,让前面接收的数据向低位移动;并接收其它剩余位.当i=8正好接收完一个BYTE.

写操作和读操作对应,通过对DQ信号控制,发送一个BIT的数据,并
在循环中通过dat>>=1右移,和DQ = dat&0x01(每次传送右移后的dat最低位),最终把dat 八位数据逐个送到DQ上。
wolf_lhy
2013-01-16 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:550万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bxf0817
2013-01-16 · TA获得超过2162个赞
知道小有建树答主
回答量:1348
采纳率:0%
帮助的人:1072万
展开全部
dat|=0x80; 就是把dat的最高位置1,
DQ = dat&0x01;就是把dat的最低位赋值给DQ。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wyd633
2013-01-16
知道答主
回答量:6
采纳率:0%
帮助的人:7082
展开全部
应该是16位进制码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式