时序很简单,就是卡在了检测循环中,始终读不出DS18b20的应答信号。
不知何解,延时用的是库中函数,设置没问题,不知问题出在哪里。仿真也不出信号。
void Init_18b20(void)
{
DDRC |= BIT(7);//设置为输出
PORTC |= BIT(7);//拉高总线
// _delay_us(5);//5us
PORTC &= ~BIT(7);
// uart_write(PINC);
_delay_us(500);
PORTC |= BIT(7);//拉高
DDRC &= ~BIT(7);
_delay_us(30);
// uart_write(PINC);
while(PINC & (1 << PC7));
DDRC |= BIT(7);
PORTC |= BIT(7);//释放总线
_delay_us(140);
} |