TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Thulsa Doom en 12 de Agosto de 2011, 13:27:18

Título: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: Thulsa Doom en 12 de Agosto de 2011, 13:27:18
Hola a todos y todas, tengo un problemilla a ver si me pueden echar un cable.

resulta que tengo un dato de 16bit metido en una variable int16 y sólo necesito un bit de esa variable, el bit 3 para ser más exacto, quiero que cuando el estado del bit cambie, me ejecute un programa, yo lo hago de una  manera pero no me funciona

por ejemplo

Código: [Seleccionar]
long error, buffer;
error = 0;
buffer = 0;

error = (buffer & 0b0000000000000100)>>2;

if (error == 1){
bla bla ...;
...;
...;
}

Haciéndole un and y seleccionando el bit que me interesa en teoría debería de funcionar pero no me funciona, entonces mi pregunta es:
¿de que manera puedo yo de un entero largo o cadena o buffer, (no se si esas definiciones son correctas para este tipo de datos o solo es una de ellas.) podría yo seleccionar o vigilar el bit que me interesa, desechar el resto y cuando cambie que me ejecute el programa que deseo?.
 
Título: Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: Suky en 12 de Agosto de 2011, 13:53:36
En CCS? En CCS tienes bit_test(...)

Sino puedes hacer:

error=!!(buffer&0x0004);


Saludos!
Título: Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: dragondgold en 12 de Agosto de 2011, 20:13:19
Creo que para que funcione la variable error deberia ser INT1 si estas con CCS y sino como te dice suky la función bit_test() que devuelve el estado del bit, por ejemplo en tu caso:

Código: [Seleccionar]
if(bit_test(buffer,3)){

......

}

Saludos!
Título: Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: AngelGris en 12 de Agosto de 2011, 22:36:33
Ojo!!! Thulsa, que con el ejemplo que pusiste estarías trabajando sobre el bit 2 y no sobre el bit 3.
Título: Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: Thulsa Doom en 13 de Agosto de 2011, 04:56:37
Gracias a todos por la ayuda y orientación, siento no haber especificado con que compilador trabajo, dejo constancia de que es ccs, lo de bit_test(), no conocía esa función.
pruebo todo los que me han dejado y cuento.

Tienes razón, dije en la explicación que era el bit 3 y en el ejemplo puse el 2, no tengo perdón para esos errores, menos mal que ustedes estáis muy atentos y aunque lo ponga mal sabéis a que me refiero.
gracias de nuevo la verdad es que la ayuda en este foro no tiene precio.
Título: Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: AngelGris en 13 de Agosto de 2011, 09:58:59
Sí Thulsa, entendía la idea pero lo dije porque tal vez estabas esperando un cambio en un bit que nunca cambiaba y entonces se podía trasladar el error desde allí.

Y sí, esa forma yo la he utilizado sin problemas bajo el compilador HiTech
Título: Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
Publicado por: Thulsa Doom en 18 de Agosto de 2011, 14:13:08
Hola a todos y todas, pues el consejo que me habéis dado ha funcionado perfectamente, les doy las gracias