#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit y0=P3^2;
sbit y1=P3^1;
sbit y2=P3^0;
sbit ds=P3^7;
bit flag; //初始化标志位,flag=1,初始化成功,flag=0,初始化失败
uint temp; //temp为16位的数据,所以用uint,uchar只能用于8位的变量
uchar code table_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a–)
for(b=200;b>0;b–);
}
void delay_us(uint t) //us级延迟函数
{
while(t–);
}
void ds_reset() //复位初始化函数
{
ds=1; //将单总线拉高,为初始化准备
delay_us(5); //延时30多us
ds=0; //将电平拉低,当低电平保持480us~960us时,就成为了DS18B20的复位信号
delay_us(80); //大约延时7百多us,当DS18B20收到复位脉冲后的15~60us会发送一个存在脉冲
ds=1; //将总线拉高,为DS18B20发