lo ke intento hacer es un sensor de temperatura con el LM35,el cual te da una salida de 10mV por cada grado C,osea,para 35ºC te sacara 350mV,para 110ºC te dara 1,1V...etc.,y luego representar el valor en el ordenador,pero con 1 solo digito decimal.La interrupcion ADC es la siguiente :
#INT_AD
analog(){
long int grados;
float resultado_ana;
int decimales;
IF(ADRESH== 0)RESULTADO_ANA = ADRESL;
IF(ADRESH== 1)RESULTADO_ANA = 256 + ADRESL;
IF(ADRESH== 2)RESULTADO_ANA = 512 + ADRESL;
IF(ADRESH== 3)RESULTADO_ANA = 768 + ADRESL;
grados = (RESULTADO_ANA*150)/307; //esto es una regla de
//3 en la ke 150 son los 1,5V (valor maximo ke llega el LM35),
//y 307 es el valor analogico ke le corresponde a los 1,5V
//en el registro del pic.
decimales = resultado_ana*150;
decimales %= 307;
PRINtF("GRADOS =%lu,%1u C
",GRADOS,decimales);
}
.......lo he intentado hacer poniendo ke "grados" sea una "float",pero no me va bien,cuando la V de entrada es 1,5V me da un valor desorbitado de mas de 9000 ke no se corresponde para nada,y a partir de esa V en adelante,da valores totalmente erroneos y aleatorios.
Podria hacer ke funcionase como kiero poniendo lo siguiente encima de la funcion printf():
decimales /=100;
....pero lo ke me tiene moskeado es ke me envie todos los caracteres de "decimales" cuando yo le estoy indicando ke solo me envie 1.
Saludos!!!!