PortD ye Bağlı Ledleri Binary Olarak Artıran - Azaltan Uygulama

PortB deki 4 tane butondan herhangi birine basınca PortD de bağlı olan ledleri binary olarak artıran, PortC deki 4 tane butondan herhangi birine basınca PortD deki ledleri binary olarak azaltan uygulama

P16F877A ile Çarpma İşlemi

P16F877A/P16f877 entegresi ile assembly dilinde yazılmış çarpma işlemi; PortB deki 4 adet buton ile PortC deki 4 adet butondan lojik 1 olanlar alınıp çarpılarak ledler üzerinde binary olarak yazdıran uygulama

P16F877A İle Timer Kullanarak Led Yakma

P16f877A ile timer kullanılarak PortC deki ledleri 500ms de bir , PortD deki ledleri 1000ms de bir binary olarak artıran assembly dili ile yazılmış uygulama

P16F877A ile Basit Şekilde Buton ile Led Yakma

P16F877A ile assembly dili ile sade bir şekilde yazılmış buton ile led yakma uygulaması

P16F877A / PIC16F877A Mikroişlemci ile RB0 Kesmesi Örneği

P16F877A / PIC16F877A Mikroişlemci kullanılarak PortD deki 8 adet led binary olarak artarken PortB nin RB0 ucundan gelen kesme ile PortC deki ledi yakan assembly dili ile yazılmış uygulama. Kesmeden sonra ise program normal akışına devam etmektedir.

P16F877A / PIC16F877A Mikroişlemci ile Toplama İşlemi

P16F877A mikroişlemci kullanılarak PortB deki butonlardan basılı olanlardan gelen lojik 1 ler ile PortC deki butonlardan gelen lojik 1 ler binary olarak toplanıp sonuc PortD deki ledlerde yine binary olarak gösterilmektedir.

P16F877A / PIC16F877A ile Butona Basınca Ledi Sağa Sola Kaydırma Uygulaması

PortB nin 0. ve 1. Portuna bağlı iki tane butondan sağdakine basınca PortC nin içeriğini sağa kaydıran , soldaki butona basınca sola kaydıran P16F877A / P16F877A mikroişlemci kullanılarak assembly dili ile yazılmış uygulama

P16F877A / PIC16F877A ile Buton Basılı Kaldığı Sürece Sürekli Olarak Kayan Led Örneği

PortB ye bağlı iki butondan birisine basınca PortC deki ledi aşağı doğru buton lojik 0 olana kadar sürekli olarak kaydıran, diğer butona basınca PortC deki ledi yukarı doğru sürekli olarak kaydıran P16F877A / PIC16F877A mikroişlemci ile assembly dilinde yazılmış örnek uygulama.

P16F877A / PIC16F877A Mikroişlemci ile 3 ve 3 ün Katlarında Ledi 1 Kez Yakıp Söndürme

PortB nin 0. pinine bağlı olan butona 3 ve 3 ün katları sayısınca bastıkça PortC de bağlı olan ledi 1 kez yakıp-söndüren P16F877A / PIC16F877A mikroişlemci ile assembly dilinde yazılmış uygulama örneği

P16F877A / PIC16F877A Mikroişlemci ile Timer0 Örneği

Timer0 kullanılarak prescaler oranı 1/4 olan ve clock frekansı 4 MHz olan P16F877A / PIC16F877A mikroişlemci ile assembly dili ile yazılmış PortB ye bağlı olan ledi belli aralıklarla yakıp söndüren uygulama örneği

Timer kullanmadan iç içe döngü ile 1 saniyelik gecikme

Timer modülünü kullanmadan iç içe 3 adet döngü ile 8mhz kristal de yaklaşık 1 saniyelik gecikmeler ile portb ye bağlı butonların yanması. PortA,4 e bağlı butona basıldığında portb,0 portb,1 deki ledlerin sırayla yanması PortA,4 e bağlı butona basılmadığında portb,2 portb,3 deki ledlerin sırayla yanması

Ledlerin Binary Düzende Sayması

PortA,0 a bağlı butona basılmadığında PortB ye bağlı ledlerin ileri yönde sayması başlangıç değerimiz 0 olduğu için 0 dan başlayıp ileri yöne binary düzende sayar (00000000 00000001 00000010 .... 11111111) PortA,0 a bağlı butona basıldığında PortB ye bağlı ledlerin geriye doğru sayması. program başlangıcında butona basılı olmadığı için ileri yöne sayar butona basıldığında son değeri 1-1 azalır. programımız da timer modülü kullanılmadan iç içe döngü ile gecikme sağlanmıştır. 1mhz osilator hızında çalıştırmanız tavsiye edilir yada 3.bir döngü ile gecikme süresini arttırıp istediğiniz osilator hızını verebilirsiniz. iç içe 3 döngünün nasıl yazılacağıyla ilgili fikriniz yoksa bir önceki çalışmama bakabilirsiniz.

Ra4 e Bağlı Buton Tetikleme Durumuna Bağlı (Sağa/Sola) Led Kaydırma

RRF ve RLF komutlarını basit düzeyde işlediğim bu örnekte Ra4 e bağladığım buton üzerinden gelen tetikleme ile Sağa yada Sola Led kaydırma mantığını anlatmaya çalıştım. Programı gözle görülebilir bir şekilde izlenmesi için 1mhz osilatörde çalıştırmanızı tavsiye ederim. Assembly kodlarının yanlarına bıraktığım açıklamalarda sizler için faydalı olacaktır

Toplama Mantığı Ve Bu Mantıkla Led Kaydırma (50Hz Osilator)

