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