TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Palomino86 en 17 de Abril de 2012, 19:34:15

Título: Problema con signos negativos
Publicado por: Palomino86 en 17 de Abril de 2012, 19:34:15
Que tal foro;

Tengo un problema con comparaciones negativas y no se a que se deba....

Estoy haciendo esto:

Código: [Seleccionar]
if(dif <= -2)
{
    --------
    --------
}

y me marca los siguientes warnings:

Warning [766] C:\P_16\MNI_MAESTRO_V1.1\Include\Funciones.c; 165. degenerate signed comparison
Warning [764] C:\P_16\MNI_MAESTRO_V1.1\Include\Funciones.c; 165. mismatched comparison

tomando en cuenta que dif es una variable de 8 bits con signo. Aun no doy con el clavo de que pueda ser. Agradecería su ayuda  :).

Saludos
Título: Re: Problema con signos negativos
Publicado por: darck_khronos en 17 de Abril de 2012, 19:48:30
y que pasaria si a dif primero la comparas si es mayor que 0 y despues la multiplicas por -1 para cambiar su signo asi no tendrias problemas
Título: Re: Problema con signos negativos
Publicado por: Palomino86 en 17 de Abril de 2012, 19:52:48
Me agrada tu sugerencia darck_khronos, pero quisiera ahorrarme esa multiplicacion jejejeje. Será por el tipo de variable que utilizo, utilizo una tipo char
Título: Re: Problema con signos negativos
Publicado por: darck_khronos en 17 de Abril de 2012, 19:54:09
Me agrada tu sugerencia darck_khronos, pero quisiera ahorrarme esa multiplicacion jejejeje. Será por el tipo de variable que utilizo, utilizo una tipo char

mmm bueno el problema es que estas utilizando un caracter y no un decimal, en todo caso el error esta en la declaracion tendrias que usar int8
Título: Re: Problema con signos negativos
Publicado por: migsantiago en 17 de Abril de 2012, 19:56:03
Hola. ¿Qué compilador es? ¿Tienes la tabla de los tipos de datos?
Título: Re: Problema con signos negativos
Publicado por: Palomino86 en 17 de Abril de 2012, 20:23:47
Hi-Tech para PIC16
Título: Re: Problema con signos negativos
Publicado por: MerLiNz en 17 de Abril de 2012, 20:39:00
has probado a declararlo como signed char?
Título: Re: Problema con signos negativos
Publicado por: Palomino86 en 17 de Abril de 2012, 21:10:27
si ya probe con signed char pero no me funciono, me funciono declarandolo como  short int.


Gracias  :)
Título: Re: Problema con signos negativos
Publicado por: AngelGris en 17 de Abril de 2012, 22:44:23
  ¿Qué versión del compilador estás utilizando?

  Acabo de compilar el siguiente código con la versión 9.8 y no arrojó ningún error ni warning.

Código: C
  1. #include <htc.h>
  2.  
  3. __CONFIG(INTIO & WDTDIS & MCLRDIS & BORDIS & UNPROTECT);
  4. #define _XTAL_FREQ 4000000
  5.  
  6. main()
  7. {
  8.  
  9.     signed char dif;
  10.  
  11.     GPIO = 0X00;
  12.     TRISIO = 0X00;
  13.     CMCON = 7;
  14.  
  15.     dif = -10;
  16.  
  17.     if (dif <= -2)
  18.     {
  19.       GPIO0 = 0;
  20.     }
  21.  
  22.     while(1);
  23. }
Título: Re: Problema con signos negativos
Publicado por: Palomino86 en 18 de Abril de 2012, 19:26:19
Que tal AngelGris


La versión que tengo es la 9.70 Pro Mode.....
Título: Re: Problema con signos negativos
Publicado por: AngelGris en 18 de Abril de 2012, 22:18:58
  Yo hice la prueba con la versión lite (después de pasado el tiempo de prueba)

  No creo que la versión lite se comporte mejor que la pro, pero tal vez sí sea un problema de la versión 9.7 y que haya sido solucionado en la 9.8.

  Según el manual de la versión 9.8, una variable short es de 16 bits al igual que una variable int, mientras que un char es de 8 bits.

  Si en tu caso sería suficiente con una variable char, estarías perdiendo 8 bits de ram al tener que utilizar una variable short para que te funcione. Es un simple comentario, que tal vez no importe porque te alcanza la memoria tranquilamente.
Título: Re: Problema con signos negativos
Publicado por: NoSepComo en 19 de Abril de 2012, 07:13:53
Hola, quizá parecerá una tontería, pero prueba a meter el -2 entre paréntesis para la comparación, a ver que pasa.