Bu kodun calismayacagi çok bariz ortada.
@silvestir kodu denemeden yorum yapıyorsunuz. Ama uygulamanın denenerek gönderildiğini hiç düşünmüyorsunuz.
yeni baslayanlarin yaptığı en büyük düşünsel hata işlemcinin insan gibi yavaş davrandığını ve bazen durduğunu düşünmeleridir.
Herhalde µ denetleyiciyi kast ediyorsunuz.
O zaman biraz teknik konuşalım.
Bu SR diğer bir ifadeyle sıfırla bir yap türünde bir mandal ("latch") Bazılarının zannettiği gibi bir madala saat sinyali eklemek onu iki durumlu ("flip flop") yapmaz.
Konunun teknik detayları
burada gayet güzel izah edilmiş.
Mandal ismini de herhalde sırf bu en sondaki ve değil kapılarının görünümü mandala benzediği için vermişler.
Burada sıfırlayı (R) kaldırıp, bir yap (S) yerine tek bir veri girişi (D) olacak şekilde bir düzenleme yapar, R girişine de bu işaretin tersini verirsem D türü bir mandal elde ederim.
Bu hala bazılarının port diye isimlendirdiği giriş çıkış kapıları için temel bir yapıtaşı oldu mu? Hayır olmadı.
Ama iki tane D türü mandal kullanır ve saat sinyalini ikinciye tersleyerek gönderirsem D türü saat sinyalinin kenarıyla tetiklenen iki durumlu ("flip flop") elde etmiş olurum.
Bu iki durumlulardan 8 tane kullanırsam 8 bitlik bir yazmaç elde etmiş olurum. Bunlar dış dünya ile iletişim kuracaksa üç durumlu ("tristate") vs kullanılarak bağlanıyor.
Böylece bazılarının port diye isimlendirdiği giriş çıkış kapısı elde etmiş oluyoruz. Örneğin bu resim PIC16F18875'in kılavuzu 12. bölümde giriş çıkış kapılarının anlatıldığı bölümden alındı.
Buradaki üçgen işaretin zamana göre değişen bir sinyal (saat sinyali) olduğunu gösteriyor.
@silvestir görüldüğü gibi burada zaten bir zamanlayıcı var. Böyle basit bir uygulama için ek bir zamanlayıcıya ihtiyaç olduğunu düşünmüyorum.
Eğer o zamanlayıcıları anahtar sıçraması için kullanıyorsanız, aslında bunun
donanımsal olarak da çözülebileceğini bilmeniz gerekir.
Yukarıda paylaştığım kod örneğine dönecek olursak daha da iyileştirmeler yapılabilir.
Ama bu kısmı soruyu soran öğrenci arkadaşlara bırakıyorum.
Örneğin bir işlem devam ederken tekrar düğmeye basılırsa ilk işlemi bırakıp, ikinci işleme geçmesi isteniyorsa kesme kullanmak düşünülebilir.
Öğrenci arkadaşlara sorunun çözümünü yapıp göndermektense, çözüm yolu göstermenin daha faydalı olduğunu düşünüyorum.