hola a todos!! os explico he hecho un programa en C18 en el que simplemente visualizo por un lcd el valor de la conversion ad con un 18f4550, pero tengo un problema y creo que es con las variables, porque a ver, utilizo alineacion a izquierdas, para asi solo utilizar el registro ADRESH y lo multiplico por 4. el caso es que si la multiplicacion la hago en la misma instruccion que envio el dato al lcd, si que me muestra hasta 1020, pero si lo hago en una variable, llega a 255 y luego vuelve a empezar. os pongo el codigo:
la variable voltios es del tipo unsigned int asi que no deberia tener problemas de espacio porque son 16bits no? y yo solo utilizo 10 o me equivoco? la conversion se que la hace perfectamente porque sino no lo sacaria de esa forma. gracias por adelnatado.
luego queria tmb preguntar una cosa, como estoy actualizando constantemente el valor, en el lcd se produce un parpadeo (por lo menos en proteus) deberia poner ahi un latch para mantener el valor? me podeis decir la referencia de algun circuito que haga eso?
Un saludoo!!!
Código:
while(1){
ADCON0bits.GO=1;
do{}
while(ADCON0bits.GO==1);
voltios=ADRESH;// si la hago aqui no funciona
itoa(voltios*4, medida);
WriteCmdXLCD(0x01);
BusyXLCD();
putsXLCD(medida);
}
}
luego queria tmb preguntar una cosa, como estoy actualizando constantemente el valor, en el lcd se produce un parpadeo (por lo menos en proteus) deberia poner ahi un latch para mantener el valor? me podeis decir la referencia de algun circuito que haga eso?
Un saludoo!!!