TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: culebrasx en 25 de Octubre de 2010, 21:39:34
-
Hola, no se muy bien
como manejar datos de 17 bits...
Quiero mostrar por lcd el porcentaje que tiene la variable OC1RS respecto de su maximo (1023)
si declaro:
long r;
r=(long) OC1RS*100/1024;
si a OC1RS le digo que sea p. ej. 0x03ff -> 1023 me genera unicamente en r 0x00008f9c cuando deberia ser
0x00018f9c
he mirado paso a paso en el dissasembly listing y efectivamente maneja ese uno que lo deja en WREG1 pero luego lo machaca y si copio el texto del dissasembly para poder hacer algo manualmente me da error, lo pongo entre asm(" "); ,claro
decir que ya he usado el buscador pero nada he podido solucionar...
uso C30 y mplab 8.50
un saludo...
-
No entiendo, 1023*100/1024 debería dar 99 :?
Prueba haciendo el cast: r=((long) OC1RS*100/1024);
-
No entiendo, 1023*100/1024 debería dar 99 :?
Prueba haciendo el cast: r=((long) OC1RS*100/1024);
En efecto, eso era, era simplemente un problema de parentesis...
Un tera de Gracias...Suky...
Y un abrazo desde una callecita de Valencia, España... ;-)