早教吧 育儿知识 作业答案 考试题库 百科 知识分享

51单片机DS18b02的驱动程序求解释下,程序在下面,为什么程序中DQ=1了;再判断不是DQ肯定是1吗?ucharreadbyte(void){\x05uchari,value;\x05for(i=0;i>=1;\x05\x05DQ=1;//这里DQ赋值1了if(DQ)//为什么还判断呢\x05\x0

题目详情
51单片机DS18b02 的驱动程序求解释下,程序在下面,为什么程序中DQ=1了;再判断不是DQ肯定是1吗?
uchar read_byte(void)
{
\x05uchar i,value;
\x05for(i=0;i>=1;
\x05\x05DQ=1; //这里DQ赋值1了
if(DQ) //为什么还判断呢
\x05\x05value|=0x80;
\x05\x05delay(4);
\x05}
\x05return value;
}
不理解.求大虾!
▼优质解答
答案和解析
unsigned char Read1302(void)
{
unsigned char i,dat;
delaynus(2); //稍微等待,使硬件做好准备
for(i=0;i>=1; //将dat的各数据位右移1位,因为先读出的是字节的最低位
if(DATA==1) //如果读出的数据是1
dat|=0x80; //将1取出,写在dat的最高位
SCLK=1; //将SCLK置于高电平,为下降沿读出
delaynus(2); //稍微等待
SCLK=0; //拉低SCLK,形成脉冲下降沿
delaynus(2); //稍微等待
}
return dat; //将读出的数据返回
}