Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kidpic en 11 de Agosto de 2012, 18:03:46
Título: division por 1000
Publicado por: kidpic en 11 de Agosto de 2012, 18:03:46
tengo una variable long conteo ( es entera)que se incrementa cdo hay una interrupcion por rb0. este incremento se muestra por el lcd. esta variable la quiero dividir por 1000 lo que hago en el programa es definir float division; ( va a tener coma)
division= conteo /1000; y muestro printf(lcd_putc,"division %1.3f",division);
En el lcd no aparece ningun resultado solo 0.000 no se que estoy haciendo mal. Una mano por favor. Gracias
Título: Re: division por 1000
Publicado por: MGLSOFT en 11 de Agosto de 2012, 18:10:35
Deberas hacer un Cast, cuando divides un entero por otro entero, si no lo haces, el valor sigue siendo entero, y no se representa como float.
while (1) { division=float(conteo/1000.0); lcd_gotoxy(1,1); printf(lcd_putc,"conteo:%04ld",conteo); lcd_gotoxy(1,2), printf(lcd_putc,"division:%1.3f",division); } }
Gracias
Título: Re: division por 1000
Publicado por: kidpic en 11 de Agosto de 2012, 19:12:34
gracias solucione el tema era por los parentesis ((float)conteo)/1000; lo publico talvez a a lguno le sirva
Título: Re: division por 1000
Publicado por: BrunoF en 11 de Agosto de 2012, 19:20:48
Y cuidado con las constantes...
1000 es distinto de 1000.0 para el compilador. 1000 te lo va a considerar como un integer, mientras que indicandole 1000.0 le estás indicando explícitamente que querés que lo interprete como variable float.
Saludos.
Título: Re: division por 1000
Publicado por: MGLSOFT en 11 de Agosto de 2012, 20:56:07
Asi es, prueba escribirlo como dice Bruno, asi ya vas quitando las malas costumbres que adquirimos al ir aprendiendo a programar. Incluso comenta en tu software porque haces lo que haces, asi lo recuerdas tu mismo cuando lo leas en unos años... ;-)
Título: Re: division por 1000
Publicado por: kidpic en 20 de Agosto de 2012, 17:08:16
Gracias por el aporte. Sobre este mismo programita funciona correctamente el conteo cuanto aparece un pulso H to L en Rb0. Lo incremento por interrupciòn. Lo que sucede es que el mismo no se realiza desde cero como dice el programa.