komma åt specifika bitar i Hi-tech C

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Christian
Inlägg: 86
Blev medlem: 3 november 2003, 22:54:49

komma åt specifika bitar i Hi-tech C

Inlägg av Christian »

Hej!
Jag vill komma åt specifika bitar i Hi-tech C som nedan:

char variabel;
variabel.2 = variabel.0;

Någon som vet syntaxen för detta i Hi-techs kompilator?

/ Christian
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: komma åt specifika bitar i Hi-tech C

Inlägg av blueint »

Exempel 0)

tmp = ((variabel>>0) & 0x00);

variabel &= ~(1<<2);
variabel |= (tmp<<2);

Exempel 1)

struct {
bit7: 1;
bit6: 1;
bit5: 1;
bit4: 1;
bit3: 1;
bit2: 1;
bit1: 1;
bit0: 1;
} bits;

struct bits *bitscope;
bitsscope = &variabel;
bitscope.bit2 = bitscope.bit0;

Fritt från minnet..
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: komma åt specifika bitar i Hi-tech C

Inlägg av bearing »

I standard C gör man t.ex. såhär:

Kod: Markera allt

if ((variabel & (1<<0)) != 0) //check if bit 0 is set
  variabel |= 1<<2; //set bit 2
else
  variabel &= ~(1<<2); //clear bit 2
Vet ej ifall Hi-tech C hanterar bitvariabler.
Sonar
Inlägg: 125
Blev medlem: 17 december 2006, 22:07:38
Ort: Luleå

Re: komma åt specifika bitar i Hi-tech C

Inlägg av Sonar »

i mikroC skriver man variabel.F0 eller .B0 beroende på , kan det vara nåt liknande?
Användarvisningsbild
Icecap
Inlägg: 26645
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: komma åt specifika bitar i Hi-tech C

Inlägg av Icecap »

Standard i C är just som blueint skriver. Om inte Hitec klarar det är det inget C.
bos
Inlägg: 2311
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Re: komma åt specifika bitar i Hi-tech C

Inlägg av bos »

Christian skrev:Någon som vet syntaxen för detta i Hi-techs kompilator?
Finns inget inbyggt, men du kan använda följande makron i vilken C-kompilator du vill:

Kod: Markera allt

#define bit_set(var,bitno) ((var) |= 1 << (bitno))
#define bit_clr(var,bitno) ((var) &= ~(1 << (bitno)))
Skriv svar