/****************************************************************************************************************
*************************
*Author:JYW
*Time:2019_04_12
*Describe:LetAllLinesOfCodeSpeak
*****************************************************/
/*********************************************************
Describe:代码练习
*********/
unsigned char Ds18b20Initial(void)
{
unsigned char Status = 0x00;
unsigned int CONT_1 = 0;
unsigned char Flag_1 = 1;
Ds18b20OutputInitial();
Ds18b20IO = 1;
Ds18b20Delay(260);
Ds18b20IO = 0;
Ds18b20Delay(750);
Ds18b20IO = 1;
Ds18b20InputInitial();
while((Ds18b20IO != 0)&&(Flag_1 == 1))
{
CONT_1++;
Ds18b20Delay(10);
if(CONT_1 >8000) Flag_1 = 0;
Status = Ds18b20IO;
}
Ds18b20OutputInitial();
Ds18b20IO = 1;
Ds18b20Delay(100);
return Starus;//返回初始化状态
/*
该程序是说在Ds18b20InputInitial();之后Ds18b20IO一定是
高电平,故如果返回的是0的话说明Ds18b20响应了,如果
返回的是1的话说明没有响应成功
*/
}
void Ds18b20Write(unsigned char infor)
{
unsigned int i;
Ds18b20OutputInitial();
for(i=0;i<8;i++)
{
if(infor & 0x01)
{
Ds18b20IO = 0;
Ds18b20Delay(6);
Ds18b20IO = 1;
Ds18b20Delay(50);
}
else
{
Ds18b20IO = 0;
Ds18b20Delay(50)
Ds18b20IO = 1;
Ds18b20Delay(6);
}
infor >>=1;
}
/*
首先写入的是低位
*/
}
unsigned char Ds18b20Read(void)
{
unsigned char Value = 0x00;
unsigned int i;
Ds18b20OutputInitial();
Ds18b20IO = 1;
Ds18b20Delay(10);
for(i=0;i<8;i++)
{
Value >>= 1;
Ds18b20OutputInitial();
Ds18b20IO = 0;
Ds18b20Delay(3);
Ds18b20IO = 1;
Ds18b20Delay(3);
Ds18b20OutputInitial();
if(Ds18b20 == 1) Value |= 0x80;
Ds18b20Delay(15);
}
return Value;
/*
首先du入的是低位
*/
}
void Delay_us()
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}