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.
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
Hex Dosyası İçin TIKLAYIN
Kaynak : http://www.nhnled.com
2 yorum:
mod butonu ne işe yarıyor acaba??
kısaca bir çalışma sistemini ve nasıl süre ayarının yapıldığını açıklayabilir misiniz?
Yorum Gönder