获得温度的低位Р Р Temp_H = Read_18b20(); //获得温度的高位Р Р if(Temp_H & 0x08) //判断温度的正负Р { Р Temp_H = ~Temp_H; //负温度。取反加1Р Temp_L = ~Temp_L; //Р Р SREG |= ~(1 << SREG_C); //清零进位位标志Р Temp_L++; //温度低字节加1Р if(SREG & (1 << SREG_C)) //有进位吗?Р {Р Temp_H++; //有进位,则温度高字节加1Р }Р Р }?Р Р tempint = ((Temp_H << 4) & 0x70) | (Temp_L >> 4); //获得温度的整数位?Р Р tempint1 = tempint / 1000; //千位Р tempint2 = tempint % 1000 / 100; //百位Р tempint3 = tempint % 100 / 10; //十位Р tempint4 = tempint % 10; //个位Р Р temppoint = Temp_L & 0x0f; //取出温度的小数位Р temppoint = (temppoint * 625); //小数位乘以0.625得出温度的小数位值,在此扩大Р //10000倍,得出温度的4位小数位,显示的时候加小数点Р Р temppoint1 = temppoint / 1000; //千位Р temppoint2 = temppoint % 1000 / 100; //百位Р temppoint3 = temppoint % 100 / 10; //十位Р temppoint4 = temppoint % 10; //个位Р Р Usart_PutString("当前环境温度为:"); //发送温度值到上位机