RE: pole bitového pole v C

Miroslav Draxal evik na volny.cz
Sobota Leden 12 20:07:15 CET 2013


"cíí brďo, to je složitý" 

 

*((_byt*)&byt).bit0 = 1 ;

Pomožte mi to prosím rozpitvat?

 

hodí chybu

podprogramy.c:151 warning: illegal conversion between pointer types

pointer to union S387 -> pointer to unsigned char

podprogramy.c:207: error: struct/union required

podprogramy.c:207: error: illegal conversion between types

int -> union S453

From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Jaroslav Buchta
Sent: Saturday, January 12, 2013 7:45 PM
To: HW-news
Subject: Re: pole bitového pole v C

 

imho jedine pres ukazatel: *((_byt*)&byt).bit0 = 1 kde uz neni mozna zadna
typova kontrola. (nezkousel jsem to, zavorkama si nejsem vubec jisty...)

Dne 12.1.2013 19:38, Miroslav Draxal napsal(a):

Ještě přihodím do fora otázečku. Mějme

Char byt;

 

a

 

    typedef union bytX

    {

               char value;

               unsigned bit0 : 1;

    }_byt;

 

Lze udělat

_bytX.value = byt;

 

Nelze přetypovat proměnou byt na _byt??? Ne hodnotu, ale přímo proměnnou.
Překladač mi použije dvě proměnné, mohl by používat původní. Po přetypování
proměnné asi takhle.

Byt.bit0 = 1;

Míra

 

From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Miroslav Draxal
Sent: Saturday, January 12, 2013 6:51 PM
To: 'HW-news'
Subject: RE: pole bitového pole v C

 

Když já pořádně neumím pic, a to mam jít do něčeho úplně neznámého? Nechte
mi je. Pracuji s mrňavým 10f200, středním 18f1320/30 a s velkým 18f4620. Nic
víc mi ke štěstí nechybí. Ono jde spíš si osvojit pořádně to C, přijít na
určité finty jak to napsat, vymyslet správné postupy atd. mě spíš přijde, že
je to víc o soft než hw. Jak říkám, píču v C, ale sám sebe přistihnu, jak na
to jdu ze strany ASM. Míra

 

From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Jaroslav Buchta
Sent: Saturday, January 12, 2013 6:41 PM
To: HW-news
Subject: Re: pole bitového pole v C

 

Ja stale nechapu, proc se nekdo drzi procesoru s tak mizernou vybavou. Chapu
u velkych serii, ze jde o kazdou korunu ale na bastleni tam je snad jedno
jestli tam vrazim PIC za 30 nebo ARM za 70 (pripadne konzervativne treba
ATMEGA32 za 40)... Ladici nastroje jsou za par stovek, soft zadarmo. Kdyz se
to programuje v C-cku, tak je to celkem stejne a tech par potrebnych
periferi se osaha za chvili (s pouzitim vzorovych zdrojaku to neni potreba
ani moc studovat pro standardni pouziti). 

Dne 12.1.2013 18:36, Miroslav Draxal napsal(a):

Ano, a porodníma bolestma jsem vyplodil něco hodně podobného, jenom  jsem
všude použil char, protože mam jenom 256 RAM. Na netu jsem kdysi zahlídnul
něco, co používalo nějakou fintu. Ale za boha si nevzpomenu kde to bylo.
Byli to dva řádky. Míra 

 

From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
Behalf Of Jan Waclawek
Sent: Saturday, January 12, 2013 3:45 PM
To: HW-news
Subject: Re: pole bitového pole v C

 

> je to vlastně pole char[3], chtěl bych napsat něco univerzálního, kde bych
> zadal ukazatel na počátek pole, jaký bit nastavit např.14.
>
> Nějak mě nenapadá žádný elegantní způsob. Ale zase, někde jsem to někde
> viděl v asm pro PIC. Míra

#include <stdint.h>
uint8_t bits[3]

void SetBit(uint8_t * bitfield, uint8_t idx, _Bool value) {
uint8_t mask;
  mask = 1 << (idx % 8);
  if (value) {
    bitfield[idx / 8] |= mask;
  } else {
    bitfield[idx / 8] &= (~mask) & 0xFF;
  }
}

_Bool GetBit(uint8_t * bitfield, uint8_t idx) {
  return (_Bool)(bitfield[idx / 8] & (1 << (idx % 8))
}

wek
wek
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list 



__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz



__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz




_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz



__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz


__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz



__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz


__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz

 



__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz





_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list




__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz



__________ Informace od ESET NOD32 Antivirus, verze databaze 7886 (20130112)
__________

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20130112/594462bc/attachment-0001.htm>


Další informace o konferenci Hw-list