PIC Programlama Dersleri 1: MikroC PRO for PIC ile Programlamaya Giriş
Bu konu dizisinde PIC mikrodenetleyicileri ve mikroC PRO for PIC v7.60 programını kullanarak C diliyle yazılım geliştirmeyi adım adım öğreneceğiz. Anlatımlar başlangıç seviyesine uygun olacak; her derste komutları örnek kodlarla açıklayıp uygulamalar yapacağız.İlk örneklerde PIC16F628A mikrodenetleyicisini kullanacağız. Öğrendiklerimizi LED kontrolü, buton uygulamaları, röle kontrolü ve zamanlama devreleri gibi projelerde uygulayacağız.
1. PIC programlama nasıl yapılır?
PIC mikrodenetleyiciye bir görev yaptırmak için önce C dilinde program yazılır. Bu program mikroC derleyicisiyle derlenerek HEX dosyasına dönüştürülür. Daha sonra uyumlu bir programlayıcı yardımıyla HEX dosyası PIC'e yüklenir.Programlama süreci genel olarak şu adımlardan oluşur:
- MikroC PRO for PIC programında yeni proje oluşturulur.
- Kullanılacak PIC modeli ve işlemci frekansı seçilir.
- Program kodu yazılır.
- Gerekli yapılandırma bitleri (Configuration / Device Flags) ayarlanır.
- Kod derlenerek HEX dosyası oluşturulur.
- HEX dosyası uygun bir programlayıcıyla PIC'e aktarılır.
2. MikroC'de kullanılan temel ifadeler
| Komut veya ifade | Açıklama |
|---|---|
| void main() | Ana program fonksiyonunu tanımlar. |
| { } | Bir kod bloğunun başlangıcını ve sonunu belirtir. |
| TRISB | PORTB pinlerinin giriş veya çıkış yönünü belirler. |
| PORTB | PORTB pinlerinin çıkış seviyelerini kontrol etmek için kullanılır. |
| PORTB.F0 = 1; | RB0 pinini çıkış olarak kullanırken lojik 1 seviyesine getirir. |
| PORTB.F0 = 0; | RB0 pinini lojik 0 seviyesine getirir. |
| while(1) | İçindeki komutların sürekli tekrarlanmasını sağlar. |
| Delay_ms(1000) | Yaklaşık 1000 milisaniye bekler. |
| if (...) | Belirtilen koşul doğruysa ilgili kodu çalıştırır. |
3. İlk örnek: LED yakıp söndürme
Bu örnekte PIC16F628A'nın RB0 çıkışını bir saniye aralıklarla açıp kapatacağız.
Kod:
void main() {
TRISB = 0;
PORTB = 0;
while(1) {
PORTB.F0 = 1;
Delay_ms(1000);
PORTB.F0 = 0;
Delay_ms(1000);
}
}
Kodun açıklaması
- TRISB = 0; komutu PORTB pinlerini çıkış olarak ayarlar.
- PORTB = 0; başlangıçta PORTB çıkışlarını sıfırlar.
- while(1) döngüsü programın sürekli çalışmasını sağlar.
- PORTB.F0 = 1; RB0 çıkışını lojik 1 seviyesine getirir.
- Delay_ms(1000); bir saniyelik bekleme oluşturur.
- PORTB.F0 = 0; RB0 çıkışını lojik 0 seviyesine getirir.
Not: mikroC proje ayarındaki işlemci frekansı, PIC'in gerçek çalışma frekansıyla aynı olmalıdır. Örneğin iç osilatör 4 MHz olarak kullanılacaksa proje frekansı da 4 MHz seçilmelidir. LED bağlantısında uygun akım sınırlama direnci kullanılmalıdır.
4. Öğrendiklerimizi kontrol edelim
PORTB.F0 = 0; komutu ne yapar?- A) RB0 pinini giriş olarak ayarlar.
- B) RB0 çıkışını lojik 0 seviyesine getirir.
- C) Programı tamamen durdurur.