TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Algec en 17 de Agosto de 2011, 10:00:24
-
Como podria visualizar en LCD un entero con signo de mas de 32 Bits?, el pic solo admite 32 bit y podria usar un segundo Byte para acarreo del primero pero el formato seria extraño y no seria un entero tal y como deberia ser-
Alguien tuvo este problema? como lo resolvio?
Muchas gracias
-
Primero en que lemguaje trabajas y que pic usas.
-
16F788 a 10 Mh, es un LCD de 40 lineas y uso CCS, el problema es que quiero usar un contador de mas de 32 bit, por lo que puedo acarrear en un segundo entero de 32 el overflow del primer byte pero a la hora de visualizar el valor de conteo no s ecomo hacerlo, ya que el segundo Byte seria 1 y el primero o mas bajo seria de nuevo cero pero no seria el valor en entero que deberia reflejar
Creo que lo explica mejor si fuesen dos palabras de 8 bits. El overflow de la primera seria el valor posterior a 256, 1 del segundo Byte y 0 del mas bajo y me indicaria el LCD "10" cuando deberia escribir de alguna forma 257
Me explico en lo que necesito?
-
.
Si lo que estás haciendo es un contador, me parece extraño que necesites variables con signo :?. Aún así, al trabajar con variables con signo hay que tener en cuenta que el bit que indica el desbodre de la cuenta es el bit de overflow (que no todos los pic tienen), y no el de acarreo (este sí lo tienen todos). El primero se activa cuando la cuenta pasa de 2^31 a -(2^31+1), en cambio el segundo lo hace cuando pasa de 2^32 a 0.
Para visualizarlos en un lcd, lo más sencillo es tener un grupo de variables que representen unidad, decena, centena, etc, e ir incrementándolas a medida que se va decrementando la cuenta, hasta que esta llega a 0.
Saludos.
-
Para visualizarlos en un lcd, lo más sencillo es tener un grupo de variables que representen unidad, decena, centena, etc, e ir incrementándolas a medida que se va decrementando la cuenta, hasta que esta llega a 0.
Estoy totalmente de acuerdo, porque implementar una variable de 40-bits (una unión entre un long long + char) y después pasarla a string va a ser un dolor de cabeza.
Saludos!
-
a ver el contador mide distancias relativas y necesito que mida a + y a -
Ese es parte del tema.Por eso hay que hacerlo con signo.
Ademas operaciones matematicas para ese pic con variables de al menos 40 Bits?
-
a ver el contador mide distancias relativas y necesito que mida a + y a -
Ese es parte del tema.Por eso hay que hacerlo con signo.
Ademas operaciones matematicas para ese pic con variables de al menos 40 Bits?
De poder se puede, pero tenes que implementarlas vos. En asm es lo más eficiente, pero hay que ponerse a estudiar un poco :mrgreen: Por ejemplo en C18 implementé lo siguiente, pero todo en C, cuando necesite trabajar con variable de 64-bits:
http://www.micros-designs.com.ar/c18-logica-de-64-bits-suma-resta-multiplicacion-division/
Ahora pasarlo a string :x
Saludos!
-
YA tengo cosas para ir mirando
Mil gracias
-
.
Si los incrementos/decrementos del contador son de a una unidad por vez, lo más sencillo de implementar es la codificación de signo y magnitud. Solamente hay que reservar un bit (según el "estándar", es el MSB de la variable), y usarlo para representar el signo del número (1: negativo; 0: positivo). El resto de los bits de la variable conforman la magnitud del número representado. Por ej, con 8 bits, el valor 10010001 representaría el número -17. Por supuesto que no hay límite para el tamaño de la variable, y el bit de signo puede ponerse en una variable separada de la magnitud, para trabajar esta simplemente como un número sin signo, donde sí te sirve el bit de acarreo.
Saludos.