Autor Tema: manejo de numeros en ccs  (Leído 2400 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elavismo

  • PIC10
  • *
  • Mensajes: 30
manejo de numeros en ccs
« en: 19 de Abril de 2007, 10:28:34 »
hola compañeros.  Estoy introducièndo unos numeros por el teclado y a la vez mostrarlo a la lcd, para grabarlos en la memoria i2c. Todo el hardware esta funcionando pero tengo una duda. Yo introduzco número a numero con el teclado y almaceno dñigito a dígito, cada una en una variable aparte. pero cada variable es de 8bits y quiero guardar dos numeros en cada variable para ahorrar espacio. ejemplo. Tengo el numero 1269 introducidos con un teclado, y tengo 4 variables (a1,a2,a3,a4)a1, en la primera el 1, en la2 el 2, en a3 el 6 y a4 el 9. Y tengo dos variables apartes llamadas x1 y x2, y quiero colocar en x1 en hexadecimal los numeros de las variables  a1 y a2 y en x2 colocar a3 y a4, para que en x1=12h y x2=69h. Como hago esto en CCs? Gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: manejo de numeros en ccs
« Respuesta #1 en: 19 de Abril de 2007, 12:08:51 »
La forma simple sería que trabajes en BCD.

Cada "nibble" de tu byte podría contener 2 números, del 0 al 9. 

Si tus números solo irán del 0 al 9 (porque así lo restringes en tu rutina de lectura de teclado), el dato podría ser algo así


char datobcd,numero1,numero2;

datobcd = (numero2 << 4 | numero1);


Donde numero1 y numero2 son variables donde guardaste tus números previamente leídos del teclado

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado elavismo

  • PIC10
  • *
  • Mensajes: 30
Re: manejo de numeros en ccs
« Respuesta #2 en: 19 de Abril de 2007, 13:15:30 »
Gracias amigo, lo voy a implementar a ver que resultado obtengo.
Que significa ése << 4 ?

con respecto a mi rutina de teclado, es que yo mismo la hice ya que conecté el teclado en otro pto y como tengo poco tiempo de programar en C, no he usado la libreria de teclado del mismo, y hice una apartir de las que habia hecho en asm.  Eso de la restricción no lo entendí mucho, pero mi teclado es un 4x3 que tiene sólo números del 0 al 9, y yo  meto los números de uno en uno y guardo cada uno en una variable. No sé como hacer para recivirlos y guardarlos inmediatamente dos en una sóla variable, sin embargo lo que me distes tiene lógica y seguro me funcionará!  :-/

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: manejo de numeros en ccs
« Respuesta #3 en: 20 de Abril de 2007, 11:56:10 »
con el permiso de Maunix te respondo:

el << significa que esta haciendo numero2 mas significativo (MSB) desplazandolo 4 veces hacia la izquierda y luego OReando con numero1 lo estas añadiendo todo en un mismo registro.

esto se puede hacer en este caso ya que los numeros se pueden interpretar como registros que no ocuparan todo un byte, de hecho se podría extender hasta 15 -> 0xF y aún podrias almacenar 2 datos

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: manejo de numeros en ccs
« Respuesta #4 en: 20 de Abril de 2007, 13:21:32 »
Palitroquez, que esto no es una competencia y que en nada me ofende que ud postee.  La idea es que postee el que primero llegue y evacúe la duda del compañero lo antes posible.

No tomo estas cosas como invasión de post ni nada por el estilo  8) 8) , muy por el contrario, se enriquece el foro del aporte de todos.


Eso de la restricción no lo entendí mucho, pero mi teclado es un 4x3 que tiene sólo números del 0 al 9, y yo  meto los números de uno en uno y guardo cada uno en una variable.
Me refiero a que en tu rutina de teclado, no hagas que al presionar el 9, cargues un 50, por decir un ejemplo.  Que al presionar 9, cargues en la variable un 9.


No sé como hacer para recivirlos y guardarlos inmediatamente dos en una sóla variable, sin embargo lo que me distes tiene lógica y seguro me funcionará!  :-/

En cuanto a esto, se me ocurren que podrías hacer lo mismo que hice antes, pero en 2 etapas.   Te paso un código de ejemplo donde en el nibble inferior cargarás el 1er dato ingresado, y en el nibble inferior el 2do dato ingresado.

tecla es una variable donde se guarda la tecla recibida, esta variable se puede modificar en la subrutina de lectura de teclado o bien que la subrutina de leer la tecla devuelva un char con dicho valor.


char tecla, dato;

; llamar subrutina tecla por primera vez
; leer_tecla()
dato = tecla << 4;
; llamar subrutina tecla por segunda vez
; leer_tecla()
dato = dato | tecla;





- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: manejo de numeros en ccs
« Respuesta #5 en: 20 de Abril de 2007, 15:27:19 »
no te preocupes Maunix   :mrgreen: hice esa reflexión ya que la pregunta iba dirigida a tí, y para no parecer descortés, se debe pedir permiso ante una conversación entre personas  :)
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado elavismo

  • PIC10
  • *
  • Mensajes: 30
Re: manejo de numeros en ccs
« Respuesta #6 en: 21 de Abril de 2007, 20:38:00 »
Gracias compañeros. Su información me sirvió mucho y logré solventar con ella.


 

anything