微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > DS18B20低位与高位读出问题

DS18B20低位与高位读出问题

时间:10-02 整理:3721RD 点击:
ReadOneChar(void)//读一个字节
{
unsigned char i=0;   
unsigned char dat=0;   
for (i=8;i>0;i--)      
{   DQ=1;      
DS18_delay(1);     
DQ=0;           
dat>>=1;//复合赋值运算,等效dat=dat>>1(dat=dat右移一位后的值)      
DQ=1;      
if(DQ)      
dat|=0x80;      
DS18_delay(4);  }   
return(dat);}
unsigned int ReadTemperature(void)//返回读取的温度.
{   Init_DS18B20();   //初始化,调用初始化函数
WriteOneChar(0xcc);    //跳过读序列号的操作,调用写函数,写0xcc指令码(跳过读序列号)
WriteOneChar(0x44);   //启动温度转换,调用写函数,写0x44指令码(启动温度转换)
DS18_delay(125);       //转换需要一点时间,延时
Init_DS18B20();    //初始化,调用初始化函数
WriteOneChar(0xcc);    //跳过读序列号的操作,调用写函数,写0xcc指令码(跳过读序列号?
WriteOneChar(0xbe);   //调用写函数,写0xbe指令码,读温度寄存器(头两个值分别为温度的低位和高位)
tempL=ReadOneChar();   //读出温度的低位LSB
tempH=ReadOneChar();   //读出温度的高位MSB     
tempa=((tempH*256)+tempL)*6.25;  //温度转换,扩大100返回 //
DS18_delay(10); //
tempa=tempL+tempH;
return(tempa);//运算结果返回到函数 }
对于 tempL=ReadOneChar();   //读出温度的低位LSB
tempH=ReadOneChar();   //读出温度的高位MSB  这两句话是怎样读出低位与高位的值?
求大神解读

先读的就是低位值,后读的就是高位值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top