Cecko - zacatecnicka
Ladislav Vaiz
spam@nagano.cz
Pátek Leden 4 22:51:54 CET 2008
A nebo použít ukazatele char* a unsigned short*. Chcete-li ukazovat na
konkrétní adresu jako u pascalského absolute (do SFR), tak je to vhodné.
Existují i proprietární rozšíření, například:
sdcc:
sfr at 0x80 P0;
sbit at 0x80 P0_0;
keil:
sfr P0 = 0x80;
sbit P0_0 = 0x80;
Láďa
Pavel Troller napsal(a):
> 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
>>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20080104/41875482/attachment.htm
Další informace o konferenci Hw-list