Bugünkü dersimizde C diliyle PIC programı yazmaya başlayalım artık. Ama ondan önce geçen derslerimizde ne gördük onları bir hatırlayalım.

Bundan önceki son iki dersimizde, sırasıyla:

1.MikroC derleyicisini kullanmayı (proje oluşturma, gerekli ayarları yapma, program kodlarını yazma ve derleme.)

2.PROTEUS ISIS simülasyon programında malzemeleri yerleştirip devre kurma ve PIC için oluşturulan. hex dosyasını deneme.

Size tavsiyem; bu iki adımda hala sorunlar yaşıyorsanız. Bu son iki dersi sırasıyla tekrar gözden geçirip öyle oturun bu yeni dersimizin başına. Çünkü bundan sonra bu iki aktiviteyi bildiğinizi varsayarak devam edeceğiz. Hadi öyleyse geçen dersleri tekrar gözden geçirin. Ben burada bekliyorum.

***

Evet, döndüyseniz devam edelim. Şimdi şöyle yapacağız. Programlama komutlarını öğrenmek için örnek bir program üzerinden gideceğiz ve yazdığımız program satırlarını tek tek açıklayıp komutları anlamlandıracağız.

İlk programımız PORTB’ye bağlı 8 ledi sıra sıra yakan bir kara şimşek projesi.

NOT: “PORT B dediğin nedir? Neyin Nesidir?” diye soruyorsanız. Size PIC16F877 entegresi hakkında bilgilenmenizi salık veririm. Biz burada entegrenin donanımına girmeyi en azından şimdilik düşünmüyoruz.

Aşağıdaki program satırlarını anlamaya çalışarak MikroC derleyicisine yazın. Tabi önce MikroC de adına "karasimsek" (Türkçe karakterleri kullanmadan) diyeceğiniz yeni bir proje oluşturun (proje nasıl oluşturulur için Bkz: ders1)

1. void main()
2.
3. {
4.
5. int i;
6. int a=2;
7
8. TRISB=0;
9. PORTB=0;
10.
11. while(1)
12. {
13. for (i=1;i<129;i=i*2)
14. {
15.
16. PORTB=i;
17. delay_ms(100);
18. }
19. }
20.
21. }

Program kodlarını derleyiciye yazarken satır numaralarını yazmayınız. Zaten derleyici kendisi sağda satır numaralarını gösterir. Ben burada programı satır satır anlatacağım diye yazdım numaraları.

1.satır: bu ifade yazacağımız bütün programların en başında olacaktır. Yoksa programımızı bir türlü derleyemeyiz. C/C++ dilini biraz bilenenler bunun programımızın ana fonksiyonu olduğunu ve değer döndürmeyen bir fonksiyon olduğunu anlayacaklardır. C/C++ dilini bilmeyenlerse bunun zorunlu bir başlık olduğunu ve her programda kullanmamız gerektiğini bilsinler yeter.
2.satırı okunabilirlik ve takip edilebilirlik artsın diye bilerek boş bıraktım. Arada bir uygun böyle boşluklar bırakırsak programı takip etmek kolaylaşacaktır.

