已经在逻辑分析仪看到了正常的温度数据反馈,但是程序读不出来,附上读温度函数,读出高电平
单片机源程序如下:
- uint8_t B20_ReadByte(void)
- {
- uint8_t i,data=0;
- for(i=0;i < 8;i++) //位计数值
- {
- data>>=1; //右移,准备接受新的数据位
- GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPO);
- DS18B20_OUT = 0;//拉低,启动读数据位
- DELAY_US(5); //等待5微秒
- DS18B20_OUT = 1; //释放总线
-
- GPIO_Init(DS18B20_PORT,DS18B20_PIN,GPI); //配置为输入,开始读取数据位
- DELAY_US(12); //等待5微秒
- if(DS18B20_IN)//该位是否为高
- {
- data|=0x80; //是就将此位置高
- }
- if(!DS18B20_IN)//该位是否为高
- {
- data&=~0x80; //是就将此位置高
- }
- DELAY_US(48); //等待50微秒
- }
- return data; //将读到的一个字节返回
- }
复制代码
|