Haberler:

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

Ana Menü

Port numaralandırması

Başlatan certy, 19 Ağustos 2013, 20:13:40

certy

Bazı programlarda örneğin PORTB=255, PORTB=254 gibi kısımlar görüyorum. Tam olarak bana açıklayacak biri var mı? Bir yerde çoklayıcı entegrelere veri göndermede gördüm ancak net olarak anlayamadım. Birde binary sayılar normal sayılara nasıl çevirilir?
TA1USS

[TR]ahmet

#1
ilk sorunu bilmiyorum ama ikili sayı sistemi çevirmeyi biliyorum örneğin (1101) 2 li sayı sistemindeki sayı olsun ilk önce sağdan başlayarak (sayı*2^basamak değeri[sıfırdan başlıyor])

bu sayı için (1*1)+(0*2)+(1*4)+(1 *8 )=1+0+4+8=13 oluyor inşallah anlatabilmişimdir

ete

Port dediğin şey işlemcinin dış ortam ile bağlantısını sağlayan 8 pinli ve sayısal olarak her bir pini bir bit olmak üzere 8 bitlik bir yazmaç (register) dir. Bu pinler giriş olarak ayarlanabileceği gibi çıkış olarakda ayarlanabilir. Çıkış olarak ayarlandığı zaman bütün pinleri bir seferde high yapabilmek için port=%11111111 şeklinde değer vermek gerekir. İşte bu %11111111 şeklinde yazılmış binary sayının desimal karşılığı 255 dir. Peki port=254 verilirse ne olur? Tabiiki port=%11111110 olur buradan şu anlaşılır portx.0 biti yada pini low diğerleri high olacak demektir. Kısaca hangi port pinini high yapmak istersen o bit "1" diğerleri "0" yapılır. Porta değer verme binary olarak yapılabileceği gibi desimal yada hex olarak da yapılabilir.
Port çoğullama entegreleri genellikle SPI denilen seri yöntemle çalışır. Data ve Clk eşliğinde bilgi yollanır ve çoğullayıcı denilen shift registerde yollanan bilgi paralel bilgiye çevrilerek pinlerinden çıkartılır. Bunun için shift register mantığını kavraman gerek.

Binary sayıların  desimale çevrilmesi için hane desimal değerleri toplanır. Tabiiki bitleri "1" olan hane değerleri toplanmalıdır. Hanelerin desimal değerleri bit7 den bit0 ra doğru şöyledir. 128-64-32-16-8-4-2-1
Şimdi bir örnekle açıklayalım. %10011011. Sayısının desimal karşılığını bulalım.
Sağdan sola doğru gidersek ilk iki bit 1 olduğu için 2+1=3,
Sonraki bir sıfır olduğu için onu atlıyoruz(4 hanesi) . Sonra 2 bit daha 1 olduğuna göre (3+16+8=27)
Sonra gelen 2 bit sıfır (32 ve 64 haneleri) onları atlıyoruz en sondaki 128 haneside 1 olduğuna göre sayımıza 128 ekliyoruz. O halde sayı=27+128=155 olarak bulunmuş olur.
Hepsi bu kadar.

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

certy

@ete

Mantığı biliyordum ama displayli bir devrede görünce kafam karıştı.

@
ahmet

Sen biraz karışık anlatmışsın. Anlamadım seninkini. :)

Yardımlarınız için teşekkürler.

TA1USS

[TR]ahmet

Alıntı yapılan: certy - 20 Ağustos 2013, 00:01:04
@
ahmet

Sen biraz karışık anlatmışsın. Anlamadım seninkini. :)

Yardımlarınız için teşekkürler.


normaldir :) sen hesap makinasını  kullan daha rahat olur hesap makinası-görünüm-programcıya tıkla oradan yap uğraşma çevirmekle geç cevap verdiğim için üzgünüm daha yeni gördüm :(