这个是修改好的程序,程序说的什么不重要,重要的是程序的框架,个人认为还是不错的。
void SHTMeasure(unsigned char
*tempvalue, unsigned char
*humivalue)
{
char check;
switch(SHTStep)
{
case 1:
SHTStart();
if(SHTWriteByte
(0x03)) //测温度
{
SHTConnectionReset(); //不成功
就复位
SHTStep = 1;
break;
}
else
{
SHTStep++;
//成功就进行下一步
break;
}
case 2:
//等待转换
if(SHTSDA)
{
//转换时间等待
shtdelay++ ;
if(shtdelay >
211)
{
SHTStep
= 1; //时间到仍然没有的就返回1
处 重新开始测量
shtdelay
= 0;
break;
}
}
else
{
shtdelay = 0;
SHTStep++;
//成功进行下一步
}
break;
case 3:
//转换完成读取数
据
*tempvalue =
SHTReadByte(ACK);
_nop_();_nop_();
*(tempvalue+1)=
SHTReadByte(ACK);
check
=SHTReadByte(noACK); //read CRC
校验码
SHTStep++;
break;
case 4:
//开始湿度的测量
SHTStart();
if(SHTWriteByte
(0x05))
{
SHTConnectionReset(); //不成功就复
位
SHTStep = 4;
break;
}
else
{
SHTStep++;
//成功就进行下一步
break;
}
case 5:
if(SHTSDA)
{
shtdelay++ ;
if(shtdelay >
55)
{
SHTStep
= 4;
shtdelay
= 0;
break;
}
}
else
{
shtdelay = 0;
SHTStep++;
}
break;
case 6:
//读取测
量的数值
*humivalue =
SHTReadByte(ACK);
_nop_();_nop_();
*(humivalue+1) =
SHTReadByte(ACK);
check
=SHTReadByte(noACK); //read CRC
校验码
SHTStep = 1;
break;
default:break;
}
}
|