3. satır daki köşeli parantez yani “{” Programımızın “BAŞLA” komutudur. Bunu bir futbol maçında hakemin başlama düdüğü olarak düşünebilirsiniz. Hakem başlama düdüğünü çalmadan futbolcular istediği kadar gol atsın sayılmaz. Aynı şekil bu köşeli parantezimiz olmadan istediğimiz kadar kod döktürelim bir işe yaramayacaktır.

5.satır: buradaki “int” ifadesi en az bir programlama dili görmüş olanlar için çok tanıdıktır. Bu komutla yani

int i; komutuyla biz programımıza şöyle diyoruz. Kardeşim ben adı i olan bir tamsayılı değişken kullanacağım. Değişkenler programcının istedikleri değerleri verebilecekleri parametrelerdir.

Mesela

int hasan; diye yazsaydım. Derleyiciye, adı Hasan olan ve içinde tamsayı saklayacağım bir değişken sipariş etmiş olacaktım.

int tamsayı, float ise ondalıklı sayı tanımlamak için kullanılır. Yani ben

float Mehmet; diye bir kullanım yapsaydım. Derleyicimiz Mehmet adında ve içeriği ondalıklı bir sayı olan bir değişken atamak niyetimde olduğumu anlayacaktı.

6.satırda da 5.satırdaki gibi bir integer yani tamsayı değer ayırmışım kendime. Bu değerime de ali dememişim de kısa olsun diye a demişim. Üstelik burada kullanmak istediğim değeri anında belirlemişim.

int a=2; diyerek derleyiciden bana “a” adında bir tamsayı çekmecesi ayırmasını istemiş bununla da yetinmeyip bu çekmeceye “2” sayısını yerleştirmesini istemişim.

Evet değişken tanımlamayı gerçekten de bir komedinin çekmeceleri olarak düşünebiliriz. Mesela;

Float pi=3,14 dediğimde ondalıklı (float) bir çekmece siparişi veriyor bu çekmeceye pi diyor ve içine de 3,14 değerini atıyorum.

Ümit ediyorum. Hiç bilmeyenler de değişken kavramını anlamıştır.

8.satır. Bu satırda gerçek bir assembly komutu görüyoruz. Bunun c/c++ ile alakası yok.

TRIS komutu bir portu ya da portun belirli pinlerini giriş ya da çıkış olarak ayarlamak için kullanılır. Ne demek bu? Şu demek. Mesela ben bu programda PORTB’nin tüm pinlerini Çıkış (Output) olarak kullanmayacak mıyım? Evet, neden çünkü LED bağlayacağım. Eğer buton ya da sensor bağlayacak olsaydım giriş (Input) olarak ayarlardım.

Çıkış olarak kullanacağım pinlere 0, giriş olarak kullanmak istediğim pinlere 1 atayacağım. Demek ki;

Giriş olarak ayarlamak için 1;
Çıkış olarak ayarlamak için 0; verilir.

Aklımda kalmaz, karıştırırım. Çıkış olarak kullanmak için 1 miydi 0 mıydı? Diyorsanız çıkış=Output kelimesini ve giriş=Input kelimesini aklınıza getirini.

O harfi yani çıkış 0,
I harfi yani giriş 1, harf-rakam benzerliğinden aklınızda kalacaktır.

Burada PORTB’nin 8 pini de çıkış olacağında binary olarak yana yana sekiz sıfır yazılır:00000000 bu da ondalık olarak da koca bir 0’ dır. Mesela PORTB’nin baştan ilk iki biti giriş olarak diğerleri çıkış olarak ayarlamak için TRISB değeri:

00000011 olmalıydı. Bunun da ondalık değeri 3 olacağından TRISB=3 demeliydik.

9.satırdaki PORTB’ye sıfır atamak. PORTB’yi şöyle bir temizlemektir. Bayram temizliği.

Şunu da hatırlatalım. Arkadaşlar eşittir işareti yani “=” programlama dillerinde eşittir demek değildir. Atama demektir. Yani PORTB=0 ifadesi PORTB sıfıra eşittir (her ne kadar bu deyiş de doğru olsa) demek değildir.

PORTB ye 0 değeri atandı demektir. Matematikteki eşit ifadesi, bizim dilimizde “==” işaretidir. Yani yan yana iki eşittir.

Bu satıra kadar olan yerler “ilklendirme” ya da İngilizce “initalization” diyeceğimiz programımıza hazırlık safhalarıdır. Yani buralar ufak tefek değişiklikler haricinde hemen her programımız buraya kadar olan ki satırları kapsayacaktır. Bundan sonraki satırlarsa asıl program komutladır.

Bu ders uzadığı için burada bırakıyor, önümüzdeki ders, programımızın asıl kısmını açıklamak üzere dersi bitiriyoruz.


ANAHTAR KELİMELERİMİZ: PIC, PIC programlama, MikroC kitap, MikroC derleyici, MikroC dersi, MikroC programlama, MikroC kaynak, kaynak kodlar, mikroC projeleri,Proteus Dersleri, Proteus Kitap.


Anahtar Kelimeler: Mikrodenetleyici

peynir6 suyu tozu , 02/05/2008-16:32 Facebook'ta Paylas