|
void Fn_Init_DS18B20()
{
uchar i;
uint j;
PORTD=PORTD|BIT(6); //拉高总线电平
PORTD=PORTD&(~BIT(6));//置总线为低电平
for(i=0;i<50;i++)
Fn_Delay_15us(); //低电平保持至少480US
PORTD=PORTD|BIT(6); //拉高电平
DDRD=DDRD&(~BIT(6)); //将PD6改为输入状态
Fn_Delay_15us(); //等待15-60us
Fn_Delay_15us();
while(PIND&0x40); //等待DS18B20响应
DDRD=DDRD|BIT(6); //再将PD6设置为输出状态
PORTD=PORTD|BIT(6); //拉高电平
for(i=0;i<16;i++) //等待240US
Fn_Delay_15us();
}
谁帮我看下,这个程序哪里出问题了,PIND6读回的值一直都是0,就是DS18B20没有响应 我的PD6口连得是DS18B20
|
|