按照通信协议,用一个字节来表示8个按键的状态,第一个按键按下则用0x01表示,第二个按键按下则用0x02表示,以此类推,一位代表一个按键状态。
但为了便于电路板Layout走线,8位并行输入的高低位颠倒,如下图。
为了符合协议,在程序中对字节做了倒序处理,即将0xabcdefgh转换为0xhgfedcba,代码实现如下:
uint8_t byte_change(uint8_t data)
{
uint8_t i = 0;
uint8_t temp = 0;
for (i = 0; i < 8; i ++)
{
temp = temp << 1;
temp |= (data >> i) & 0x01;
}
return temp;
}