我很久没有处理过针对硬件设备的编程,而且几乎忘记了所有的基础知识。
我有一个关于我应该在一个字节中发送什么的规范,每个位都是从最高有效位(bit7)到最低有效位(bit 0)定义的。我如何构建这个字节?从MSB到LSB,反之亦然?
答案 0 :(得分:5)
如果这些位被'打包'(它们通常是),则位的顺序是本机顺序,0是LSB,7是MSB。比特通常不是一个一个地发送,而是作为字节(通常多于一个字节......)。
根据wikipedia,位排序有时可以是7-> 0,但这可能是极少数情况。
答案 1 :(得分:2)
如果您要同时写入整个字节,即进行并行传输而不是串行传输,则位的顺序无关紧要。
如果传输是串行,那么你必须找出设备期望这些位的顺序,这是不可能从外面告诉的。
要从8位汇编一个字节,只需使用按位或“加”位,一次一个:
byte value = 0;
value |= (1 << n); // 'n' is the index, with 0 as the LSB, of the bit to set.
答案 2 :(得分:1)
如果规范说MSB,那么建立它MSB。否则,如果规范说LSB,那么建立它LSB。否则,请询问更多信息。