ZHCAAO5A June 2020 – August 2021 ADS112C04 , ADS112U04 , ADS114S06 , ADS114S08 , ADS122C04 , ADS122U04 , ADS1235 , ADS1235-Q1 , ADS124S06 , ADS124S08 , ADS1259 , ADS1259-Q1 , ADS125H01 , ADS125H02 , ADS1260 , ADS1260-Q1 , ADS1261 , ADS1262 , ADS1263 , ADS127L01 , ADS131A02 , ADS131A04 , ADS131M04 , ADS131M06 , ADS131M08
以下代码示例是一种反转或反射一个字节内的位顺序的方法。顺序 b7、b6、b5、b4、b3、b2、b1、b0 被反射为返回位顺序 b0、b1、b2、b3、b4、b5、b6、b7。
/**
* 反转字节的位顺序。
*
* \详细信息:以提交的字节的相反顺序重新排列位,
* 并将字节作为无符号字节返回。必须执行该操作,因为在比较 TX 和 RX 数据时,
* 总是按照 lsb 优先的顺序从 UART 向外传输数据。
*
* \参数 uint8_t u8Byte 是要进行反转的数据字节。
*
* \返回 uint8_t u8RevByte。
*/
uint8_t revByte(uint8_t u8Byte)
{
uint8_t u8i, u8RevByte = 0; // 从位 0 开始对于字节中的每个位
for (u8i = 0; u8i < 8; u8i++)
{
u8RevByte |= (u8Byte & 0x01); // 取输入字节的一位并将其存储
// 在新字节中
u8Byte >>= 1; // 获取下一位
if (u8i < 7) u8RevByte <<= 1; // 不要移动新字节的最后一位
}
return u8RevByte;
}