Autor Tema: como obtener un int16 a partir de dos int8  (Leído 2484 veces)

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

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
como obtener un int16 a partir de dos int8
« en: 05 de Agosto de 2007, 22:55:28 »
supongo que es una pregunta muy basica, pero la verdad que no me manejo muy bien con los bits, bytes, y todo eso... :?
lo que quiero hacer es guardar una variable de 16 bits en la eeprom interna del pic (lo hago directamente desde el programador, ya que es algo asi como una configuracion interna)
supongo que tengo que almacenar esa variable en 2 posiciones, ya que se guarda de a tamaños de BYTE
entonces, tengo medio int16 en una posicion, y la otra mitad en la siguiente. el pic tiene que leer ambos y de ellos conseguir el int16 original y guardarlo en una variable int16...
como lo puedo hacer? supongo que usando algo de "<<" o ">>" pero la verdad no tengo idea de como hacerlo
alguno me puede echar un cable?
salu2
« Última modificación: 06 de Agosto de 2007, 06:10:53 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: como obtener un int16 a partir de dos int8
« Respuesta #1 en: 06 de Agosto de 2007, 01:49:43 »
En cualquier compilador de C puedes utilizar esto:

Código: [Seleccionar]
EnteroLargo = Entero1<<8 + Entero2
Además, en CCS existe esta función:

Código: [Seleccionar]
EnteroLargo = Make16(Entero1, Entero2);

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: como obtener un int16 a partir de dos int8
« Respuesta #2 en: 06 de Agosto de 2007, 01:50:38 »
hazte una union:

typedef union {
   unsigned int REGISTRO ;
   struct {
      unsigned char BAJO;
      unsigned char ALTO;
   };
} REGISTRObytes;

luego en una parte de tu programa:

        REGISTRObytes temporal;
   temporal.REGISTRO = VARIABLE_16_bits;
   byte1 = temporal.ALTO;
   byte2 = temporal.BAJO;



a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: como obtener un int16 a partir de dos int8
« Respuesta #3 en: 06 de Agosto de 2007, 06:29:57 »
alla donde mis dudas llegen tus respuestas siempre las alcanzan...
eres omnipresente, nocturno, eres mi angel de la guarda!  :mrgreen:
cada vez que tengo una duda estas tu para resolverla! gracias!

no te ofendas microcadaver, a ti tambien te doy las gracias por responder... pero es que nocturno esta presente en el 100% de mis posts  :D

salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.


Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: como obtener un int16 a partir de dos int8
« Respuesta #5 en: 06 de Agosto de 2007, 06:44:07 »
No, no es "tu" sombra, es "La Sombra" de todos. ja ja ja :D :D :D :D
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: como obtener un int16 a partir de dos int8
« Respuesta #6 en: 08 de Agosto de 2007, 05:19:48 »
pero es que nocturno esta presente en el 100% de mis posts  :D
Ya puedes ir rebajando el porcentaje, que de bujías de modelismo no tengo ni idea. Siempre usé el chispómetro a baterías sin preguntarme cómo funcionaba  :D

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: como obtener un int16 a partir de dos int8
« Respuesta #7 en: 08 de Agosto de 2007, 12:24:34 »
venga manolo, no te aflijas!
ya posteare una pregunta facililona para que puedas responder y recuperar tu estatus y tu presencia en mis post  :D
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado monopic1

  • PIC10
  • *
  • Mensajes: 16
Re: como obtener un int16 a partir de dos int8
« Respuesta #8 en: 08 de Agosto de 2007, 15:54:41 »
tienes que hacer la divicion de la variable de 16 bits por 10000000 y la guardas en una posicion de la eeprom
y  luego le sacas e mudulo a la misma variable %1000000 de 16 bits y la guardas en otra memoria, eso es todo .

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: como obtener un int16 a partir de dos int8
« Respuesta #9 en: 08 de Agosto de 2007, 20:12:41 »
gracias amigo! pero la solucion de nocturno con la funcion MAKE16 ya lo he soucionado...
seguramente gaste mas ciclos de proceso de esta manera, pero no tengo inconveniente, ya que esto lo utilizo solo 1 vez al iniciar el pic.
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.