已經在邏輯分析儀看到了正常的溫度數據反饋,但是程序讀不出來,附上讀溫度函數,讀出高電平
單片機源程序如下:
- 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; //將讀到的一個字節返回
- }
復制代碼
|