TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cyberman123 en 06 de Junio de 2010, 10:42:42
-
Hola a todos...
estuve buscando en el foro y la verdad no encontre nada puntual sobre el tema... el problema es el siguiente: estoy haciendo una especie de juego en el que el jugador escoje el puntaje maximo y va jugando turnos sumando puntajes... el juego se acaba hasta que el puntaje del jugador alcanza el puntaje maximo que el mismo escojio con anterioridad... el problema radica en que el puntaje puede ser desde 0 hasta 999, pero como ya saben el pic 16f877a trabaja con registros de 8 bits por lo tanto no puedo trabajar con numeros mayores a 255...
tenia una idea de separar los numeros en centena, decenas y unidades... pero no me sirvio porque solo podria separar numeros menores a 8 bits...
cualquier informacion que tengan o ejemplos me ayudaria mucho...
he buscado y solo encuentro informacion parecida pero en asm, y se casi nada sobre assembler
Gracias de antemano ;-)
-
En que lenguaje? Si es C, declara la variable como long
-
Oye muchas gracias me solucionaste el problema.. y si, si es C... habia puesto el mensaje en el foro de C pero lo movieron para aca...
De casualidad sabes como funciona eso??... porq los registros son de 8 bits, como es posible manejar mas de 8??
-
Hola.
Lo que se hace es concatenar los registros.
-
imagino que concatenando registro es la forma que maneja los long internamente el C, no me he puesto a investigar eso.
De todas formas, se me ocurre que es un manera simple y eficientes usar dos registros, y podrias tener cuenta hasta 16 bit, poco mas de 65000 para el puntaje.
Como haces esto?, inicias ambos contadores (registros) a 0, empiezas a contar en el registro bajo, desde 0 a 255, cuando este llega a 256, lo que haces es incrementar el siguiente registro en uno y inicias la cuenta nuevamente en el registro bajo, hasta que se sobrecargue nuevamente e incrementas el registro alto, asi sucesivamente.
-
Si willy, así se hace en ASM y es lo que hace C en registros de 8 bit.
-
Oye muchas gracias me solucionaste el problema.. y si, si es C... habia puesto el mensaje en el foro de C pero lo movieron para aca...
De casualidad sabes como funciona eso??... porq los registros son de 8 bits, como es posible manejar mas de 8??
Disculpa, yo lo moví. Tu primer mensaje hablaba sólo de ASM y asumí que quedaría mejor en otro lado. Ahora mismo lo regreso al subforo de C.
-
Oye muchas gracias me solucionaste el problema.. y si, si es C... habia puesto el mensaje en el foro de C pero lo movieron para aca...
De casualidad sabes como funciona eso??... porq los registros son de 8 bits, como es posible manejar mas de 8??
Disculpa, yo lo moví. Tu primer mensaje hablaba sólo de ASM y asumí que quedaría mejor en otro lado. Ahora mismo lo regreso al subforo de C.
No te preocupes migsantiago... y muchas gracias por ayudarme con esto, me estaba matando la cabeza pensando la forma de incrementar el registro alto cuando se debordara el bajo, siendo que solo se necesitaba definir una variable de tipo long