Étape 5: Masquage Makes it Easy
Comment pouvez-vous changer seulement les bits souhaité sans changer le reste des bits dans le registre ? Vous utilisez ce qu’on appelle un masque. Pensez-y comme la peinture. Si vous ne souhaitez pas peindre quelque chose, vous le recouvrez avec du ruban à masquer l’il de la peinture. Bit de masquage fonctionne de manière similaire.
Au lieu d’écrire le nombre entier 8 bits/octets et en modifiant le registre entier, vous utilisez opération logique ainsi qu’un numéro spécial de passer seulement les bits que vous voulez modifié.
Arduino est un tutoriel de page web pour le masquage des bits. http://www.Arduino.cc/en/Tutorial/bitmask
Les opérations courantes sont AND (&), ou Maj (|), gauche (<<) et le décalage vers la droite (>>). Sont également utiles le non/complément (~) et l’exclusif ou / opérateurs XOR (^). Avec ces opérateurs, vous pouvez déplacer les morceaux autour, retourner de 1 à 0, combiner, ou soustraire. Vous pouvez utiliser plusieurs d'entre elles en même temps des changements peu complexes.
Un masque typique est un nombre binaire avec 0 s où vous ne voulez pas un changement et 1 s à où vous ne voulez pas un changement. Un masque pour PB5 serait B00100000. Si nous combinons le masque avec la valeur déjà dans le registre à l’aide de l’opérateur OR, puis nous pouvons tourner sur PB5 sans changer le statut des autres bits.
Exemple de Code 3.
Nous allons utiliser PBValue comme la variable qui contient le contenu actuel du Port B.
la valeur actuelle de PBValue = B01001100
PBValue = PBValue | B00100000 ; (le résultat est 01101100)
L’opérateur OR examine chaque bit. Si une ou l’autre est un 1, alors la combinaison est un 1. Si les deux sont 0, alors la combinaison est 0. À l’aide de l’opérateur OR nous avons allumé la mèche que nous voulions, et tout le reste est resté le même.
E/s du port B | PB7 | SBU | PB5 | PB4 | PB3 | PB2 | SBR | SBS |
PBValue | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
PB5 masque | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
OU Résultats | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |