Elektronik / Elektronik Kaynakları/

MikroC Dersleri 3

Merhaba elektronik Severler…

Bir önceki dersimizde Proteusun İSİS simulatörü ve C dilinde bize gerek olan Veri Değişkenleri , İşleçler (operatörler) konularını işleyip Program kontrol deyimlerine değindik ilgili programları inceledik.

Bugün Dersimizde DÖNGÜLER konusuna değineceğiz.

Ama önce birkaç önemli not eklemek gerektiğini düşünüyorum. Program geliştirmenin yanı sıra birazda donanım bilgisi gerekiyor.

• PICler 5V sabit gerilimli besleme kaynağı ile beslenmeli.

• PIC Pinlerine doğru(buton) uygulanacak akım SİNK akımı 25mA dir.

• PIC pinlerinden şaseye(toprak)akan akım SOURCE akımı20mA dir.

• Bu akım seviyelerini (Led bağlantısı için) 100 150 Ohm arası dirençle sağlanır.

• Butonların Lojik ir gerilimi sağlama dirençleri( PULL UP) 4.7KOhm ile 10KOhm dirençlerden seçilmelidir.

• Pıc Donanımında Anagol Dijital(ADC) varmı ? karşılaştırıcı Varmı bunları bilmemiz gerek. Bu yapılar varsa ve kullanılmayacaksa programda bu donunımlar kapatılmalıdır.(kapatılmazsa programı olumsuz etkileyebilir.

3.DÖNGÜ YAPILARI

• For
• While
• Do While

Tanım : Döngüler bir programın yada program parçasının keç defa çalışacağını sonsuza kadar mı çalışacağını belirleyeceğimiz yapılardır. Döngüler hemen hemen bütün programların bel kemiğini oluşturur.

3.1 FOR Döngüsü

Kullanım yapısı : For (DöngüBaşlangıçdeğeri; DöngüBitişDeğeri; ArtışVeyaAzalışMiktarı) {Buraya Maddeler halinde Yapılacak işlemler yazılır;}

Yukarıdaki yapının çalışması için {} parantezlere ve ; Noktalı virgüllere dikkat edilmelidir.

Programalarımızda For döngüsünü sıklıkla kullanacağımız için iyi öğrenilmesi gerekmektedir ve en esnek kullanımı olan döngüdür.

Şimdi For döngüsünü detaylı inceleyelim

Öncelikle döngüde kullanılacak değişkenin tanımlamasını unutmayalım programın başında i gibi bir değişken tanımlayalım

10 Ledle yürüyen ışık program parçasını yazalım ve bilmediğimiz bit kaydırma işlemini de görelim

Unsigned int  i;
for(i=1;i<1024;i=i*2)
{
PORTB=i;          İ değişkeninin değerini PORTBde göster (ilk (bitini)
PORTA=i>>2;   İ değişkeni 2bit sağa kaydırılarak son 2biti PORTA da gösterilir.
Delay_ms(500);  500 milisaniye bekle.
}

Programımızı incelersek i sayısı 1 den başladıtıldı i sayısı 2 ile çarpılıp tekrar i içine yazıldı Ve for içine girildi i değeri 1 dir ve PortBde 1 görüldü tekrar For döngüsüne gidildi 1*2 =2 olan i 1024 den küçük olduğu için 2*2=4 i içine yazılır ve 2 değeri PORTBdegösterilir 500ms beklenir bu işlem 1024den küçük olana kadar devam edilir ve döngü sonlanır.

PORTA=i>>2; Burada kullanılan bit kaydırma işlemi İ değerinin bit sayısı 8bit i geçince yani 256,512, sayıları 9bit ve 10bit olduğundan PORTB ye sığmayacağından son iki bit i PORTA da gösterilir.

Yukarıda ele aldığımız Programın sonsuza kadar çalışmasını istiyorsak program parçasını

For(;;)

Bu yapı sonsuz döngüdür.

{ yukarıdaki programı buraya yazmalıyız }

Yapısı içine yerleştirmeliyiz.

3.2. WHİLE Döngüsü

While (şart ifadesi)

{
Burada şart sağlandığı sürece komutlar çalıştırılır;
}

While ile forla yapılan döngüler yapılabilir ancak kullanımı for kadar esnek değildir.

i=1

While (i < 1024)
{

PORTB=i;
PORTA=i>>2;
Delay_ms(500)
i=i*2;
}

For ile yapılan yazılımın While döngsü ile yazımı üstteki gibidir.

While ile sonsuz döngü

While(1)

{
Buraya program parçasını yerleştiriniz;
}

Şeklinde yapılır.

3.3. do while Döngüsü While döngüsü ile aynı şekilde kullanıma sahiptir ancak bir farkı vardır o da şart sağlansa da sağlanmasada döngü 1 kez (program ilk çalıştığında) çalışır

i = 100;
do {
PORTB=i;
i++; bu kullanım i değişkenini 1 artırır yani i=i+1; ile aynıdır
} while ( i > 200 );

Başlangıçta i 100 dür do ( yap ) PORTB=i; i gösterilir i 1 artırılır Döngü şartı sağlanıyorsa döngü devam eder programda i 200den küçük olduğu için tekrarlanmaz.

Evet kıymetli elektronik sever öğrencilerim Bu günlük dersimiz buraya kadardı. Yukarıdaki döngüleri kendiniz basit programlar üzerinde deneyin. Gelecekdersimizde bu örneklere yar vereceğiz. Takıldığınız yerde iletişimi geçin.

İyi ÇALIŞMALAR.

Sponsorlu Bağlantılar
  1. Hakan 2011/02/18
  2. aytaç dürgen 2011/02/18
  3. Hakan 2011/02/21
  4. aytaç dürgen 2011/02/22
  5. hakan 2011/03/06
  6. ZKAN 2011/03/30
  7. emre 2011/04/30
  8. Turgay 2011/11/18
  9. djmln 2013/03/08
  10. Ruzgar 2013/08/21

Yorum

Soru: