Elektronik / Elektronik Kaynakları/

MikroC Dersleri 3

Sponsorlu Bağlantılar

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.

  • Hakan

    derslerin devamı gelecekmi ? gelecekse mikroc ye başlıyacağım ayrıca hazırladığınız bu güzel dökümanlar için çok çok sağ olun…

  • aytaç dürgen

    evet derslerin devamı gelecek 4. dersi bir kaç gün içinde hazırlayacağım. 14 15 derse kadar ilerlemeyi düşünüyorum

  • Hakan

    çok iyi o zaman başlıyorum ilk dersten teşekkürler.

  • aytaç dürgen

    4.ders hazır yayın için düzenleme aşamasında. Uğraşanlara kolay gelsin

  • hakan

    zahmetli ve güzel bir çalışma olmuş elinize sağlık

  • ZKAN

    Hocam çalışmalarınız çok güzel fakat verdiginiz anlatım örneklerinde
    her satırın karşısına açıklama yaparsanız özellikle yeni başlayanlar için çok iyi olur benim gibi :) yani yazdıgınız bazı satırlarda açıklama yapılamış sanırım bilgimiz varsayılmış, bilenler için sorun olmaz ama benim gibiler çırmalıyor :)

  • emre

    hocam elinize sağlık c++ biliyordum öğrenmem fazla zor olmuyor çalışmalarınız çok güzel derslerinizin devamını görmek dileğiyle….

  • Turgay

    Bir önceki konuda(MikroC Dersleri2) bahsedilen reset devresi ve osilatör devrsinin bağlantısını araştırdım ancak bulamadım.Yardımcı olabilirmisiniz.

  • djmln

    main(){

    }
    yazılmadığı için sayfa derlenmiyor…
    Bildiğimden değil çalışmayınca deneye deneye buldum:)

  • Ruzgar

    Hocam ben pic16f628A’nın isiste sağtarafta bütün bacaklarına led bağladım.Ama A portundan 4tane led sırası ile yanıyor fakat biz 2 bit kaydırmıştık. 2 tanesi yanması gerekmez mi ?