TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: manutek en 14 de Febrero de 2010, 20:47:18

Título: duda:como negar bit;
Publicado por: manutek en 14 de Febrero de 2010, 20:47:18
Hola camaradas
Tengo una consulta que es si hay otro metodo para negar una variable del tipo booleana
Tengo el compilador de hi-tech intente hacer :
Código: C
  1. static bit led;
  2.  ~led;//esto no ,aparentemente funciona solo para bytes
  3.  !led;//esto tampoco ,se utiliza para control de programas pero probé y nada
  4.  led=!led;//solo esto me funciona
saludos
Título: Re: duda:como negar bit;
Publicado por: Suky en 14 de Febrero de 2010, 20:49:20
Seguramente esto también funciona:

Código: C
  1. led=~led;



Saludos!
Título: Re: duda:como negar bit;
Publicado por: gera en 14 de Febrero de 2010, 21:54:23
Habiendo declarado "led" como bit podes hacerlo de cualquier forma:
led=!led;
led=~led;

y se me ocurre una forma poco convencional de hacerlo jeje
led++;

supongo q funciona, ya q 0+1=1 y 1+1=0 (en binario obvio).
saludos!!
Título: Re: duda:como negar bit;
Publicado por: AngelGris en 14 de Febrero de 2010, 22:11:44
También se puede hacer una or exclusiva con 1. Si la variable estaba en 0 pasa a 1 y si estaba en 1 pasa a 0 por lo tanto serviría.

led ^= 1;
Título: Re: duda:como negar bit;
Publicado por: manutek en 14 de Febrero de 2010, 23:38:44
Hola muchachos gracias por las ideas ingeniosas
Probe:
led=~led;
led++;

Y me sale esto en el compilador:

Error[203] D:\electronica\prog\C\containera\valves&analog\valveOLD\togle.c 28 : illegal operation on bit variable

es como que solo puede ser utilizado para bytes o int ,etc no mas.

En efecto es como lo comenta angelGris ,queda compilando para las opciones

led=!led;
Y
led^=1;
Título: Re: duda:como negar bit;
Publicado por: migsantiago en 15 de Febrero de 2010, 13:54:36
y se me ocurre una forma poco convencional de hacerlo jeje
led++;

supongo q funciona, ya q 0+1=1 y 1+1=0 (en binario obvio).
saludos!!

Hola Gera, yo hace tiempo usé ese método en CCS y funciona. Parece que en hitech no según Manutek.
Título: Re: duda:como negar bit;
Publicado por: Nocturno en 15 de Febrero de 2010, 13:56:16
El problema es que en Ansi C no existe el tipo de datos "bit". Supongo que esa es la razón de que cada compilador lo haga como mejor le convenga.
Título: Re: duda:como negar bit;
Publicado por: gera en 15 de Febrero de 2010, 14:36:54
y se me ocurre una forma poco convencional de hacerlo jeje
led++;

supongo q funciona, ya q 0+1=1 y 1+1=0 (en binario obvio).
saludos!!

Hola Gera, yo hace tiempo usé ese método en CCS y funciona. Parece que en hitech no según Manutek.

Es que como dice Manolo, no existe el tipo de dato "bit" en ansi C. Yo cuando tengo q trabajar con bits le entro a las mascaras jeje.
saludos!