TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Mando31 en 23 de Septiembre de 2009, 21:34:34

Título: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
Publicado por: Mando31 en 23 de Septiembre de 2009, 21:34:34
Hola compañeros he intentado de todo y nada más no puedo enviar un float por la USART de la forma printf(%f,valor) esto con el C18 de Microchip  :shock:

Espero que alguno pueda ayudarme, por todo Gracias.  :mrgreen:
Título: Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
Publicado por: MLO__ en 23 de Septiembre de 2009, 22:22:41
Hola.

El uso de esa función y otras mas que corresponden a stdio.h se explican enel MPLAB-C18-Libraries. Si mal no recuerdo, el printf() del C18 no soporta ese tipo de datos, habría que pasarlo a string primero.

Saludos
Título: Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
Publicado por: Mando31 en 23 de Septiembre de 2009, 23:34:48
Ok muchas gracias enotonces investigare como realizar la conversion de float a string .

Gracias.
Título: Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
Publicado por: Suky en 23 de Septiembre de 2009, 23:35:30
Y por lo que se ve en la librería stdio.h tampoco esta soportado la conversión de flotante a string!  :? No queda otra que separar en parte entera y parte decimal.

Citar
Table: Data Conversion Functions
 Function  Description 
atob
 Convert a string to an 8-bit signed byte. 
atof
 Convert a string into a floating point value. 
atoi
 Convert a string to a 16-bit signed integer. 
atol
 Convert a string into a long integer representation. 
btoa
 Convert an 8-bit signed byte to a string. 
itoa
 Convert a 16-bit signed integer to a string. 
ltoa
 Convert a signed long integer to a string. 
rand
 Generate a pseudo-random integer. 
srand
 Set the starting seed for the pseudo-random number generator. 
tolower
 Convert a character to a lowercase alphabetical ASCII character. 
toupper
 Convert a character to an uppercase alphabetical ASCII character. 
ultoa
 Convert an unsigned long integer to a string. 



Saludos!
Título: Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
Publicado por: Mando31 en 24 de Septiembre de 2009, 01:19:26
 :shock: Muchas gracias Suky pues entonces tendre que partir el dato en parte entera y en parte decimal ya que no queda de otra, por todo muchas gracias
Título: Re: Como se puede mandar un float de la forma printf(%f,valor) en C18 ???
Publicado por: fabianjsm en 24 de Septiembre de 2009, 05:06:37
Podes usar esta funcion:

Código: C
  1. void float2str(char *buffer, float f)
  2. {
  3.         float fenteros;
  4.         float fdecimales;
  5.         int entero, decimal;
  6.         fenteros = floor(f);
  7.         fdecimales = f - fenteros;
  8.         entero = (int)fenteros;
  9.         decimal = (int)1000 * fdecimales;
  10.         sprintf(buffer, "%d.%03i", entero, decimal);
  11. }