lo primero y principal es indicarle al ccs que los resultados de estos valores pasan de ser int o long a float....
voltaje=(bin_lectura*P)+2.73;
temperatura=(voltaje/0.01)-273;
prueba asi
voltaje=(float)((bin_lectura*P)+2.73);
temperatura=(float)((voltaje/0.01)-273);
si no se lo indicas no te los transforma....
Suerte
como aun me considero nuevato en ccs.. tengo una duda..no basta con declarar a voltaje y temperatura como un float al inicio del programa?...cual es la finalidad de poner:
voltaje=(float)((bin_lectura*P)+2.73);
saludos
como aun me considero nuevato en ccs.. tengo una duda..no basta con declarar a voltaje y temperatura como un float al inicio del programa?...cual es la finalidad de poner:
voltaje=(float)((bin_lectura*P)+2.73);
saludos
Voltaje y Temperatura seguro ya están definidos como float. En cambio bin_lectura es el valor de la conversión analógica y es de 16 bits.
En este caso por ejemplo, bin_lectura y P son long, entonces si al multiplicarlos da mayor a 65536 se trunca y se pierde su valor. Al colocar ((float)(bin_lectura*P)) los trata como float, el resultado no se trunca y nos da el valor deseado :mrgreen:
Saludos!
set_trisb(0xf0);
portb=0xf0;
port_b_pullups(TRUE);