merhaba,
aşağıdaki kodlarda "a" değeri 80 ve ben şunu yapmak istiyorum MB80.5 adresini okumak istiyorum. "a" değerim sürekli değişiyor bu nedenle MB80 i elde edebiliyorum ama MB80.5, MB80.4 ü nasıl elde edecem. yardımcı olursanız sevinirim...
L "a"
LAR1
L MB [AR1,P#0.0]
Konu başlıgını lütfen forum kurallarına uygun yazınız.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
L MD 0 // a byte değerin a=80 ise
SLD 3 // 3 bit sola kaydırıp Byte adresine geçiyoruz
L 5 // a'ıncı byetın n.inci bit değeri (a.n) yani 80.5
+D // bit değerine geçiş için matematiksel işlem
T MD 10 // İndirekt adresleme için bir değişken
A M [MD 10] // MD10 içinde= M[a.n] bit adresi var
A I 0.0 // Bu kısmı test etmek için kullandım
= Q 0.0 //Kolay gelsin...
L MD 0 // a byte değerin a=80 ise
SLD 3 // 3 bit sola kaydırıp Byte adresine geçiyoruz
L 5 // a'ıncı byetın n.inci bit değeri (a.n) yani 80.5
+D // bit değerine geçiş için matematiksel işlem
T MD 10 // İndirekt adresleme için bir değişken
A M [MD 10] // MD10 içinde= M[a.n] adresi var
A I 0.0 // Bu kısmı test etmek için kullandım
= Q 0.0 //Kolay gelsin...
Merhaba, cevap için teşekkür ederim. ama anlamadığım bazı noktalar var
şimdi ben şunu anlıyorum;
MD0 a 80 değerini attım 0000 0000 0101 0000
SLD3 0000 0010 1000 0000
bu noktadan sonra 5 ile toplamak nasıl 80.5 ifadesini gösterir. Lütfen biraz daha açıklarsan çok sevinirim
Yönetici Notu: Paylaşılan fotoğraf, fotoğraf paylaşım sitesinden silindiği için kaldırılmıştır.
32 bit pointer yapısı yukarıdaki gibidir 3 hane sola kaydırıp, byte adresini oluşturdum, son 3 bit; bit adresini işaret ediyor bu teknikte.
Son bit adresini oluşturmak için 0=<n<=7 arasında sayıyla toplayabilirsin aksi halde bayte alanına girersen dolaylı adresleme bozulur.
SET
SAVE
L 80
T MD 0
SLD 3
LAR1
A M [AR1,P#0.5]
BEU
ya da
Kod:
SET
SAVE
L P#M 80.5
LAR1
A [AR1,P#0.0]
BEU
En üstteki kodta p# den sonraki rakamı 0.0-0.7 arasında değiştirerek istediğin adrese erişebilirsin. Ayrıca MB80.5 diye bir adres olmaz.Buradaki B byte olarak adreslenebileceğini gösterir.