今天在写程序时遇到了编程思想的问题,想请教大家一下。大家可以自己的处理办法
char SHTMeasure(char *value, char *p_checksum, enum Mode mode)
// 进行温度或者湿度转换,由参数mode决定转换内容;
{
// enum Mode {TEMP,HUMI}; //已经在头文件中定义
unsigned error=0;
unsigned int i;
SHTStart(); //启动传输
switch(mode) //选择发送命令
{
case TEMP : error+= SHTWriteByte(0x03); break; //测量温度
case HUMI : error+= SHTWriteByte(0x05); break; //测量湿度
default : break;
}
/*
这个等待的时间有点长应该处理一下
当发出了温(湿)度测量命令后,控制器就要等到测量完成。
使用8/12/14位的分辨率测量分别需要大约11/55/210ms的时间
*/ for (i=0;i<65535;i++)
if(SHTSDA==0)
break; //等待测量结束
if(SHTSDA) error+=1; // 如果长时间数据线没有拉低,说明测量错误
*value = SHTReadByte(ACK); //读第一个字节,高字节 (MSB)
*(value+1) = SHTReadByte(ACK); //读第二个字节,低字节 (LSB) 把两个字节组合起来
*p_checksum =SHTReadByte(noACK); //read CRC校验码
return error; // error=1 通讯错误
}
那个等待的时间太长长,我想请教大家一下,我怎么样处理那个等待时间,来提高系统的实时性。谢谢大家 |