Hola, pues me encontre un programa de un cronometro que me arroja el tiempo en milisegundos y le hice algunas modificaciones para lo que ocupo pero me atore un poco
debo de convertir ese tiempo en L/M (litros x minuto) entonces le agregue una variable float para hacer la operacion, pero no se como hacer la operacion con el tiempo en milisegundos para que me aparezca en el lcd
aqui les pongo el codigo a ver si me pueden ayudar
las lineas que yo agregue son
float lporm=0.0;
y en #int_ext
lporm =/*con 50 ml*/ (0.05/(1000*milisegundos))/60.0 ; y
printf(lcd_putc, "\n%f L/M", lporm);
y las mismas en #int_RB
y si me aparece en el LCD pero solo me aparece 0.00 L/M siempre
A ver si me pueden ayudar, Gracias
debo de convertir ese tiempo en L/M (litros x minuto) entonces le agregue una variable float para hacer la operacion, pero no se como hacer la operacion con el tiempo en milisegundos para que me aparezca en el lcd
aqui les pongo el codigo a ver si me pueden ayudar
las lineas que yo agregue son
float lporm=0.0;
y en #int_ext
lporm =/*con 50 ml*/ (0.05/(1000*milisegundos))/60.0 ; y
printf(lcd_putc, "\n%f L/M", lporm);
y las mismas en #int_RB
y si me aparece en el LCD pero solo me aparece 0.00 L/M siempre
A ver si me pueden ayudar, Gracias
Código:
int numdesbordamientos=0;
#int_ext
void int_ext_(){
if(contando){
timer1 = get_timer1();
setup_timer_1(T1_DISABLED);
milisegundos =/*65.536*/ 524.288*numdesbordamientos + (8*timer1)/1000.0 ;
lporm =/*con 50 ml*/ (0.05/(1000*milisegundos))/60.0 ;
// milisegundos = 8.0*milisegundos;
printf(lcd_putc, "\f%f ms", milisegundos);
//printf(lcd_putc , "\f%Lu", timer1);
printf(lcd_putc, "\n%f L/M", lporm);
//printf(lcd_putc, "\n %d", numdesbordamientos);
contando = 0;
}
else
{
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(0);
numdesbordamientos = 0;
contando = 1;
printf(lcd_putc, "\fCalculando...");
}
}
#int_TIMER1
void int_timer1_ (){
numdesbordamientos++;//=1.0; //Se desbordo una vez mas.
if(numdesbordamientos > 20){
printf(lcd_putc, "\fTime Out!");
setup_timer_1(T1_DISABLED);
}
}
#int_RB
void int_rb_(){
clear_interrupt(int_rb);
disable_interrupts(GLOBAL);
if(contando){
timer1 = get_timer1();
setup_timer_1(T1_DISABLED);
milisegundos =/*65.536*/ 524.288*numdesbordamientos + (8*timer1)/1000.0 ;
lporm =/*con 50 ml*/ (0.05/(1000*milisegundos))/60.0 ;
// milisegundos = 8.0*milisegundos;
printf(lcd_putc, "\f%f ms", milisegundos);
//printf(lcd_putc , "\f%Lu", timer1);
printf(lcd_putc, "\n%f L/M", lporm);
//printf(lcd_putc, "\n %d", numdesbordamientos);
contando = 0;
}
else
{
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(0);
numdesbordamientos = 0;
contando = 1;
printf(lcd_putc, "\fCalculando...");
}
}
void main()
{
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
set_tris_b(11111111);
// TODO: USER CODE!!
port_b_pullups(true);
lcd_init();
printf(lcd_putc, "Bienvenido!");
//enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
while(1){
};
}