TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: culebrasx en 25 de Octubre de 2010, 21:39:34

Título: como manejar datos de 17 bits
Publicado 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...
Título: Re: como manejar datos de 17 bits
Publicado por: Suky en 25 de Octubre de 2010, 21:46:16
No entiendo, 1023*100/1024 debería dar 99  :?

Prueba haciendo el cast: r=((long) OC1RS*100/1024);
Título: Re: como manejar datos de 17 bits
Publicado por: culebrasx en 26 de Octubre de 2010, 08:15:44
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... ;-)