Autor Tema: Problemas con la impresión de flotantes en LCD con CCS, con solución  (Leído 1344 veces)

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

Desconectado xalito

  • PIC10
  • *
  • Mensajes: 1
Mi problema era el siguiente: realizando un medidor de distancia para mi bicicleta, mediante la cuenta de los pulsos entrantes por el TMR1 de un 16f877a, ya que el timer es de 16 bits uso una variable int16 (metros) para obtener el valor y cuando la cuenta es mayor a 1000 metros, ahora los convierto a kilómetros (float) y estos los muestro en un LCD; el problema era que al dividir "metros"/1000 para obtener la medida en kilómetros, es decir convertir los metros (int 16) a kilómetros (float) el LCD no imprimía los números después del punto decimal.

Código: [Seleccionar]
void cuenta_mts(){
   metros = get_timer1();
   if (metros>1000){
      kms = metrosf/1000;
   }
}

Código donde se imprime metros o kilómetros:
Código: [Seleccionar]
     if (metros < 1000){
         lcd_gotoxy (10, 1) ;
         printf (lcd_putc, "%05Lum",metros);
      }
      else{  
         lcd_gotoxy (10, 2) ;
         printf (lcd_putc, "%2.3fk",kms);
      }
La solución fué "preconvertir" los metros que eran int16 a float y después realizar la división.
Código: [Seleccionar]
void cuenta_mts(){
   metros = get_timer1();
   if (metros>1000){
      metrosf = metros; //metros es int16 y metrosf ya es flotante
      kms = metrosf/1000;
   }
}

Espero que a alguien más le ayude y que mi tema este en el lugar y con las características correctas, gracias.
« Última modificación: 17 de Octubre de 2012, 21:30:04 por xalito »

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Problemas con la impresión de flotantes en LCD con CCS, con solución
« Respuesta #1 en: 20 de Octubre de 2012, 14:38:47 »
puede ser que en el primer código no funcionaba porque no habías puesto 1000.0
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA


 

anything