TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: rferrero en 22 de Octubre de 2004, 10:47:00

Título: Fusión de registros (2 en 1)
Publicado por: rferrero en 22 de Octubre de 2004, 10:47:00

   Hola a todos. Tengo una medida separada o dispuesta en dos registros. Bueno, perdón, 2 variables int de 8 bits cada una. Lo que quiero es meter la parte alta y baja del byte de la medida (las 2 variables int) en una variable de tipo long int. Se hace con el comando shift_right(dirección,bytes,0 ó 1). El caso es que dirección es un puntero a memoria. Qué dirección de memoria??  Bytes supongo que será 8.

   Tengo que reservar previamente 16 bits de memoria y 8 antes y después de estos 16 y luego utilizar el comando shift?? Estoy un poco perdido, la verdad. No termino de tener claro cómo se hace.  Helado
   
    Gracias de antemano.
  Un saludo.
                     
Título: RE: Fusión de registros (2 en 1)
Publicado por: pacalaconcurso en 22 de Octubre de 2004, 17:40:00
es mas sencillo que eso:

make16(variable1,variable2);

Idea

saludos
Título: RE: Fusión de registros (2 en 1)
Publicado por: JacoPastorius2004 en 22 de Octubre de 2004, 17:47:00
que tal!

fijate con algo como esto:

long int reg_largo;
int reg_corto_A;
int reg_corto_B;
.......

reg_corto_A = 103;
reg_corto_B = 23;

reg_largo = (long)reg_cortoA;    // operador cast para convertir a long reg_cortoA
reg_largo <<= 8;             // roto a la izquierda 8 lugares para que no se solapen luego con reg_cortoB

reg_largo += (long)reg_cortoB;  // los sumo

Saludos
Jaco

Título: RE: Fusión de registros (2 en 1)
Publicado por: pacalaconcurso en 22 de Octubre de 2004, 18:43:00
efectivamente es lo mismo pero escribiendo mas códigoSonrisa GiganteSonrisa GiganteSonrisa GiganteSonrisa Gigante

saludos
Título: RE: Fusión de registros (2 en 1)
Publicado por: rferrero en 23 de Octubre de 2004, 04:23:00

    Vaya, pues no era tan complicado. Sonrisa
    Muchas gracias!! Muchas risas  
    Un saludo.
                Rubén.  Rebotado