PIC Programlama Dersleri 8: Diziler (Arrays) – MikroC PRO for PIC
Bu derste, MikroC PRO for PIC programlama ortamında dizileri (arrays) öğreneceğiz. Diziler, aynı türden birden fazla veriyi tek bir değişken adı altında saklamamızı sağlar.
Örneğin, birden fazla sensör değerini, LED durumunu veya sayısal veriyi ayrı ayrı değişkenler oluşturmak yerine bir dizi içinde tutabiliriz.
Örneklerimizde PIC16F628A mikrodenetleyicisini kullanacağız.
1. Dizi Nedir?
Normalde beş farklı değeri saklamak için şu değişkenleri tanımlayabiliriz:
Kod:
unsigned char veri1;
unsigned char veri2;
unsigned char veri3;
unsigned char veri4;
unsigned char veri5;
Ancak veri sayısı arttıkça bu yöntem kullanışsız hâle gelir. Dizi kullanarak aynı işlemi daha kolay yapabiliriz:
Kod:
unsigned char veri[5];
Bu tanım, veri adında beş elemanlı bir dizi oluşturur. Her eleman unsigned char türündedir ve 0–255 arasında bir değer saklayabilir.
2. Dizi Elemanlarına Erişim
C programlama dilinde dizi indisleri 0'dan başlar. Beş elemanlı bir dizinin indisleri 0, 1, 2, 3 ve 4'tür.
Kod:
unsigned char veri[5];
void main() {
veri[0] = 10;
veri[1] = 20;
veri[2] = 30;
veri[3] = 40;
veri[4] = 50;
}
Burada her dizi elemanına farklı bir değer atanmıştır.
Dikkat: Beş elemanlı bir dizide veri[5] geçerli bir eleman değildir. Geçerli son eleman veri[4] olur. Dizi sınırlarının dışına çıkmak hatalı ve öngörülemeyen sonuçlara neden olabilir.
3. for Döngüsü ile Dizi Kullanımı
Dizilerin en önemli avantajlarından biri, for döngüsüyle bütün elemanlara kolayca erişilebilmesidir.
Kod:
unsigned char veri[5];
unsigned char i;
void main() {
for (i = 0; i < 5; i++) {
veri[i] = (i + 1) * 10;
}
while (1) {
}
}
Program çalıştığında dizi elemanlarına sırasıyla 10, 20, 30, 40 ve 50 değerleri atanır.
Buradaki veri ifadesi, indis değeri i olan dizi elemanını belirtir.
4. Uygulama: Dizi Kullanarak LED'leri Sırayla Yakma
Bu uygulamada, LED'leri yakmak için kullanılacak bit değerlerini bir dizi içinde saklayacağız. Ardından for döngüsüyle PORTB çıkışlarını sırayla etkinleştireceğiz.
Gerekli malzemeler
- PIC16F628A mikrodenetleyici
- PORTB çıkışlarına bağlanacak LED'ler
- Her LED için uygun seri direnç
- Deney kartı ve bağlantı kabloları
LED'leri RB0–RB7 çıkışlarına uygun seri dirençlerle bağlayabilirsiniz. Mikrodenetleyicinin çıkış akımı sınırlarına dikkat edin.
MikroC PRO for PIC kodu
Kod:
unsigned char led_veri[8] = {
1, 2, 4, 8, 16, 32, 64, 128
};
unsigned char i;
void main() {
CMCON = 0x07;
TRISB = 0x00;
PORTB = 0x00;
while (1) {
for (i = 0; i < 8; i++) {
PORTB = led_veri[i];
Delay_ms(250);
}
}
}
5. Programın Çalışma Mantığı
- led_veri[8] dizisi sekiz elemanla oluşturulur.
- Elemanlara sırasıyla 1, 2, 4, 8, 16, 32, 64 ve 128 değerleri atanır.
- TRISB = 0x00 komutuyla PORTB çıkış olarak ayarlanır.
- for döngüsü, dizi elemanlarını sırayla okur.
- Okunan değer PORTB'ye gönderilir ve her adımda 250 ms beklenir.
- Sekiz adım tamamlanınca işlem while (1) nedeniyle yeniden başlar.
6. Dizi Kullanırken Dikkat Edilecekler
- Dizinin eleman sayısını doğru belirleyin.
- İndislerin 0'dan başladığını unutmayın.
- Dizi türünü saklanacak veriye uygun seçin.
- Büyük dizilerin mikrodenetleyicinin RAM kapasitesini aşmadığından emin olun.
- MikroC PRO for PIC projesinde doğru mikrodenetleyicinin seçildiğini ve osilatör ayarlarının uygun olduğunu kontrol edin.
7. Alıştırmalar
- LED'lerin sıralı yanma hızını değiştirmek için Delay_ms(250) değerini düzenleyin.
- Diziye farklı bit değerleri vererek LED'lerin farklı sırayla yanmasını sağlayın.
- Beş elemanlı bir dizi tanımlayıp elemanlarına 5, 10, 15, 20 ve 25 değerlerini atayın.
- Bir for döngüsü kullanarak bu değerleri sırayla başka bir değişkene aktarın.
Sonuç
Bu derste dizilerin ne olduğunu, dizi elemanlarına nasıl erişildiğini ve for döngüsüyle nasıl kullanılabileceğini öğrendik. Dizi kullanımı, özellikle çok sayıda verinin veya çıkış durumunun kontrol edilmesi gereken mikrodenetleyici projelerinde programı daha düzenli hâle getirir.
Bir sonraki derste PIC16F628A ile fonksiyonları kullanmayı ve programı daha küçük, yönetilebilir bölümlere ayırmayı öğreneceğiz.