Bu notumuzda mikroişlemci programlama öğrenilirken, çalıştırıldıktan sonra öğrenciye en çok heyecan veren ve gülümseme sağlayan yürüyen ışık uygulamasına değineceğiz. 8 bitlik mikrodenetleyici kullandığımız için 8 adet ledi kullanacağımız mikrodenetleyici olan PIC16f628A’nın B portuna bağlayacağız. Daha sonra karaşimşek dizisini hatırlayanların bileceği (ben izlerken çok büyük hayranlık duyardım, kit konuşurken ışık sağa sola hareket ederdi) o müthiş efekt için gerekli işlemleri yapmadan önce,  C derleyicisinin en baba döngülerinden  olan “for” döngüsüne değinelim.

“For”  döngüsü oluşturulurken “for(a=0; a<10; a=a+2) ” gibi bir yazım şekli kullanılır. Burada “a” isimli değişkenin ilk değerinin 0 olacağı, maksimum değerinin 10’dan küçük olması gerektiği, ve artış değerinin de “a++” ifadesiyle “1” olacağı belirtilmiş. Daha açık yazacak olursak;

for(a=0; a<10;a+=2)
                                  {
                                    b++;
                                  }

kod parçacığında  for döngüsüne girildiği anda “a” değişkeninin değeri “0” olarak belirlenmiştir. Daha sonra” a<10″ şartının sağlanıp sağlanmadığı kontrol edilir. Eğer şart sağlanmıyor ise döngüye girilmez ve bu döngüye ait küme parantezlerinin arasında kalan kodlar işlenmez. Eğer şart sağlanıyor ise  döngü içerisine girilir ve küme parantezlerinin arasında kalan ve örnek olarak verilen “b++” komutu işlenir.  “b” değişkeninin sağ tarafında kalan “++” operatörü b’nin değerinin 1 kez arttırılacağını ifade etmektedir. “b” değişkeninin içeriği bir arttırıldıktan sonra döngünün kapandığı küme parantezine ulaşılır ve “a” değişkeninin değeri “a+=2” ifadesinde belirtildiği gibi 2 arttırılır. Bu sayede a’nın değeri 0+2’den 2 olmuş olur. Burada dikkat şeken “a+=2” yazım şeklidir. Aslında bu yazım “a=a+2′ nin ” kısaltılmış şeklidir. (a*=3 , a-=4,  a/=10 ifadeleri de  kıslatılmış yazım biçimleridir) Daha sonra “a<10” şartı tekrar kontrol edilerek şart sağlanıyor ise döngü içerisine girilir. b’nin değeri tekrar 1 arttırılır ve bu işlem a değişkeninin değeri 10 olana kadar devam eder. “a” 10 olduğunda a<10 şartı sağlanmaz ve döngüden çıkılır. Peki bu döngünün başlangıcında “b” değişkeninin değeri “1” olsa idi döngü sonlandıpında “b” değişkeninin değeri ne olurdu?

Cevap: 11.  Çünkü a değişkeninin, döngü işlerken aldığı ilk değer 0, son değer ise 9’dur yani 10 kez arttırım yapılmıştır. “a” değişkenin değeri 0 olduğunda ise döngü işlememiş ve bitmiştir.

Şimdi kodumuzu yazmaya geldi sıra. Burada öğreneceğimiz bir şey daha var bu da “<<” ve “>>”  operatörlerinin işlevleri. “<<” operatörü bir bit sola kaydırma “>>” operatörü ise bir bit sağa kaydırma işlemi yapar.

Bu işlemleri aşağıdaki şekillerden daha iyi anlayabilirsiniz. Soldaki şemada sola kaydırma sağdakinde ise sağa kaydırma işlemi gösterilmiştir. Aslındasola bir bit kaydırmak demek 2 ile çarpmak demektir. Çünkü binary sayılar 2’nin katları şeklinde sıralanmışlardır. Sağa bir bit kaydırmak ise 2′ ye bölmek demektir.

Şemayı inceledikten sonra kod yazmaya geçebeiliriz. İşte PIC16F628A denetleyicimiz için yazdığımız kodlarımız.

Kodlarımızın hemen arkasına ISIS’ te çizdiğimiz devre şemamız geliyor.

Büyütmek için tıklayın.

Devrede göreceğimiz üzere ledlere seri birer 220 ohm direnç bağladık bunun sebebi ledleri aşırı akımdan korumak ve ömürlerini uzatmak.  Devre ile ilgili tüm dosyaları buradan indirebilirsiniz.  Sorularınızı yorum kısmından  bana iletebilirsiniz…

Devamı gelecek…

yorum
  1. Osman dedi ki:

    Çok yararlı bir site olmuş Yazılarınızın devamını bekliyoruz.

  2. Veysel dedi ki:

    Çok yararlı bir blog..Teşekkürler.

  3. mustafa dedi ki:

    Ellerinize sağlık hocam. teşekkür ederim!

  4. EYÜP dedi ki:

    Hocam çok güzel bir site olmuş.Ellerinize sağlık!
    Artık Pic uygulamalarını burdan çalışırım

  5. Veysel dedi ki:

    Yeni konularımız ne zaman eklenir ?

  6. Eray dedi ki:

    Devreyi yaptım gayet güzel çalışıyor teşekkür ederim

  7. hayrullah dedi ki:

    teşekkür ediyorum kaynakdosyaların direk indirme linki koyarsanızçoksevinirim tüm yazılarınızi çin

  8. azizbuyuk dedi ki:

    merhabalar kolay gelsin öncelikle teşekkür ederim.ben programları pic16f877a mc de yazıyorum ama ısıs de simülasyon sırasında her seferinde ısıs de hatalar çıkıyor ya 7segmet bcd çalışmıyor yada bu programda mesela sadece sola kaydırma işlemini yapıp duruyor halbuki while (1) sonsuz döngüsü kullanılıyor sorun sizce nedir? ısıs den kaynaklı problem midir?

  9. Emre Özüm dedi ki:

    Sağa kayması için en alttaki led=led<>1 olarak düzeltebilirsiniz

  10. sinan dedi ki:

    10 ledli yürüyen ışık devresi programı lazım yardımcı olurmusunuz

  11. sinan dedi ki:

    çok faydalı bir yer

  12. emre dedi ki:

    bu konu hakkında ödevim vardı çok teşekkür ederim 🙂

  13. Onur dedi ki:

    Kodda bir hata var sanki ikinci for kısmında ‘<>’ kullanılması lazım

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s