TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: IngRandall en 02 de Febrero de 2012, 12:17:50
-
Hola amigos del foro, hace un tiempo estuve trabajando con el formato Punto Flotante IEEE 754, un amigo me paso la rutina que convertía de Decimal a Punto Flotante, me funciono perfectamente y hasta el momento no había tenido quejas de ella, la rutina es la siguiente:
void Dec_Float()// Conversion de Decimal a Flotante.
{
float Vx;
Vx=(valor);
Vx=Vx/1000;
ptr= &Vx;
vector_decfloat[3]= *ptr;
vector_decfloat[2]= ((*ptr)&0xFF00)/0x100;
ptr=&Vx; ptr++;
vector_decfloat[1]= *ptr;
vector_decfloat[0]= ((*ptr)&0xFF00)/0x100;
}
Donde:
long long valor;
int *ptr;
unsigned char vector_decfloat[4];
Pero, ahora mismo estoy haciendo un programa en el cual debo entregar los datos en ASCII y en Punto Flotante IEEE 754, utilice el mismo metodo pero no me ha funcionado, me da datos erroneos y como si fueran aleatorios.
Quisiera saber si tengo algun error o alguna apreciacion que me puedan hacer de este codigo o si alguien tiene otro que le haya funcionado para que me haga el favor de pasarlo ya que me estoy volviendo loco :D :D :D... es lo unico que falta para terminar mi proyecto.
Muchas gracias.
-
Bueno, me puse a hacer el Debug y hasta que mire como podría funcionar, y lo encontré, el código es el siguiente:
void Dec_Float(unsigned int valor){ // Conversion de Decimal a Flotante.
vector_decfloat[0]=vector_decfloat[1]=vector_decfloat[2]=vector_decfloat[3]=vector_decfloat[4]=0;
Vx=(valor);
Vx=Vx/1000;
ptr= &Vx;
vector_decfloat[4]= *ptr;
vector_decfloat[3]=vector_decfloat[4]&0x000000FF;
vector_decfloat[4]=vector_decfloat[4]>>8;
vector_decfloat[2]=vector_decfloat[4]&0x0000FF;
vector_decfloat[4]=vector_decfloat[4]>>8;
vector_decfloat[1]=vector_decfloat[4]&0x00FF;
vector_decfloat[4]=vector_decfloat[4]>>8;
vector_decfloat[0]=vector_decfloat[4]&0xFF;
}
Donde:
char buffer_respuesta[300];
char ASCII[]="0123456789ABCDEF";
unsigned int vector_decfloat[5];
int *ptr;
float Vx;
Así que ya funciona, si alguien la necesita las puede probar a ver que tal le funciona.