?? ds18b20.c
字號(hào):
/************DS18B20初始化******/
uchar Ds18b20_Init(void)//存在返0.否則返1
{ uchar temp=1;
uchar outtime=ReDetectTime;//超時(shí)時(shí)間
while(outtime--&& temp)
{
IoOut_DQ();
Delay_us(2);//(250)1514us時(shí)間可以減小嗎
ReleaseDQ();
Delay_us(2);
PullDownDQ();
Delay_us(600);//514us(480-960)
ReleaseDQ();
Delay_us(70);//73us(>60)
IoIn_DQ();
temp=ReadDQ();
Delay_us(500);//us
}
return temp;
}
/*************寫bit2DS18B20***********/
void Ds18b20_WriteBit(uchar bitdata)
{ ioout_dq();
if(bitdata)
{
PullDownDQ();
Delay_us(2);//2us(>1us)
ReleaseDQ();//(上述1-15)
Delay_us(85);//86us(45-x,總時(shí)間>60)
}else
{
PullDownDQ();
Delay_us(2);//86us(60-120)
}
ReleaseDQ();
Delay_us(2);//2us(>1us)
}
/***********寫B(tài)yte Ds18b20*********/
void Ds18b20_WriteByte(uchar chrdata)
{
uchar ii;
for(ii=0;ii<8;ii++)
{
Ds18b20_WriteBit(chardata &Ox01);
chadata>>=1;
}
}
/***********寫Ds18b20*********/
void Ds18b20_Write(uchar *p_readdata,uchar butes)
{
while(bytes--)
{
Ds18b20_WriteByte(*p_readdata);
p_readdata++;
}
}
/**********讀bit from Ds18b20*********/
uchar Ds18b20_ReadBit(void)
{
uchar bitdata;
IoOut_DQ();
PullDownDQ();
Delay_us(2);//2us(>1us)
ReleaseDQ();
Delay_us(8);//8us(<15us)
IoIn_DQ();
bitdata=ReadDQ();
Delay_us(85);//85us(上述總時(shí)間要>60us)
return bitdata;
}
/**********讀 Byte Ds18b20 *********/
uchar Ds18b20_ReadByte(void)
{
uchar ii,chardata;
for(ii=0;ii<8;ii++)
{
chardata>>=1;
if(Ds18b20_ReadByte())chardata|=Ox80;
}
return chardata;
}
/**********讀 Ds18b20 ROM**********/
bit Ds18b20_ReadRom(uchar *P_readdata)//成功返回0,失敗返回1
{
uchar ii=8;
if(Ds18b20_Init()) return 1;
Ds18b20_WriteByte(ReadRom);
while(ii--)
{
*P_readdata=Ds18b20_ReadByte();
p_readdata++;
}
return 0;
}
/**********讀 Ds18b20 EE**********/
uchar Di18b20_ReadEE(uchar *P_readdata)//成功返回0,失敗返回1
{
uchar ii=9;
if(Ds18b20_Init())return 1;
Delay_us(1);
Ds18b20_WriteByte(SkipRom);
Delay_us(1);
Ds18b20_WriteByte(ReadScr);
Delay_us(1);
while(i--)
{
*p_readdata=Di18b20_ReadByte();
p_readdata++;
}
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -