DS18B20汇编程序与C程序

ds18b20 c程序
//DS1820 C51 子程序
//这里以11.0592M晶体为例, 不同的晶体速度可能需要调整延时的时间
//sbit DQ =P2^1;//根据实际情况定义端口 
typedef unsigned char byte;
typedef unsigned int word;
//延时
void delay(word useconds)
{
for(;useconds>0;useconds--);
}
//复位
byte ow_reset(void)
{
byte presence;
DQ = 0;              //pull DQ line low
delay(29);          // leave it low for 480us
DQ = 1;              // allow line to return high
delay(3);            // wait for presence
presence = DQ; // get presence signal
delay(25);          // wait for end of timeslot
return(presence);            // presence signal returned
}                                    // 0=presence, 1 = no part
//从 1-wire 总线上读取一个字节
byte read_byte(void)
{
byte i;
byte value = http://www.byf.com/baike/0;
for (i=8;i>0;i--)
{
value>>=1;
DQ = 0;                // pull DQ low to start timeslot
DQ = 1;                // then return high
delay(1);              //for (i=0; i<3; i++); 
if(DQ)value|=0