Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: andyta en 08 de Junio de 2010, 10:38:07
Título: Se puede realizar operaciones con decimales en pics?
Publicado por: andyta en 08 de Junio de 2010, 10:38:07
Hola a todos! Tengo problemas con un programa que estoy haciendo. Quiero hacer una calculadora usando un LCD y un teclado 3x3. Estoy usando la libreria math.h. Ya tengo programadas la suma, resta y multiplicacion pero tengo un problema con la division y el logaritmo. ¿Como puedo declarar las variable que guardan el resultado? ya que el quiero que tengan por lo menos 2 decimales. Estaba usando un double y float, pero siguiendo la simulacion paso a paso puedo ver que las variables no almacenan el resultado, pero con un int si lo hacen. El problema de usar un int es que me entrega el resultado sin decimales. Estoy algo confundida. Ademas tendria que msotrar el resultado el el LCD, la libreria que tendo de Lcd usa ASCII ¿Como podria mostrar el resultado en el LDC?
Título: Re: Se puede realizar operaciones con decimales en pics?
Publicado por: Cryn en 08 de Junio de 2010, 10:58:31
Hola andyta,
Por tus anteriores posts supongo que sigues con CCS, y si no me equivoco para cualquier compilador C para pic usar decimales es válido, declarando tu variable como float
Que librería de lcd estas usando?
acá un ejemplo:
Código: C#
#define pi 3.141592
float resultado;
int r;
r=5;
resultado=pi*r*r;
printf(lcd_putc,"\farea=%g",resultado);
//printf(lcd_putc,"\farea=%f",resultado); //tambien de esta manera funciona
En el LCD se verá: area=78.5398
Si quieres mostrar solo 2 decimales y 3enteros haces: printf(lcd_putc,"\farea=%3.2f",resultado);
En el LCD se verá: area=78.53
Y existe casi cualquier combinación en cantidades de enteros y decimales.
Si la instrucción resultado=pi*r*r; no te da el valor adecuado, tendrías que hacer un casting: resultado=pi*(float)r*(float)r;
Título: Re: Se puede realizar operaciones con decimales en pics?
Publicado por: andyta en 08 de Junio de 2010, 13:15:26
gracias! No savia que tan util es el printnf, no tienes un poco mas de informacion de como usar el printnf? Y como usar un casting?
Título: Re: Se puede realizar operaciones con decimales en pics?
Publicado por: Cryn en 08 de Junio de 2010, 13:27:45
Perdón, no es printnf es printf. Ya lo corregí en el código y aumenté también como se vería en el LCD.
Más información del printf lo encuentras en la web, en el manual de referencia de CCS, o en cualquier manual para lenguaje C.
No creo que necesites más información del casting, ya que sirve para "hacer compatibles" las operaciones entre variables o contantes de diferentes tipos entre si.
Como en este caso, la variable r es byte (entera de 8bits), pero la constante pi es float, por tanto quizá sea necesario convertir nuestra variable r a float, digo quizá porque a veces no es necesario el casting, como te dije dependiendo a si tu dato obtenido no es el que esperas.
Una cosa más que se me olvidó aconsejarte es que si usarás proteus para hacer una simulación, quizá no te pueda visualizar las variables float, si no me equivoco hay que hacer alguito para que te muestre, ese alguito lo tienes que buscar por el foro.
saludos.
Título: Re: Se puede realizar operaciones con decimales en pics?
Publicado por: andyta en 11 de Junio de 2010, 12:36:20