16F877A Mikrodenetleyici ile Programlama Örnekleri
16F877A Mikrodenetleyici ile Programlama Örnekleri
Mikrodenetleyiciler, modern elektronik projelerin temel taşlarından biridir. Özellikle PIC serisi mikrodenetleyiciler, kullanıcı dostu yapıları ve geniş uygulama alanlarıyla dikkat çekmektedir. Bu yazıda, PIC16F877A mikrodenetleyicisi ile programlama örneklerine odaklanacağız. Bu mikrodenetleyici, 8 bitlik bir mimariye sahip olup, 40 pinli bir DIP (Dual In-line Package) form faktöründe sunulmaktadır. Geniş bir hafıza kapasitesine ve çok sayıda I/O pinine sahip olması, onu eğitim ve hobi projeleri için ideal bir seçenek haline getirir.
1. PIC16F877A Mikrodenetleyicisinin Özellikleri
PIC16F877A, 14-bit komut seti mimarisine sahip bir mikrodenetleyicidir. Aşağıda bu mikrodenetleyicinin temel özellikleri sıralanmıştır:
– **Hafıza**: 3680 adet kelime program hafızası, 256 byte veri hafızası (RAM) ve 256 byte EEPROM.
– **I/O Pinleri**: 33 adet dijital I/O pini.
– **Zamanlayıcılar**: 3 adet zamanlayıcı (Timer0, Timer1, Timer2).
– **Analog-Dijital Dönüştürücü (ADC)**: 8 kanal, 10 bit çözünürlükte ADC.
– **Seri İletişim**: UART, SPI ve I2C gibi iletişim protokollerini destekler.
Bu özellikler, PIC16F877A’yı çok çeşitli uygulamalar için uygun hale getirir.
2. Geliştirme Ortamı ve Araçlar
PIC16F877A ile programlama yapabilmek için öncelikle uygun bir geliştirme ortamına ihtiyaç vardır. Mikrodenetleyiciyi programlamak için genellikle MPLAB X IDE ve XC8 derleyici kullanılır. MPLAB X, kullanıcıların mikrodenetleyici projelerini geliştirmelerini, hata ayıklamalarını ve simüle etmelerini sağlayan güçlü bir araçtır.
Ayrıca, mikrodenetleyiciyi bilgisayara bağlamak için bir programlayıcıya ihtiyaç vardır. PICkit 2 veya PICkit 3 gibi programlayıcılar, PIC mikrodenetleyicilerini programlamak için yaygın olarak kullanılmaktadır.
3. İlk Program: LED Yakma
Mikrodenetleyici ile çalışmaya başlamak için en basit uygulamalardan biri LED yakma programıdır. Bu uygulama, mikrodenetleyicinin temel işlevlerini anlamak için iyi bir başlangıçtır.
“`c
#include
#define _XTAL_FREQ 4000000 // 4 MHz osilatör frekansı
void main()
TRISB = 0x00; // PORTB’yi çıkış olarak ayarla
while(1)
PORTB = 0xFF; // Tüm pinleri HIGH yap
__delay_ms(1000); // 1 saniye bekle
PORTB = 0x00; // Tüm pinleri LOW yap
__delay_ms(1000); // 1 saniye bekle
“`
Yukarıdaki kod, PORTB’ye bağlı bir LED’in 1 saniye aralıklarla yanıp sönmesini sağlar. `TRISB` kaydı, PORTB’nin giriş veya çıkış olarak ayarlanmasını sağlar. `PORTB` ise çıkış pinlerinin durumunu belirler.
4. İkinci Program: Buton ile LED Kontrolü
Bir diğer basit uygulama ise bir buton ile LED kontrolüdür. Bu uygulama, giriş ve çıkış pinlerinin nasıl kullanılacağını gösterir.
“`c
#include
#define _XTAL_FREQ 4000000 // 4 MHz osilatör frekansı
void main()
TRISB = 0x01; // RB0 giriş, diğerleri çıkış
TRISC = 0x00; // PORTC’yi çıkış olarak ayarla
while(1)
if (RB0 == 1) // Buton basılıysa
PORTC = 0xFF; // LED’leri yak
else
PORTC = 0x00; // LED’leri söndür
“`
Bu programda, RB0 pinine bağlı bir buton kullanılarak PORTC’deki LED’lerin durumu kontrol edilmektedir. Butona basıldığında LED’ler yanar, basılmadığında söner.
5. Üçüncü Program: ADC Kullanımı
PIC16F877A’nın bir diğer önemli özelliği, analog sinyalleri dijital verilere dönüştürebilen ADC (Analog-Dijital Dönüştürücü) özelliğidir. Aşağıda bir potansiyometre kullanarak ADC’den veri okuma örneği verilmiştir.
“`c
#include
#define _XTAL_FREQ 4000000 // 4 MHz osilatör frekansı
void ADC_Init()
ADCON1 = 0x0E; // Tüm pinleri dijital çıkış olarak ayarla
ADCON2 = 0xA9; // Sağdan 8 bit, 20 TAD, Fosc/8
unsigned int ADC_Read(unsigned char channel) ADRESL; // Sonucu döndür
void main()
unsigned int adc_value;
ADC_Init();
while(1)
adc_value = ADC_Read(0); // Kanal 0’dan okuma yap
// adc_value değişkenini kullanarak LED veya başka bir işlem yapabilirsiniz
“`
Bu program, ADC’yi başlatır ve Kanal 0’dan analog bir değer okur. Okunan değer, daha sonra kullanılmak üzere bir değişkende saklanır.
SSS (Sıkça Sorulan Sorular)
**1. PIC16F877A mikrodenetleyicisi hangi dillerle programlanabilir?**
PIC16F877A, genellikle C ve Assembly dilleriyle programlanmaktadır. C dili, daha kullanıcı dostu olduğu için tercih edilmektedir.
**2. Hangi geliştirme ortamını kullanmalıyım?**
MPLAB X IDE, PIC mikrodenetleyicileri için en popüler geliştirme ortamıdır. XC8 derleyici ile birlikte kullanılması önerilir.
**3. PIC16F877A ile hangi projeleri yapabilirim?**
PIC16F877A ile LED kontrolü, motor sürücüleri, sensör okuma, veri iletimi gibi birçok farklı proje gerçekleştirebilirsiniz.
**4. Hangi programlayıcıları kullanabilirim?**
PICkit 2 ve PICkit 3, PIC mikrodenetleyicilerini programlamak için yaygın olarak kullanılan programlayıcılardır.
**5. ADC nasıl çalışır?**
ADC, analog bir sinyali dijital bir değere dönüştürmek için kullanılır. PIC16F877A’da 10 bit çözünürlükte bir ADC bulunmaktadır.
Bu makalede, PIC16F877A mikrodenetleyicisi ile programlama örnekleri ve temel bilgiler verilmiştir. Mikrodenetleyici programlama, pratik yaparak ve projeler geliştirerek daha iyi öğrenilebilir.