📄 18b20.c
字号:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit ds=P2^2;
uint temp,temp1;
float f_temp;
bit flag_b;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void dsreset(void)
{
uint i;
ds=0;
i=103;
while(i>0)i--;
ds=1;
i=4;
while(i>0)i--;
}
bit tempreadbit()
{
uint i;
bit dat;
ds=0;
i++;
ds=1;
i++;
i++;
dat=ds;
i=8;
while(i>0)i--;
return(dat);
}
uchar tempread()
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
void tempwritebyte(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)
{
ds=0;
i++;
i++;
ds=1;
i=8;
while(i>0)i--;
}
else
{
ds=0;
i=8;
while(i>0)i--;
ds=1;
i++;
i++;
}
}
}
/*void read_rom()
{
uchar n;
dsreset();
delay(1);
tempwritebyte(0x33);
for(n=0;n<8;n++)
{
rom[n]=tempread();
}
}*/
void tempchange()
{
dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0x44);
}
uint get_temp()
{
uchar a,b,i;
dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread();
b=tempread();
i=b;
i=i>>4;
if(i==0)
{
flag_b=1;
temp=b;
temp<<=8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*10+0.5;
}
else
{
flag_b=0;
a=~a;
a=a+1;
b=~b;
b=b+1;
temp=b;
temp<<=8;
temp=temp|a;
f_temp=temp*0.0625;
temp=f_temp*10+0.5;
}
f_temp=f_temp+0.5;
return temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -