sbit DQ=P1^3; /*温度检测*/
/*初始化ds18b20*/
void init18b20(void)
{
DQ=0;
del500us();
DQ=1;
delay50us();
do{}while(DQ);
do{}while(!DQ);
del500us();
}
/*写ds18b20,i为操作码*/
void wrwire(uchar i)
{
uchar j;
for(j=0;j<8;j++)
{
DQ=0;
delay10us();
if(i%2==1)
DQ=1;
else
DQ=0;
delay80us();
DQ=1; /*master release bus*/
del100us();
i=i>>1;
}
}
/*读ds18b20,返回读出数据*/
uint rdwire(void)
{
uchar i;
uint j=0;
for(i=0;i<12;i++)
{
DQ=0;
delay10us();
DQ=1;
_nop_();
_nop_();
if(DQ)
j=j+ercimi(i);
DQ=1;
del100us();
}
return(j);
}
void main()
{
init18b20();
wrwire(0Xcc);
wrwire(0XBE); /*read the temperature*/
tem1=rdwire();
init18b20();
}
DS18B20的C51 程序
0
最新评论共有 0 位网友发表了评论
查看所有评论
发表评论
热点关注
相关文章
外部连接
