martes, 23 de octubre de 2018

Arduino & AVR – Operaciones con BITS en C



¿Tienes dificultades para modificar, de manera sencilla y eficiente, el valor de un solo BIT en un registro de un Arduino o un microcontrolador, usando C?

El lenguaje de programación C cuenta con una operación especial para tratar con bits, la cual se representa por dos signos “menor que” seguidos << o dos signos de “mayor que” seguidos >>. Éstas son operaciones de desplazamiento de bits.

El valor a la izquierda del signo << o >> es desplazado un cantidad de veces definida por el valor a la derecha del mismo signo. Si se usa <<, entonces los bits son desplazados hacia la izquierda, y si se usa el signo >> los bits son desplazados hacia la derecha, por ejemplo:


Notar como se agregan ceros 0 a la derecha en el número, y los número desplazados, que estaban a la izquierda, desaparecen. Esto sucede porque las operaciones se realizaron en registros, o valores, de 8 bits. Si se trabaja con registros de 16 bits, pasaría esto:

 
Veamos algunos ejemplos de aplicación para manipulación de puertos (aunque no se usa únicamente para puertos, sino para registros en general):