Question

Je ne l'ai pas traité contre la programmation des périphériques matériels depuis longtemps et ont oublié à peu près toutes les bases.

J'ai une spécification de ce que je dois envoyer un octet et chaque bit est défini à partir du bit le plus significatif (bit 7) au moins significatif (bit 0). Comment puis-je construire cet octet? De MSB à LSB, ou vice versa?

Était-ce utile?

La solution

Si ces bits sont « Packeted » (dont ils sont en général), l'ordre de bits est l'ordre natif, 0 étant le bit de poids faible et 7 étant le MSB. Les bits ne sont généralement pas envoyés un par un, mais comme octets (généralement plus d'un octet ...).

Selon wikipedia , l'ordre des bits peut parfois être de 7> 0, mais cela est probablement le cas rare.

Autres conseils

Si vous allez écrire le tout octet en même temps, à savoir faire un transfert parallèle par opposition à une série, l'ordre des bits n'a pas d'importance.

Si le transfert série, vous devez savoir quel ordre l'appareil attend les bits, il est impossible de dire de l'extérieur.

Pour assembler juste un octet de huit bits, il suffit d'utiliser l'opérateur OR pour les bits « ajouter », un à la fois:

byte value = 0;

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

Si la spécification dit MSB, puis construire MSB. Sinon, si la spécification dit bit de poids faible, puis construire LSB. Sinon, demandez plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top