Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: WrtM - 17 Nisan 2015, 20:54:38

Başlık: struct içindeki değişken
Gönderen: WrtM - 17 Nisan 2015, 20:54:38
Merhaba arkadaşlar struct içindeki değişkenlerin karşısında ":" işareti var ne anlama geliyor ? ne için kullanılıyor ? ayrıca union içinde neden struct kullanmışlar?



union fsreg {                 
  struct b  {
    unsigned int q0:1;
    unsigned int q1:1;
    unsigned int q2:1;
    unsigned int q3:1;
    unsigned int q4:1;
    unsigned int q5:1;
    unsigned int q6:1;
    unsigned int q7:1;
  } b;
  unsigned int v;
} fsr;

 
Başlık: Ynt: struct içindeki değişken
Gönderen: mehmet - 18 Nisan 2015, 10:22:12
Eğer yanlış bilmiyorsam  bu tanımlama; bir
byte içerisindeki bitlerin tanımlanmasını sağlıyor.
qX değişkeninin bir bitlik alan kullandığını belirtiyor.
Başlık: Ynt: struct içindeki değişken
Gönderen: WrtM - 18 Nisan 2015, 12:27:40
Büyük ihtimalle dediğiniz gibi ancak bu seferde değişkeni neden 1 bitlik olarak tanımlamamışlar sorusu aklıma geliyor.

bu arada örnek kod parçasını keil'in flash entegreler için yazdığı driverdan aldım.
Başlık: Ynt: struct içindeki değişken
Gönderen: mehmet - 18 Nisan 2015, 15:31:32
Genel olarak veri hücre yapısı bir byte olarak
düşünülür. Buna göre derleyiciler de bit değişken
pek tanımlanmazlar.
Değişkenlerin en az byte olduğunu varsaydığımızda
böyle bir tanımlamaya ihtiyacımız olmaktadır.
unsigned char olarak da tanımlanabilir. Zira
unsigned int 16 bit alan kaplar. Ram alanından
tasarruf edilebilir.
Başlık: Ynt: struct içindeki değişken
Gönderen: XX_CİHAN_XX - 18 Nisan 2015, 18:53:51
Bit bazında çalışma yapmak için kullanılan bir yöntem.
:1 yerine :6 da diyebilirsin ilk altı bite bu şekilde ulaşmış olursun.
Başlık: Ynt: struct içindeki değişken
Gönderen: baran123 - 18 Nisan 2015, 19:48:43
Her bir bite erişmek için yapılmış yani dimi ?
Başlık: Ynt: struct içindeki değişken
Gönderen: mehmet - 18 Nisan 2015, 20:14:26
Evet. Enum olarak da tanımlanabilir. Ancak enum
tek bitler halinde işlem yapılabilir. Birden fazla bite
aynı anda erişmek/işlem yapmak için qX:bitSayisi
şeklinde kullanmak mümkün. q0:3 dersek;
q0 değişkeni 0b000 - 0b111 arasında değer alabilir...

Yoğurt/Yiğit ilişkisi...