Domanda

Non ho affrontato con la programmazione contro dispositivi hardware dopo tanto tempo e ho dimenticato praticamente tutte le nozioni di base.

Ho una specifica di quello che devo inviare in un byte e ogni bit è definita dal bit più significativo (bit7) al meno significativo (bit 0). Come faccio a costruire questo byte? Da MSB a LSB, o viceversa?

È stato utile?

Soluzione

Se questi bit vengono 'packeted' (che di solito sono), allora l'ordine dei bit è dell'ordine nativo, 0 è l'LSB, e 7 è il MSB. I bit non vengono solitamente inviati uno ad uno, ma come byte (di solito più di un byte ...).

wikipedia , po 'ordinazione può essere a volte dal 7-> 0, ma questo è probabilmente il caso raro.

Altri suggerimenti

Se avete intenzione di scrivere l'intero byte, allo stesso tempo, vale a dire fare un trasferimento parallelo al contrario di una serie, l'ordine dei bit non è importante.

Se il trasferimento è di serie, quindi è necessario scoprire quale ordinare il dispositivo si aspetta che i bit, è impossibile dire dall'esterno.

Per assemblare solo un byte di otto bit, basta usare bit a bit-OR a "aggiungere", una alla volta:

byte value = 0;

value |= (1 << n);  // 'n' is the index, with 0 as the LSB, of the bit to set.

Se le specifiche dice MSB, poi costruirlo MSB. In caso contrario, se le specifiche dice LSB, poi costruirlo LSB. In caso contrario, chiedere ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top