我用的是EFR32 CPU 下面程序可用。
/****************DS18B20讀1字節函數************************/
//從總線上取1個字節
uint8_t ReadDSByte(void)
{
uint8_t i;
uint8_t value=0;
for(i=8;i>0;i--)
{
GPIO_PinModeSet(gpioPortF, 7, gpioModePushPull, 1);
value>>=1;
GPIO_PinOutClear(gpioPortF, 7);
delay_us(2); //1.6 us
GPIO_PinOutSet(gpioPortF, 7);
GPIO_PinModeSet(gpioPortF, 7, gpioModeInputPullFilter, 1);
delay_us(12); //5 us
if (GPIO_PinInGet(gpioPortF, 7)) value|=0x80;
delay_us(50); //45 us
}
// GPIO_PinModeSet(gpioPortF, 7, gpioModePushPull, 0);
// GPIO_PinOutSet(gpioPortF, 7);
return(value);
} |