PBP 'da Dizi değişkenlerde bit bazlı işlem yapma.

Başlatan Mucit23, 02 Aralık 2011, 10:25:55

Mucit23

PBP de dizi değişkenlerde bit bazlı işlem yapamıyorum. Örnek vereyim.

X VAR BYTE[9]

Yukarıdaki gibi X adında 10 dizilik bir değişkenimiz olsun
Ben  değişkenlerde diyelim 5. sinin 6. bitine bir isim tanımlamak istiyorum. Veya 6. bitin durumunu değiştirmek istiyorum. O halde 6. bite isim tanımlamak için aşağıdaki gibi yapmam gerekmiyormu.

C VAR X[4].6
veya bitin konumunu değiştirmek istersem
X[4].6=1
Değişken dizi değişkeni yerine tek bir değişken olsa sorun olmuyor ama dizi olunca PBP müsade etmiyor. Acaba Sorunu çözmek için değişkenleri teker tekermi tanımlayayım yoksa bilmediğim başka bir çözüm yolu varmı bu işin.

Birde arkadaşlar Timer0 kesmesi hakkında bazı öğrenmek istediklerim var.
Multiplex sistemlerde tarama işlemini hep timer0 kesmesiyle yaptım. Multiplex sistemlerde en uygun tarama frekansı nedir acaba. Her bilgi displayde kaç ms durması gerekiyor.

Andromeda

Bir ara uğraşmıştım pbp ile
pbp izin vermiyor ise
dizinin ilgili elemanını başka bir değişkene atayıp, o değişken üzerinde işlem yapılması gerekir
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

Mucit23


ete

Olmuyor deme. Bir çok kere uyguladığım bir yöntemdir.
TEMP=X[4]
Temp.0[6]=1
X[4]=TEMP   şeklinde olur.

Yer gelmişken hemen açıklayayım. Basic de bit bazında indexleme yapmak için bir nevi Bit0 referans alınması gerekiyor.
Aşağıdaki komutlar yanlış kullanımı gösteriyor.
FOR X=0 to 7
  SAYI.X=1
Next

Ama aşağıdaki komut dizisi doğru çalışır.
FOR X=0 to 7
  SAYI.0[X]=1
Next

ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Mucit23

Hocam benim yazım şeklinde hata varmış. Ben ilk önce dizi sayısını belirtip sonra bit numarasını belirtiyordum.
C VAR X[4].6 Ben bu şekilde denediğim için olmuyor dedim. @elek 'in demek istediğini yanlış anlamışım aslında.Dediğiniz şekilde oluyor. Aslında benim istediğim değişkenin herhangi bir bitine bir başka bir isim atamak.
    HAS      VAR BYTE[8]
    DP        VAR HAS.7
Bu şekilde yapınca derleyebiliyorum. Anlamadığım nokta ama DP değişkeni HAS değişkenin 7. dizisinemi atanıyor. Yoksa 0. dizinin 7. bitinemi atanıyor. Benim yapmak istediğim şey DP değerine 1 değerini verirsem programda Has değişkenin x inci dizisinin 7. biti 1 olsun gibi. Aslında başka bir yolla çözdüm ama yinede öğrenmek isterim.

ete

O komut sistemi istediğin gibi çalışmaz maalesef.
    HAS      VAR BYTE[8]
    DP        VAR HAS.7
şeklinde bir tanımlama yapıp, DP=1 dersen aynen;
HAS[0].7=1 yapar ve bu durumda HAS[0] =128  değerini alır. ANlayacağın o dizi içindeki ilk değişkenin 7. bitini 1 yapıyor o komut.

Sen yine benim dediğim şekilde yapmaya çalış.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Mucit23