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.
Yayım tarihi: 2011/01/29 Etiketler: kılavuz ders, microc döngüler, microc while, mikroc dersleri, mikroc isis, mikroc programlama
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…
evet derslerin devamı gelecek 4. dersi bir kaç gün içinde hazırlayacağım. 14 15 derse kadar ilerlemeyi düşünüyorum
çok iyi o zaman başlıyorum ilk dersten teşekkürler.
4.ders hazır yayın için düzenleme aşamasında. Uğraşanlara kolay gelsin
zahmetli ve güzel bir çalışma olmuş elinize sağlık
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 🙂
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….
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.
main(){
}
yazılmadığı için sayfa derlenmiyor…
Bildiğimden değil çalışmayınca deneye deneye buldum:)
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 ?