Paso 5: Enmascaramiento hace que sea fácil
¿Cómo se puede cambiar solamente la bit(s) que quieras sin cambiar el resto de la bit(s) en el registro? Utiliza lo que se denomina una máscara. Piense en ello como la pintura. Si no quieres pintar algo, se cubren con cinta para enmascarar de la pintura. Enmascarar bits funciona de manera similar.
En lugar de escribir el número de enteros de 8 bits/byte y cambiar el registro entero, utilice operación lógica y un número especial para cambiar sólo el bit(s) que desea cambio.
Arduino tiene un tutorial de la página web para enmascarar bits. http://www.Arduino.CC/en/Tutorial/BitMask
Las operaciones comunes son AND (y), o cambio (|), izquierda (<<) y cambio derecha (>>). También son útiles el no/complemento (~) y el exclusivo o / operadores XOR (^). Con estos operadores puede mover bits alrededor, tirón de los de 1 a 0, combinar, o les reste. Puede utilizar varias de ellas al mismo tiempo para cambios de brocas complejo.
Una máscara típica es un número binario con 0s donde no desea un cambio y 1s donde usted quiere un cambio. Una máscara para PB5 sería B00100000. Si combinamos la máscara con el valor ya en el registro utilizando el operador OR, entonces podemos convertir en PB5 sin cambiar el estado de los otros bits.
Código de ejemplo 3.
vamos a utilizar PBValue como la variable que guarda el contenido actual del puerto B.
el valor actual de PBValue = B01001100
PBValue = PBValue | B00100000; (el resultado es 01101100)
El operador OR mira cada poco. Si uno o ambos es una 1 la combinación es un 1. Si ambos son 0, entonces la combinación es 0. Utilizando el operador OR doblamos en la broca que queríamos, y todo lo demás sigue siendo la misma.
E/S del puerto B | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | SBR | SBS |
PBValue | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
Máscara de PB5 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
O Resultados | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |