Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

Yetersiz hafıza

Başlatan cabbar27, 11 Mart 2011, 17:53:23

cabbar27

İyi günler Tüm kardeşlerime kolay gelsin
yapmış olduğum programımda
IF A=1 THEN
K=1
ENDIF
IF A=2 THEN
K=2
ENDIF
IF A=4 THEN
K=3
ENDIF
IF A=8 THEN
K=4
ENDIF
IF A=16 THEN
K=5
ENDIF
IF A=32 THEN
K=6
ENDIF
IF A=64 THEN
K=7
ENDIF
IF A=128 THEN
K=8
ENDIF
böyle bir varyasyonum var ve A değişkeni gibi 10 tane daha değişkenim var
yani ben aynı satırı 10 defa program içerisinde K byte nın değerini belirlemek amaçlı kullanıyorum
bunu yazmanın daha kısa yolu yokmu
her satır 80 word luk yer kaplıyor e haliyle 2kb hafızalı bir 16f628 pic in yarısı doldu bile :D
bunu yerden tasarruf amaçlı nasıl sadeleştirebilirim. :D
Şimdiden teşekkürler.

Tagli

Eğer giren değerler 2'nin kuvvetlerinden ibaretse şu şekilde yapabilirsin: Giriş değerini bir byte'lık bir değişkene at. Daha sonra 0. bitin 1 olup olmadığını kontrol et. Değilse, byte'ı bir kez sağa kaydır ve 1'den başlatacağın bir sayacı da her kaydırmada 1 arttır, sonra 0. biti yine kontrol et. Sonunda 0. bitte 1 okuduğunda, kaç adet kaydırma yapmış olduğun sana fikir verecektir.
Gökçe Tağlıoğlu

aslan_korhan

Yani Tagli arkadaşımızın demek istediği : Matematiksel bir formül ile yapman gerekir bu işi.
Atıyorum :
K = A / 2       gibi...
Dünyada 10 çeşit insan vardır. Binary bilen ve bilmeyenler.

ete

Pic Basic Pro da bu işin direk komutu mevcut.
K=NCD A  şeklinde kullanılır Komutun amacı A sayısı içindeki ilk HIGH bitinin konumunu vermektir.

A=%00000001 ise  K=1 olur
A=%00000010 ise K=2 olur
A=4 ise K=3 olur
A=8 ise K=4 olur
...
A=128 ise K=8 olur

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

cabbar27

#4
Alıntı yapılan: ete - 11 Mart 2011, 22:28:48
Pic Basic Pro da bu işin direk komutu mevcut.
K=NCD A  şeklinde kullanılır Komutun amacı A sayısı içindeki ilk HIGH bitinin konumunu vermektir.

A=%00000001 ise  K=1 olur
A=%00000010 ise K=2 olur
A=4 ise K=3 olur
A=8 ise K=4 olur
...
A=128 ise K=8 olur

Ete

SAĞOLUN kardeşlerim ve ETE hocam NCD komutunu kullandım
k=ncd a yaptım normal döngüsünü yaptı çalıştı baktım diğer değişkenlerde yine takıldım
biraz kurcladım birazda şansın yardımıyla (salladım tuttu) formülü buldum :d
10 farklı ardışık değişkeni k sabitine atamak için
K=NCD A
K=NCD B+8
K=NCD C+16 ..... Vs
DİYE hallettim çok teşekkür ederim :D
for döngüsü içinde bu komutu 1 satır alta veya üste kaydırmam beni bayağı uğraştırdı.
PLC ye hiç benzemiyo bu pic :D