Sıfırdan PIC ve PIC16 İle LED Yakma

Sıfırdan PIC ve PIC16 İle LED Yakma

Temel bir şekilde PIC kullanımını anlattığımız bu içerik ile beraber kolay bir şekilde PIC ile LED yakmak için gerekli işlemleri göreceksiniz. Daha önceki yazımız da PIC hakkında bilgiler vermiştik, şimdi bu yazı dizimide PIC16 serisi ile LED yakma işlemi yapıyoruz. Kodumuzu compile etmek için “MPAB XC8 Compiler” şema oluşturmak için ise “MPLAB X IDE” programını kullanacağız, bu program Microchip tarafından geliştiricilere Windows, Linux ve Mac için sunulmuş çok fonksiyonlu bir compiling/IDE programıdır.

İki programın da çalışması için Java ‘nın bilgisayarınızda kurulu olması gerekiyor, projede PIC16 serisinden 16F877A kullanıldı, ilk adımlara geçelim;

PIC ile LED Yakmak için Hazırlıklar

MPLAB X IDE yi açarak başlıyoruz.

File >> New Project ile devam ediyoruz.

Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Microchip Embedded >> Standalone Project ‘I seçip “Next” ile devam ediyoruz…
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Family ve Device bölümünü elimizdeki PIC yongasına göre seçiyoruz.
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Buradan Programmerımızı seçiyoruz, eğer desteklenmiyor ise proje bitince tekrardan “burn” yükleme şansımız olucak.
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Buradan Compiler XC8 seçip devam ediyoruz…
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Projemizin; isim, konum gibi bilgilerini dolduruyoruz.
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Project Tree ‘den Source Files e sağ tıklıyoruz.
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • New >> C Main File yi seçip devam ediyoruz.
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Tekrardan isim ve konum belirliyoruz
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Gelen .c dosyasına kodlarımızı yazacağız.

PIC ile LED Yakmak İçin Kodlama Bölümü

PIC mikroişlemcilerinin I/O pinleri farklı gruplara bölünmüştür, 16F877A, 8 bitlik bir mikroişlemci ,bu yüzden her PORT 8 I/O içermiş oluyor ve bu PORTlar iki register ile ilişkilendiriliyor bunlardan biri TRIS ve diğeri PORT (TRISB, PORTB, TRISD, PORTD).Kullandığımız “PIC 16F877A” 5V ile çalışan bir mikroişlemci, bu yüzden VDD çıkışı 5V ve VSS çıkışı 0V tur.

TRIS Register Nedir?

TRIS Tri-State etkinlikler için kullanılır, buda her GPIO pinin değerini belirler, Logic 1 durumunda TRIS kayıdı pini INPUT, Logic 0 durumunda TRIS kayıdı pini OUTPUT yapar, ayrıca bütün Input pinleri Hi-Impedance yani yüksek empedans durumunda bekler.

PORT Register Nedir?

PORT kayıdı ise pinden veri okuma yada veri yazmak için kullanılır, OUTPUT Pin yani TRIS Bit “0” iken, PORT Logic 1 olur, bu sayede kayıt o pini Logic High (VDD) yapar ve Logic 0 iken PORT aynı pini Logic Low (VSS) yapar. PORT okuma işlemi yaparken ilgili pinin voltaj değerini bakar eğer potansiyel olarak VDD’ye yakın ise, PORT biti Logic 1 olur eğer potansiyel olarak VSS’ye yakın ise PORT biti Logic 0 olur.

Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı

Registerları Kod İçerisinde Tanımlama

PORT ve TRIS registerlarını ister pin başına ister hepsini bir kerede tanımlayabiliriz.

Bit ile Tanımlama

Tüm Registerı Tanımlama

‘0b’ önekli numaralar binary(ikili) sayıdır.

‘0’ önekli numaralar octal(sekizli) sayıdır.

‘0x’ önekli numaralar hexadecimal(onaltılık) sayıdır.

öneksiz numaralar ise decimal(ondalık) sayıdır.

Bu tablo ile daha mantıklı gelebilir;

Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı

PORTB = 0xFF; //PORTB nin tüm pinlerini Logic High yapar 

TRISC = 0x00; //TRISC pinlerini Output yapar.

PORTD = 128; //PORTD’nin 7. bitini Logic High yapar.

PIC ile LED Yakmak için Kullanılacak Kod

_XTAL_FREQ ile saat hızımızı ayarladık ve xc.h ilede __delay_ms() satırını tanımlı kıldık.

Config Bölümündeki Bit Ayarları

“CONFIG AYARI” Kısmındaki pinleri buradan ayarlıyoruz .MPLAB IDE ile mikroişlemcimize bit mid-range ayarlarını yapıyoruz. Daha detaylı anlamak ve pin-bit anlamları için buradaki yazımızı inceleyin

Window >> PIC Memory Views >> Configuration Bits

Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
  • Generate Source Code to Output butonuna basıyoruz.
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı
Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı

Mid-Range Bit ayarını oluşturduktan sonra doğrudan kodumuza yapıştırıyoruz ve projemizi “BUILD” ediyoruz.

Sıfırdan PIC ve PIC16 İle LED Yakma pic ile led yakmak,MPLAB Kullanımı

Run Project ile kodumuzu hazırlayıp doğrudan PICe yazdırıyoruz

Arzu edersek sonradan yazmak için yada aktarmak için Build Project ile sadece .hex dosyasını oluşturuyoruz. .hex dosyası en başta belirttiğimiz klasörün içindedir

PIC ile LED Yakmak için Devre Şeması

PIC ile LED Yakmak

Bu yazı dizimizin de sonuna geldik, yorumlarınızı ve sorularınız bildirmekten çekinmeyin!

PIC Projelerinde Kararlı Başlangıç İçin İpucu

  • Konfigürasyon bitlerini (oscillator, watchdog, brown-out) proje başında netleştirin.
  • I/O yönlerini ayarladıktan sonra kullanılmayan pinleri güvenli seviyede bırakın.
  • Derleme sonrası oluşan hex dosyasını sürümleyerek geri izlenebilirlik sağlayın.

Bu temel disiplin, eğitim projelerinden üretim öncesi denemelere kadar hata oranını belirgin şekilde azaltır.

PIC ile İlk Projede Hata Azaltma Önerileri

  • Derleme uyarılarını görmezden gelmeyin; küçük uyarılar sahada büyük sorunlara dönüşebilir.
  • Her donanım değişikliği sonrası kısa bir “blink” veya port testi ile temel doğrulama yapın.
  • Kodda port atamalarını sabit bir bölümde toplayarak bakım ve tekrar kullanım kolaylığı sağlayın.

Bu pratik disiplin, öğrenme sürecinde hem hata bulma süresini kısaltır hem de daha düzenli proje yapısı oluşturur.

Debug Sürecinde Ölçüm Doğrulaması

  • Yalnızca yazılım çıktısına değil, multimetre veya osiloskop ile pin seviyelerine de bakın.
  • Clock kaynağı ve gecikme fonksiyonlarının gerçek frekansla uyumlu olduğundan emin olun.
  • Adım adım test yaklaşımıyla önce tek pin, sonra port, ardından tüm akışı doğrulayın.

Donanım ölçümüyle desteklenen debug yaklaşımı, PIC projelerinde sorun kök nedenini daha hızlı ortaya çıkarır.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.