Led Yakmak için o ledin set olması gerekmektedir. Peki Led kaydırmak için RRF RLF komutları dışında toplama yöntemiyle de led kaydırma yapılacağını düşündünüz mü hiç ? Örneğin 0000 0001 değeri ile sıfırıncı led yanar, 0000 0010 değeri ile birinci led yanar, 0000 0100 değeri ile ikinci led yanar, yani sola led kaydırmak bir nevi sayıyı 2 ile çarpmak yani kendisi ile toplamaktır. Bu örneğim de hem basit düzeyde toplama işleminin nasıl yapıldığını hemde 8 led içinden istediğiniz lede kadar nasıl kaydırma yapabileceğinizi göreceksiniz. Hiçbir Gecikme Kullanmadığım için program Osilator Hızlarını iyice düşürüyoruz ben örneğimde 50Hz olarak ayarladım

Her Buton Tetiklenmesinde PortB nin içeriğinin 1 Artması

Ra4 e bağlı buton tetiklemesiyle PortB nin içeriğinin 1 artması ve bu değerin Ledlerle gösterilmesi. Program tamamen buton tetiklemesi ile çalışıyor (pul-down) konumunda PortB yi 1 arttırıyor, basılı konumda beklediği sürece boş döngüde tekrar ediyor ne zaman pul-up konumuna gelirse en baştan döngüye girerek tekrar tetikleme bekliyor. Gecikme Kullanmadığım için Osilator hızınızı 1-4-8 Mhz değerlerinden birini seçerek uygulamayı inceleyebilirsiniz.

5X7 dot matris üzerinde Emoji Yapmak

pic üzerine 2 adet 5x7 dot matris bağlayarak Sütunları PortB üzerinden, Satırları PortC üzerinden Kontrol ederek kalp emojisi oluşturmaya ve her satırında ledlerin nasıl yanması gerektiğini anlatmaya çalıştım. Program çalıştığı süre boyunca kalp emojisini gösterecektir. Osilator Çalışma Hızı Olarak 4mhz tercih ederseniz daha pürüzsüz bir görüntü alacaksanız.

7 Segment Displaye Error Yazdırma

PortB üzerinden Yanacak Ledlerin Bilgisi PortC üzerinden Seçim Bitleri ayarlanan uygulamada 6 lı 7 Segment üzerinde Error Yazdırma örneği

Timer0 ile Kesme Oluşturup Led Yakmak

Tmr0 Kesmesini kullanarak 125 Mili saniye ... 16 Saniye Arasında kesme oluşturabileceğimiz kod örneği. kod içerisinde yaptığım açıklamaları ve yönlendirmeleri dikkate alarak option_reg üzerinden yapacağınız değişikliklerle 125 mili saniye 250 mili saniye ... 1 saniye 2 saniye... 16 saniye gibi farklı değerlerde kesmeler üretip bağlı led üzerinde değişiklikleri gözlemleye bileceksiniz.

Timer1 Gecikmesini Kullanarak Farklı Değerlerde Kesmeler Oluşturmak

Tmr1 Gecikmesini kullanarak kesme içerisine girdiğimizde kullandığımız döngümüz ve Tmr1 in 16 bitlik scala sının verdiği imkanla Tmr0 dan çok daha esnek çalışabilme imkanını buluyoruz. çok küçük değerleri de (Nano Saniye Mikro Saniye) çok büyük değerleri de (Mili Saniye Saniye Dakika) hesaplama imkanımız oluyor. kod içerisinde yaptığım açıklamalar ve Tmr1 hesaplaması sayesinde istediğiniz değerleri hesaplaya bileceksiniz. 500 Nano Saniye ... 67 Saniye Arasındaki Değerleri hesaplamak için 8Mhz kristal ile çalışmanızı tavsiye ederim

Buton Tetiklemesiyle Çalışan Timer1 Uygulaması

Ra1 ve Ra4 e bağlı 2 buton üzerinden yapılan tetiklemeler ile D portuna bağlı olan ledleri sırasıyla yakıp söndüren uygulama Ra1 e 5 kere basıldığında D0-D1 portuna Bağlı ledleri 3 er saniye Aralıkla yakıp Söndüren Ra4 e 10 kere basıldığında D2-D3 portuna Bağlı ledleri 1 er saniye Aralıkla yakıp Söndüren uygulama. Timer 1 üzerinden 4 Mhz osilator ile ayarlamalar yapılmıştır Hangi Butonun kaç kere tetikleme yapacağını verdiğim açıklamalar ile ihtiyacınıza göre düzenleyebilir yine aynı şekilde verdiğim açıklamalar ile zaman aralığını da istediğiniz gibi düzenleyebilirsiniz.

Adc ile Lm035 dan Sıcaklığı Ölçüp Belirlediğimiz Hedef sıcaklığa kadar Klima Motoru Çalıştırma

Daha Önce Yapılmış olan 2 ayrı uygulamadan yararlanarak geliştirdiğim uygulama Sitede Var olan (ADC ile LM035 sensör kullanılarak sıcaklık ölçme uygulaması ve LCD Displaye Tersten Metin Yazdırma) uygulamalarından yararlanarak geliştirdiğim bu uygulamada; Bizim elimizde var olan A portuna bağlı Analog olarak sıcaklık ölçen Lm35 sensörünün ölçtüğü sıcaklık değerini ADC ile lcd de gösterip belirlediğimiz hedef sıcaklık ile arasında fark varsa RD4 üzerindeki Ledi Yakacaktır (Led motorun çalıştığını gösteren sembolik bir olay) hedef sıcaklık ve ölçülen sıcaklık eşitlendiğinde Led Sönecektir (Motor duracaktır) yeniden bir fark oluşursa led tekrar yanacaktır