Cecko - zacatecnicka

Pavel Troller patrol@sinus.cz
Pátek Leden 4 22:30:12 CET 2008


Zdravíĺ,
  rozumím-li tomu, hodí se Vám typ union (viz následující příkládek):

$ cat union.c

#include <stdio.h>

typedef struct { char lo; char hi; } chars;

typedef union {
  unsigned short number;
  chars bytes;
} un;

int main(void) {

 un my_un;

 my_un.bytes.lo = 0x55;
 my_un.bytes.hi = 0xaa;

printf("%x\n", my_un.number);

}

$ gcc -o union union.c
$ ./union
aa55

> DD,
> v Ccku (konkretne Microchip C30, ale to je asi jedno) jsem toho jeste moc
> nenapsal, takze se omlouvam za zacatecnicky dotaz. Da se vubec, a pokud ano,
> tak jak, realizovat nekolikery pohled na stejnou pozici v pameti? 
> Napriklad mam promennou:
> unsigned int Sestnactibit; 
> 
> a chtel bych na totez taky koukat jako na:
> typedef struct HLverze {
>    unsigned char H;
>    unsigned char L;
> } HLverze;
> 
> HLverze SestnactHL;
> 
> V Pascalu se blahe pameti takove triky daly delat pomoci klicoveho slovicka
> "absolute" ale v Cecku nemuzu prijit na to, jak to udelat.
> 
> Hlavickove soubory od Microchipu jsou presne tohohle plne, jenze tam
> pouzivaji __attribute__ __sfr__, ktery to usadi na predem danou pevnou adresu
> SFR registu (ta je myslim ve scriptu linkeru .gld nebo v prislusnem inc
> souboru. (Namatkou vybiram priklad z p30f3012.h):
> 
> /* MODCON: Modulo Addressing Control Register */
> extern volatile unsigned int MODCON __attribute__((__sfr__));
> typedef struct tagMODCONBITS {
>         unsigned XWM    :4;     /* X-RAGU/X-WAGU modulo addressing register
> select  */
>         unsigned YWM    :4;     /* Y-RAGU modulo addressing register select
> */
>         unsigned BWM    :4;     /* Bit-reversed addressing register select
> */
>         unsigned        :2;
>         unsigned YMODEN :1;     /* Y-RAGU modulo addressing enable
> */
>         unsigned XMODEN :1;     /* X-RAGU/X-WAGU modulo addressing enable
> */
> } MODCONBITS;
> extern volatile MODCONBITS MODCONbits __attribute__((__sfr__));
> 
> 
> Predem diky za radu, jak tuhle zrejme trivialitu v Cecku vyresit.
> 
> Jakub Serych
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list