想问一下在那个温度传感器实验里为什么要单独写时序函数

2019-07-20 17:07发布

RTDS18B20和DHT11这2个温度传感器都是用的单总线和MCU通信,需要发送读写命令时为什么不能直接写命令比如0xCC,而是要自己写一个发送函数,DS18B20是60us+2us来判断高低电平:
void DS18B20_Write_Byte(u8 dat)     
{            
    u8 j;
    u8 testb;
        DS18B20_IO_OUT();//SET PG11 OUTPUT;
    for (j=1;j<=8;j++)
        {
        testb=dat&0x01;
        dat=dat>>1;
        if (testb)
        {
            DS18B20_DQ_OUT=0;// Write 1
            delay_us(2);                           
            DS18B20_DQ_OUT=1;
            delay_us(60);            
        }
        else
        {
            DS18B20_DQ_OUT=0;// Write 0
            delay_us(60);            
            DS18B20_DQ_OUT=1;
            delay_us(2);                          
        }
    }
}

是不是单总线wire都是要自己写这个函数的,还是因为没用复用功能,没办法直接让MCU自己发0XCC这种指令,所以需要自己写的?
还有TTL电平的高低判断是怎么样的(是几us高+几us低算1,几us高+几us低算0)?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。