Autor Tema: estructuras y uniones  (Leído 2108 veces)

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

Desconectado quitpic

  • PIC10
  • *
  • Mensajes: 3
estructuras y uniones
« en: 13 de Enero de 2010, 08:38:48 »
Hola a todos los usuarios de este estupendo foro, tengo la siguiente duda y agradezco las sugerencias que me puedan ayudar a resolverla:

P18f2480.h define a LATA de la siguiente manera:

extern volatile near unsigned char  LATA;
extern volatile near struct {
  unsigned LATA0:1;
  unsigned LATA1:1;
  unsigned LATA2:1;
  unsigned LATA3:1;
  unsigned LATA4:1;
  unsigned LATA5:1;
  unsigned LATA6:1;
  unsigned LATA7:1;
} LATAbits;


Esto permite usar en C a LATA de 2 maneras distintas, como un registro y como bits sueltos,
LATA=50;
LATAbits.LATA4=1;

Si quiero hacer lo mismo con una variable que llamo AuxK:
unsigned char AuxK;
struct  {
    unsigned  det_PlacPS:1;
    unsigned  c_Inferior:1;
    unsigned  c_Superior:1;
    unsigned  engrase:1;
    unsigned  rev_Subir:1;
    unsigned  rev_Bajar:1;
    unsigned  sobrecarga:1;
    unsigned  bascula:1;
 }AuxKbits;

Al compilar AuxK ensambla en la direccion 204 y AuxKbits en la 205, ¡¡¡son 2 variables distintas!!!.

¿Cuál es la solucion para que AuxK funcione igual a LATA?

Desconectado quitpic

  • PIC10
  • *
  • Mensajes: 3
Re: estructuras y uniones
« Respuesta #1 en: 13 de Enero de 2010, 08:48:05 »
Disculpar el desliz, con las prisas me he olvidado de datos importantes, la consulta es para C18 y el micro es el 18F2480.
Un saludo,

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: estructuras y uniones
« Respuesta #2 en: 13 de Enero de 2010, 09:47:05 »
Se puede hacer así:

Código: C
  1. union{
  2.      unsigned char Byte;
  3.      struct{
  4.           unsigned bit0:1;  
  5.           unsigned bit1:1;  
  6.           unsigned bit2:1;  
  7.           unsigned bit3:1;  
  8.           unsigned bit4:1;  
  9.           unsigned bit5:1;  
  10.           unsigned bit6:1;  
  11.           unsigned bit7:1;  
  12.      };
  13. }Variable;

Y trabajar así:
Código: C
  1. Variable.Byte=0;
  2.  
  3. Variable.bit5=1;


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado quitpic

  • PIC10
  • *
  • Mensajes: 3
Re: estructuras y uniones
« Respuesta #3 en: 13 de Enero de 2010, 11:54:44 »
Gracias suky,

Ahora funciona perfectamente, creía haberlo probado de todas maneras pero evidentemente me faltaba esta!!
Un saludo,