Autor Tema: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?  (Leído 2176 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
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?.
 
« Última modificación: 12 de Agosto de 2011, 13:30:47 por Thulsa Doom »
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
« Respuesta #1 en: 12 de Agosto de 2011, 13:53:36 »
En CCS? En CCS tienes bit_test(...)

Sino puedes hacer:

error=!!(buffer&0x0004);


Saludos!
« Última modificación: 12 de Agosto de 2011, 13:59:03 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
« Respuesta #2 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!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
« Respuesta #3 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.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
« Respuesta #4 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.
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
« Respuesta #5 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
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: ¿cómo puedo seleccionar un bit de una variable y solo trabajar con el?
« Respuesta #6 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
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...