tengo esta porcion de codigo que es una funcion:
void espirometria()
{
char recepcion; //Dato recibido del PC
int1 control; //falso o verdadero para mostrar tensión
int flujoh=0,flujol=0;
int8 Templ=0,Temph=0;
int16 Temp16Bits=0,presion16bits=0,flujo16=0,presionh=0,presionl=0;
float temperatura=0,presion=0;
printf(lcd_putc,"ESPIROMETRIA");
do
{
//Detección de la conexión de dispositivo USB
//Devuelve TRUE si dispositivo ha sido enumerado por el PC
if (usb_enumerated()){
/*CONFIGURACION CANAL 2 CON 12 BITS*/
output_low(CS);
spi_write(220);/* canal 3*/
flujoh=spi_read(0);//obtenemos el Temp alto del registro de temperatura
flujol=spi_read(0);//obtenemos el Temp bajo del registro de temperatura
output_high(CS);
flujoh = flujoh & 0x7F;
flujo16=make16(flujoh,flujol);
/*CONFIGURACION CANAL 3 CON 12 BITS*/
output_low(CS);
spi_write(172);/* canal 3*/
Temph=spi_read(0);//obtenemos el Temp alto del registro de temperatura
Templ=spi_read(0);//obtenemos el Temp bajo del registro de temperatura
output_high(CS);
Temph = Temph & 0x7F;
Temp16Bits=make16(Temph,Templ);
Temp16Bits=Temp16Bits>>3;
temperatura=Temp16Bits*0.122; /*FACTOR DE CONVERSION=(5*100/4095) */
/*CONFIGURACION CANAL 4 CON 12 BITS*/
output_low(CS);
spi_write(228);
presionh=spi_read(0);//obtenemos el Temp alto del registro de temperatura
presionl=spi_read(0);//obtenemos el Temp bajo del registro de temperatura
output_high(CS);
presionh = presionh & 0x7F;
//tensionl>>=3;
presion16Bits=make16(presionh,presionl);//convertimos a un registro de 16Bits
lcd_gotoxy(1,1);
// printf(lcd_putc,"%lx",tension16Bits);
presion16Bits=presion16Bits>>3;
presion=(presion16Bits*0.0012-0.2+0.675)/4.5E-5;
presion=presion/1000;
lcd_gotoxy(1,2);
printf(lcd_putc,"T=%3.1f P=%3.1f KPa",temperatura,presion);
if (usb_cdc_kbhit()){
recepcion=usb_cdc_getc(); //lo lee
//si es caracter vacio(barra espaciadora)enciende o apaga visualización
if (recepcion==' ') control=control+1;
}
//Si control=1 envia a PC valor de tensión leido
if (control==1)
{
printf(usb_cdc_putc,"A%x%x",flujoh,flujol);
printf(usb_cdc_putc,"B%x%x", Temph,Templ);
printf(usb_cdc_putc,"C%x%x",presionh,presionl);
}
delay_ms(50);
}
}while(TRUE);
}
de este modo anda, pero por ej al declarar esto int flujoh=0,flujol=0,a=0,b=0; no anda, es decir en una hyperterminal no muestra lo que deberia recibir, pero si en el lcd muestra esto:printf(lcd_putc,"T=%3.1f P=%3.1f KPa",temperatura,presion);