[Linkleri görebilmek için üye olun veya giriş yapın.] Yaşadığımız semtte Halı sahalarda veya spor salonlarında rahatlıkla kullanılabilecek bir skorboard devresi [Linkleri görebilmek için üye olun veya giriş yapın.]
Devre yazılımda istenilen süre sonunda sesli olarak otomatik ikaz
vermektedir.Ayrıca üzerinde ki manuel butonlar sayesinde süreyi
ayarlamak ve istenilen süreden devam ettirmek çok kolay..Yapmak isteyen
arkadaşlar olursa devre uygulamaya koyulmuş ve sorunsuz
çalışmaktadır.Devre simulasyon durumundadır.Bilindiği üzere DC besleme
devresi ve displaylerin şemasını vermeye gerek duymadım.. Sistem ticari amaçlı olduğu için .pbp ve.asm dosyalarını
veremiyorum.Fakat uygulamak isteyen arkadaşlar için hiçbir demo durum
söz konusu değildir.Tek problem,dakika sayım yapmaz durumda iken
“yukarı” butonuna basıldığında ekranda “nhn” yazısı görülmektedir.Sistem
uygulamada sorunsuz çalışmaktadır.Süre konusunda sıkıntı yaşayan
arkadaşlar olursa mail yoluyla iletişime geçebilirler
[Linkleri görebilmek için üye olun veya giriş yapın.] Sistemin Yazılımı interrupt(kesme) yöntemiyle oluşturulmuştur.Öncelikle
basit bir saat devresinin yalımını düşünün..Saniye-dakika ve saat
değişkenlerini düşünerek işleme başlayalım.Her bir interrupt ta saniye
değişkenine 1 ekleyerek artıralım.Normal dakika sistemine göre 59
olduğunda tekrar sıfırlayalım;
“saniye=saniye+1″ bu algoritma ile saniyeyi 1 artırabiliriz.
“IF saniye=>59 THEN saniye=0 : dakika=dakika+1
saniye 59 olmuş ise tekrar sıfırlansın ve dakika 1 artırılsın.
Bu kodlar aslında skorboard için yeterlidir.Yani saat değişkenin
hesaplanmasına gerek yok.Çünkü Skorboardlarda saat ile değil dakika ile
gösterim yapılmaktadır.Şimdi basit bir örnekle zaman saydıralım.
ON INTERRUO GOTO KESME ‘interrupt olduğunda kesme adlı ‘etikete git
OPTION_REG=$55 ‘Pull up dirençleri İPTAL Bölme oranı 1/64.
INTCON=$a0 ‘Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0 ‘TMR0 kesmesi iptal
CMCON=7′16F628 de komparatör pinleri iptal hepsi giriş çıkış
kesme:
saniye=saniye+1
if saniye=>59 then saniye=0
dakika=dakika+1
if dakika=>45 then dakika=0
yukarıda yazılan kodlar 45:00 dakikalık süre için geçerlidir. dakikanın
değeri ne olursa o sürenin sonuna kadar sayma işlemi devam eder.
Gelelim değerleri ekranda gösterme işlemine.Burada biraz kafa
karıştırıcı açıklamalar olabilir.Fakat bir kaç denemeden sonra
kolaylaşmaktadır.Bizim kullandığımız entegre 74595 di.Yani bir clock bir
data bir de yazma pinlerimiz var.Şimdi aşağıdaki koda bakarak
açıklayalım
SYMBOL DTA=PORTB.0
SYMBOL CLK=PORTB.1
SHIFTOUT DTA,CLK,1,[saniye]
HIGH PORTB.2:PAUSEUS 2:LOW PORTB.2
burada dta,clk pinlerinden “saniye” verisi seri olarak gönderilir.Bir
alt satırdaki high portb.2 ile başlayan bölüm ise entegrenin aldığı
bilgileri yazmasını sağlamaktadır.Yani veriyi gönderiyoruz “yazma”
dediğimiz 74595′in ST_CP pinini önce lojik 1 sonra lojik 0 yapıp
bitiriyoruz.Eğer köşeli parantez içindeki saniye değişkenin değerini
okumak istiyorsak da LOOKUP komutundan değer almamız gerekmektedir.Yani;
Gosub al:x=saniye
SHIFTOUT DTA,CLK,1,[sayi]
al:LOOKUP x,[63,6,91,79,102,109,125,7,127,111,99,57],SAYI :RETURN