PIC islemcide bit manuplasyonu

Başlatan z, 28 Ekim 2013, 17:53:54

z

Yanlis hatirlamiyorsam PIC islemcide 8 bitlik bir degiskenin bitlerine maskeleme vs yapmadan dogrudan tek komutla ulasabiliyorduk.
Bu ozellik tum ram alani icin mi gecerliydi yoksa belli bir bolge isin mi gecerliydi tam hatirlamiyorum.

"Hitech"de bu tip islemler icin nasil bir tanimlama yapiyoruz?

Mesela Flag diye bir degisken tanimlayacagim. Bu degiskenin n. biti 1 mi yoksa 0 mi diye hizli sorgulama yapmak istiyorum.

Nasil? Illa structer mu tanimlamam gerekiyor? Eger hatirladigim gibi tum ram icin gecerli değil sadece belli bir bolge isin bit islemleri gecerli ise degiskenimin bu bolgede olmasini nasil garanti edecegim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Erol YILMAZ

#define DOUT_TD6         RB0

bunlar ilgili mcu nun h file inda tanımlı

justice_for_all

#2
union ile yapabilirsiniz hocam.
typedef union _def
{
         unsigned char degisken1;

         struct
         {
              unsigned bit0 :1;
              unsigned bit1 :1;
              .
              .
              .
              unsigned bit7 :1;
          }bits;
}def;
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

berat23

bit field haricinde bir yöntem yok galiba.

gkeskin

Hocam maskelemeden kastın altta yazacağım şey mi bilmiyorum ama bunu bit işlemi olan & ile yapabilirsiniz sanırım.

Örneğin "flag" dediğin değişkenin değeri 11101001 olsun. Burada beşinci biti kontrol etmek istediğimizi varsayalım. "flag & 00100000" işleminin sonucu istenileni verecektir.

Bit işlemi:

11101001
00100000

00100000 (Sıfırdan farklı bir değer) olacaktır.