早教吧作业答案频道 -->其他-->
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;
}
不理解.求大虾!
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; //将读出的数据返回
}
{
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; //将读出的数据返回
}
看了51单片机DS18b02的驱动...的网友还看了以下:
等比数列an=a1*q^(n-1),Sn=a1(1-q^n)/(1-q)∴a3=2=a1*q^(3 2020-05-17 …
=a1(1-q^15)/(1-q)=a1(1-q^5)(1+q^5+q^10)/(1-q)我想知道 2020-05-17 …
判断p:x-2>5是q:x≤-1或x≥5的什么条件 2020-06-06 …
等比数列an=a1*q^(n-1),Sn=a1(1-q^n)/(1-q)∴a3=2=a1*q^(3 2020-06-17 …
如果(x+q)(x+1/5)的积中不含x项,则q等于(x+q)(x+1/5)=x^2+(q+1/5 2020-07-11 …
已知Q是关于t的正比例函数,且当t=5时,Q=-20.求:(1)Q关于t的函数表达式.(2)当t= 2020-08-03 …
某公司今年初向银行贷款a万元,年利率为q(复利计息),从今年末开始每年末偿还相同的金额,预计五年内还 2020-11-30 …
已知P:2+2=5,Q:3>2,则下列判断错误的是()A.“P或Q”为真,“非Q”为假B.“P且Q” 2020-12-07 …
已知P:2+2=5,Q:3>2,则下列判断错误的是()A.“P或Q”为真,“非Q”为假B.“P且Q” 2020-12-07 …
用逻辑联结词“且”、“或”联结命题p,q,并判断复合命题“p且q”、“p或q”的真假:1、p:6是3 2020-12-07 …