读取传感器发来的1Byte数据:分低位先行和高位先行的处理方法

Source

目录

一、写在前面

二、伪代码的逻辑实现

1、从高位到低位

2、从低位到高位


一、写在前面

在接收数据之前我们需要事先知道数据的发送规则,是高位先行还是低位先行,并按照规则接收数据,否则收到的数据很可能是错的

高位先行:先发数据位高的数据,

低位先行:先发数据位低的数据

从波形反推数据:高位先行波形从左往右看,数据从左往右写

从波形反推数据:低位先行波形从左往右看,数据从右往左写

二、伪代码的逻辑实现

1、从高位到低位

u8 Read_Byte()
{
    u8 tmp = 0x80;  //1000 0000
    u8 Byte = 0;
    for( tmp = 0x80; tmp > 0; tmp >>= 1 )
    {
        if( Read_Bit() == 1 )            //读取1Bit数据         
            Byte |= tmp; 
        else
            data &= ~tmp;
    }
    return Byte;
}

2、从低位到高位

u8 Read_Byte()
{
    u8 tmp = 0x01;  //1000 0000
    u8 Byte = 0;
    for( tmp = 0x01; tmp < 0x80; tmp <<= 1 )
    {
        if( Read_Bit() == 1 )               //读取1Bit数据         
            Byte |= tmp;
        else
            Byte &= ~tmp;
    }
    return Byte;
}