sht11模块读取数据时只能读到第一个字节,后面的字节模块无响应

问题遇到的现象和发生背景

用protues仿真,使用sht11 温湿度模块,读取数据时第一个字节能成功读取,后面的字节无法读取。
sht11 的通讯时序图如下
我卡在了蓝色圈这里

img

1、开始通讯
2、向sht11发送命令,高三位为地址,低三位为命令,发送完毕后sht11会拉到低数据线data作为响应,然后释放数据线,等待 11/55/210 ms for a 8/12/14bit 准备测量数据,准备完毕后sht11拉低数据线data响应表示可以读取数据了。
3、读取数据:每读取八个字节后Uc会拉低数据线data作为应答(ack)

问题相关代码,请勿粘贴截图
#include<reg52.h>

#define uchar unsigned char


sbit io_clk=P2^5;
sbit io_data=P2^6;
sbit led_flag=P3^2;

int buff;  //用于接收数据

void delay_s(int num)
{
    int i,k;

    for(i=0;i<num;i++)
    {
        for(k=0;k<1000;k++);
    
    }

}

// 10=100us
void delay (uchar number)    
{
    uchar i;
    for(i=0;i<number;i++);

} 

//sht11开始通讯
void sht11_start()
{
    io_clk=0;
    delay(5);
    io_clk=1;

    io_data=1;

    delay(5);

    io_data=0;

    delay(5);

    io_clk=0;

    delay(10);

    io_clk=1;

    delay(5);

    io_data=1;

    delay(5);

    io_clk=0;

}


//向sht11 发送测量湿度命令 ”000 00101”
void sht11_sendcomd()
{
    io_clk=0;
    io_data=0;
    
    delay(10);

    //发送地址位“000io_clk=1;
    delay(5);

    io_clk=0;
    delay(5);

    io_clk=1;
    delay(5);

    io_clk=0;
    delay(5);

    io_clk=1;
    delay(5);

    io_clk=0;
    delay(5);

    //发送测量湿度命令“00101io_clk=1;
    delay(5);

    io_clk=0;
    delay(5);

    io_clk=1;
    delay(5);

    io_clk=0;
    delay(2);
    io_data=1;
    delay(3);

    io_clk=1;
    delay(5);

    io_clk=0;
    delay(2);

    io_data=0;
    delay(3);

    io_clk=1;
    delay(5);

    io_clk=0;
    delay(2);
    io_data=1;
    delay(3);

    io_clk=1;
    delay(5);

    io_clk=0;
    delay(5);

}

//接收sht11测量数据
void sht11_receive()
{
    uchar i,j;

    //向sht11发送命令后,sht11会拉低data作为响应
    while(io_data);

    
    //应答 ack
    io_clk=1;
    delay(5);

    io_clk=0;
    delay(5);
    
    //等待一段时间sht11测量结束
    //while(io_data);
    delay_s(2000);
    
    //接收两个字节的测量数据
    for(j=0;j<2;j++)
    {
        for(i=0;i<8;i++)
        {
            io_clk=1;
            delay(2);
            buff=buff<<1;
            if(1==io_data)    
                buff|=0x01;

            delay(3);
            
            io_clk=0;
            delay(5);
            
        }
        
        //接收完一个字节数据后Uc拉低data 作为应答  
         io_data=0;
        delay(2);
        
        io_clk=1;
        delay(5);
        
        io_clk=0;
        delay(5); 
        
    }
    
    
    
    



}




void main()
{

    //跳过sht11上电不稳定时间段
    delay_s(100);
    delay_s(100);
    delay_s(100);
    delay_s(100);
    
    
    //sht11开始通讯
    sht11_start();    

    //向sht11发送命令
    sht11_sendcomd();

    //读取sht11测量数据
    sht11_receive();
    
    
    
    while(1);

}

运行结果及报错内容

sht11开始通讯以及发送测量命令

img

sht11接收数据
从应答信号后(画红线的地方)开始就接收不到sht11的数据

img

我的解答思路和尝试过的方法
我想要达到的结果

帮我看看哪里出错了,为什么我按照手册上的时序图进行通讯第一个字节可以接收,然后我给了sht11一个应答后,后面的数据sht11没反应

我已经自己解决了,居然连个回答都没有,呜呜呜