TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: darck_khronos en 21 de Septiembre de 2012, 00:59:44

Título: [CCs] Divicion entre 1000
Publicado por: darck_khronos en 21 de Septiembre de 2012, 00:59:44
Que tal compañeros, disculpen pero me tope que con pequeño problema que es el siguiente:
  Cuando realizo una divicion entre 1000 mi microcontrolador me arroja siempre cero como resultado no se donde este mal, les muestro el codigo:

Código: [Seleccionar]
float kh=0,tseg=0,v=110,i=1,fp=1,e=0;
int16 q=0.0,vb=0.0,va=0.0;
int rev=0,crev=0;

            lcd_gotoxy(1,1);
            e=3.6*kh*rev;
            e=e/tseg;
            v=v*i*fp;
            v=v/1000;
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fKwC%2.3fKi=%2.3f",e,v);
            delay_ms(4000);
            e=e/v;
            e=e*100;
            printf(lcd_putc,"\n Efi= %5.4f",e);
            output_low(pin_a1);
            output_low(pin_a2);
            output_low(pin_a3);
            crev=0;

Cuando muestro los resultados de :
  v=v/1000; y e=e/v; me manda a cero
Título: Re: [CCs] Divicion entre 1000
Publicado por: Nocturno en 21 de Septiembre de 2012, 02:11:03
Prueba así, a ver qué tal:

Código: C
  1. float kh=0.0,tseg=0,v=110.0,i=1,fp=1,e=0;
  2. int16 q=0,vb=0,va=0;
  3. int rev=0,crev=0;
  4.  
  5.             lcd_gotoxy(1,1);
  6.             e=3.6*kh*(float)rev;
  7.             e=e/tseg;
  8.             v=v*i*fp;
  9.             v=v/1000.0;
  10.             lcd_gotoxy(1,1);
  11.             printf(lcd_putc,"\fKwC%2.3fKi=%2.3f",e,v);
  12.             delay_ms(4000);
  13.             e=e/v;
  14.             e=e*100;
  15.             printf(lcd_putc,"\n Efi= %5.4f",e);
  16.             output_low(pin_a1);
  17.             output_low(pin_a2);
  18.             output_low(pin_a3);
  19.             crev=0;