Operar un uint16 como bits

Cualquier cosa relacionado con la programación de Microcontroladores PIC en C utilizando el compilador CCS.

Operar un uint16 como bits

Notapor f-traxx » Mié Mar 22, 2017 12:40 pm

Hola amigos,

ya hacía mucho tiempo que no me pasaba por el foro y no hacía ninguna aportación, pues aquí tenéis unas pequeñas "macros" que he creado para poder operar cualquier numero "bit a bit".
Código: Seleccionar todo
///////////////////////////////////////////////////////////////////////////////
////////////////////******   BIT  OPERATOR  MACROS   ******////////////////////
///////////////////////////////////////////////////////////////////////////////
#define set_bit(v, n)       ( v |= (1 << n) )   //Set bit number n in var v
#define clear_bit(v, n)     ( v &= (~1 << n) )  //Clear bit number n in var v
#define toggle_bit(v, n)    ( v ^= (1 << n) )   //Toggle bit number n in var v

#define read_bit(v, n)      ( v & (1 << n) )    //Read bit number n in var v
///////////////////////////////////////////////////////////////////////////////


ejemplo:
Código: Seleccionar todo
uint16_t Alarms = 0;

enum bits{Speed, Turn, Oil, Hitch, Front, Rear, NoHitch, NoFront, NoRear}
bits = Speed;

if( read_bit(Alarms, NoRear) ){//Leemos el bit numero 8 de la variable Alarms y si es "1"
   clear_bit(Alarms, NoRear);  //borramos el bit.
}


No se si le será de ayuda a alguien, pero aquí os lo dejo.

Saludos!
El aprendizaje es una lección que nunca termina
f-traxx
Usuario Nivel 7
 
Mensajes: 318
Registrado: Lun Sep 20, 2010 3:44 pm
Ubicación: España, Lleida

Re: Operar un uint16 como bits

Notapor biblioman » Dom Abr 02, 2017 3:41 pm

Gracias. Un placer verte de nuevo por aquí..
Un saludo
Avatar de Usuario
biblioman
Usuario Nivel 10
 
Mensajes: 2010
Registrado: Vie Mar 20, 2009 5:58 pm


Volver a Programación PIC en C con CCS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado