单片机/MCUwilliam hill官网
直播中

asdg

12年用户 140经验值
擅长:模拟技术 控制/MCU
私信 关注
[问答]

程序中延迟等待问题请教

今天在写程序时遇到了编程思想的问题,想请教大家一下。大家可以自己的处理办法
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 通讯错误                                                              
}

那个等待的时间太长长,我想请教你一下,我怎么样处理那个等待时间,来提高系统的实时性。谢谢大家

更多回帖

发帖
×
20
完善资料,
赚取积分