本帖最后由 mfkyygt 于 2014-9-21 07:40 编辑
试着改为上电后先复位一次18B20,然后查总线是否一直为高,是则判断为18B20未接好或损坏,显示err,问题初步解决
//----
OUTPUT(DDRB,DQ); //DQ设为输出
CLR(PORTB,DQ); //DQ拉低电平
delay_us(680); //延迟500us
SET(PORTB,DQ); //DQ置高电平
delay_us(50); //延迟40us
INPUT(DDRB,DQ); //DQ设为输入
while (PINB&BIT(DQ))
{
L_aderr =1;
show_led(22);
SET(PORTB,BT);
}
L_aderr =0;
delay_ms(100);
//----
while (1)
{
DS18B20_reset(); //DS18B20复位
DS18B20_write(0xCC); //跳过ROM
DS18B20_write(0x44); //启动温度转换
……
|