avatar_Mucit23

Bit Tabanlı işlemler

Başlatan Mucit23, 22 Ağustos 2012, 12:39:46

Mucit23

Başlık inşallah konuya uygun olmuştur.
Bi konuda sıkıntım var. Kafam durdu resmen. Değerli Ete hocamdan ve konuya katılmak isteyen diğer abilerimden çözüm önerisi beklemekteyim.

X adında Biİr değişken var içeriği 0 ile 7 arasında değişiyor. Ben bu değişkenin değerine göre başka bir y değişkeninin 0 ile 7 bitlerini set edip veya temizlemek istiyorum

Örneğin X değişkeni 1 gelirse Ben y Değişkenin 1. bitini duruma göre 1 veya 0 yapmak istiyorum. Veya X değişkeni 7 gelirse  Y değişkeninin 7. bitini 1 yapmak istiyorum.
Bunu kısa yoldan yapmam lazım. İf elselerle yapmak istemiyorum çünkü hızlı çalışması lazım. Önerisi olan varmı?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

Basicde bu iş için hazır komut varmış DCD diye. İstenilen biti1 yapıyor
aynı işlemin tersini yapacak komut yok yanlız. Elle yapmam lazım...
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

efor

yapılan işlem duruma göre deger taşıma işlemi.  ve hızlı olmasını istiyorsun. assembly komutlarıyla bu işlemleri yapabilirsin aslında !

greatgonzo

Bir ara bende benzer bir şeyler yapmıştım. Kullanma kılavuzunda şöyle bir şeyler var.

B0 = B0 & %00000001 ' Isolate bit 0 of B0
B0 = B0 | %00000001 ' Set bit 0 of B0
B0 = B0 ^ %00000001 ' Reverse state of bit 0 of B0

buradan bir şeyler çıkabilir.

Ayrıca y.bit0[7]=0 gibi bir uygulama vardı sanırım. Byte değişkenin bitlerini teker teker çağırabiliyorduk. O tarz bir işlemde işini görebilir kanaatindeyim.

İyi çalışmalar.....

Mucit23

Aslında yapmaktan vazgeçtim.

Yapmaya calistigim şey basicde 3310 lcd  sinde ekrana nokta koyacak, çizgi çizecek, veya çember çizen fonksiyonlar tasarlamaktı. Bu işlemlerin tamamının temeli ekrana nokta koymak. Ekranın  istediğim noktasına nokta koyabiliyorum ama koyarken aynı sütun üzerinde varsa başka noktalari siliyorum. Çözümü çok basit ama bu lcd de imkansız. Sebebi ise 3310 lcd sinde okuma yapilamamasi. Çünkü lcd den okuma yapıp okunan datayi yeni data ile or işlemine tabi tutmayı gerektiriyor.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Bit işlemlerinde sıkça kullanılan komutlar ve açıklamaları şöyledir.
NCD = Bir sayı içinde en yüksek bit değerini verir. Örnek,    SAYI= %01001100  olsun A=NCD SAYI derseniz, A=7 değerini verir.
NCD byte değişkenlerinde 1-8 arasında , word değişkenlerinde ise 1-16 arasında değer alır.

DCD= Bir değişkenin ilgili bitini set etmek için kullanılır. SAYI=DCD 5  denildiğinde SAYI=%00100000 olur.

3310 ekranında çalışma yapabilmen için en iyisi ekran için bir değişken kullanman gerekir. Böylece her seferinde değişken değerini saklar ve gerekli OR-AND yada XOR işlemlerini yaptıktan sonra değişkeni ekrana yerleştirirsin. Böylece ayrıca ekrandan bir şey okumadan bunu halledebilirsin.

Ete

Mucit23

Alıntı yapılan: ete - 22 Ağustos 2012, 17:16:52

...............3310 ekranında çalışma yapabilmen için en iyisi ekran için bir değişken kullanman gerekir. Böylece her seferinde değişken değerini saklar ve gerekli OR-AND yada XOR işlemlerini yaptıktan sonra değişkeni ekrana yerleştirirsin. Böylece ayrıca ekrandan bir şey okumadan bunu halledebilirsin.

Hocam dediğiniz şekilde yapmak pek akıl karı değil. En son gönderilen datayıda ramde tutumanın bir manası yok. Ekranın Farklı noktalarına yazma yaptıktan sonra dönüp rastgele ekranın bir noktasına bir işaret koymak için Ekrandaki bilgilerin aynısı ramde de tutmak gerekir.

Düşünün ekranda bir resim var Siz ekranın 2. satır 1. sütününa bir nokta koyacaksınız. O halde göndermeniz gereken data 00000010 dir. Ekran daki o bölge boş ise istediğimiz olur ama ekrandaki o bölgedeki bilgi diyelim 11110001 ise ekrandaki o bölgenin tamamı silinir ve 00000010 bilgisi basılır. Bunu önlemek için o adresi okuyup iki bilgiyi toplamak gerekir. Yani or işlemine tabi tutulmalı. Bunu düşününce olmayacağına karar verdim.

İnternette bulduğum 3310 lcd yazma birazcık iyileştirdim. Yazı yazmada, değişken değeri göstermede ve resim basmada problem kalmadı. Dedim elimi vurmuşken birde bazı trigonometrik şekiller için fonksiyonlar hazırlayayım. Örneğin Çember çizmek, Kare veya dikdörtgen çizmek, Çizgi çizmek,  Nokta koymak veya bar oluşturma fonksiyonları hazırlayayım dedim. Bunları yapabilmek için arka plandaki görüntülerden bağımsız bir şekilde ekrana istenilen kordinata nokta koyayım dedim. Çoğunu başardım ama işte en son dediğim problemlerle karşılaştım.

Başka önerisi olan varsa söylesin yapayım. 
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Powered by EzPortal