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.

İlginizi Çekebilir:  Android Studio ile Programlama: Kodlama ve PDF Oluşturma Rehberi

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.

Başa dön tuşu