DIV32 – PBP Türkçe

DIV32 Number

PBP’nin çarpma (*) fonksiyonu, 16 bitlik iki sayıyı çarpıp 32 bitlik sonuç elde edebilen bir fonksiyondur. Fakat, derleyici değişken boyutu olarak maksimum 16 bit desteklediğinden çarpım sonucuna ulaşmak iki adımda mümkün olmaktadır. c=b*a ifadesi çarpımın ikilik tabanda yazıldığındaki en düşük 16 bitini verirken, d=b**a ise ikilik tabanda yazıldığındaki en yüksek 16 biti vermektedir. Bir seferde 32 bitlik sonuca ulaşmanın bir yolu yoktur.

Genellikle ortalama değer almak gibi işlemler için 32 bitlik sonucun, 16 bitlik bir değere bölünmesi gerekmektedir. Bu işlemi yapabilmek için PBP üreticileri DIV32 adında yeni bir fonksiyon eklemiştir. DIV32 fonksiyonu maksimum 31 bitlik işaretsiz sayıları (“31-bit unsigned integer”) (maksimum 2147483647) 15 bitlik işaretsiz sayılara (“15-bit unsigned integer”) (maksimum 32767) bölebilmektedir. Bu limit, çoğu durumlarda yeterlidir.

Derleyici maksimum 16 bitlik değişkenlere izin verdiğinden dolayı, DIV32 fonksiyonu, çarpma işleminin yapıldığını ve derleyici tarafından yaratılan dahili değişkenlerde bu sonucu tutulduğunu var sayar. DIV32 fonksiyonu ile çarpma işlemi arasında herhangi bir işlem yapılmamalıdır. Aksi takdirde sistem değişkenleri değişebilir ve var olan sonucun üzerine başka veriler yazılabilir. Bu yüzden eğer ON INTERRUPT komutu ile kesme kullanılıyorsa, çarpma işleminden önce pasif hale getirilmeli ve DIV32 komutundan sonra tekrar aktif hale getirilmelidir. Eğer ON INTERRUPT komutu ile kesme kullanımı yoksa, DISABLE komutunun da kulanılmasına gerek yoktur. Assembly komutları ile belirlenen kesmelerin, derleyici tarafından üretilen dahili değişkenlere bir etkisinin olmamasından dolayı, bu tür kesmelerin DIV32 fonksiyonunun çalışmasını engelleyen bir etkisi yoktur.

Örnek

a VAR WORD
b VAR WORD
c VAR WORD
dummy VAR WORD
b = 500
c = 1000
DISABLE ‘ ON INTERRUPT kullanılıyor ise kullanılmaldır.
dummy = b * c ‘ * veya ** operatörü kullanılmalıdır.
a = DIV32 100
ENABLE ‘ ON INTERRUPT kullanılıyor ise kullanılmaldır.

Bu kod, b değişkenini 500′e, c değişkenin 1000′e atamaktadır. Bu değerler çarpıldığında sonuç 500000 olmaktadır. Bu değer 16-bit uzunluğundaki (“word”) değişkenin alabileceği maksimum değeri (65535) aşmaktadır. dummy bu yüzden sonucun ikilik tabanda yazıldığındaki en düşük 16-bitinin değerini taşımaktadır. Hiç bir durumda sonuç değişkeni DIV32 fonksiyonu tarafından kullanılmaz. DIV32 dahili değişkeni kullanmaktadır. Bu örnekte çarpım sonucu 100′e bölünmekte ve çıkan 5000 sonucu a değişkeninde depolanmaktadır.

Tüm fonksiyonların listesine buradan bakabilirsiniz.

Bu yazı, “İzoelektronik – Atölye” grubu tarafından, 90alper90 ve Hazar kullanıcı adlı grup üyelerinin ortak, aktif çalışması ile hazırlanmıştır.



Bağlantılı Yazılar

Yorum yapılmamış. Yapılmış

Yazıyı paylaşın. | Yazı ile ilgili sorun bildirin.

Yorum Yapın ya da Soru Sorun

Yorum yapabilmeniz ya da soru sorabilmeniz için giriş yapmanız gerekmektedir.
Hoşgeldiniz, Ziyaretçi.Lütfen giriş yapın veya kayıt olun.
E-posta adresinize aktivasyon iletisi gelmediyse lütfen buraya tıklayın.

Arama Yap
Üye Alanı
 
 
Kayıt Ol || Aktivasyon Kodu İste
Teknik Yardım
5 tane konu henüz çözüme ulaşmamış. Belki siz yardımıcı olabilirsiniz ya da sorunlarınızı çözmenize başkaları yardım edebilir. Teknik Yardım bölümüne buradan ulaşabilirsiniz.
Destek İçin
İzoelektronik Facebook Sayfası
İzoelektronik'e Facebook sayfamıza katılarak destek olabilir, eklenecek yeni yazıları ve gelişmeleri Facebook üzerinden de takip edebilirsiniz.
Güncel Kalın

Eklenen Yazılar E-posta Adresinize Gönderilsin

Bizi RSS ile de takip edebilirsiniz.

Translate
Son Yorumlar
  • 90alper90: Merhaba Ozan Bey, Ölçümleri aldıktan sonra aynı anda göstermekte bir sıkıntı yok. Önemli olan 3 ölçümü de alabilmek. Bir önceki...
  • ozigeldi: alper teşekkür ederim bu arada ben ozan memnun oldum ben bu 3 ölçümü aynı lcd ekranda gösterebilimiyim pıc’e yeni başladım ve bu...
  • botan: meraba malzemeleri tedarik ettim motor olarak step motor aldım sizin yüklediğiniz programın aynısını yüklesem sorun yaşarmıyım acaba, yeni...
  • kuvvetkmc: Şöyle söyleyim; Anakart üzerinde ki; R1-R2-R3-R4-R4-R5-R6-R7-R8-R9- R10-R11-R12-R13-R14-R15-R16-R1 7-R18-R19 C1-C2-C3-C4 Q1;...
  • İzoelektronik: @kuvvetkmc Sorun çıkaran dirençleri daha net olarak belirtebilirseniz daha kolay yardımcı olunabilir. @botan Belirttiğiniz devreler...
drupal statistics module