Geçen dersimizde 10.satıra kadar ki kodları açıklamış ve buradaki ifadelerin kullanımı ile ilgili bilgiler vermiştik. Ve şunu söylemiştik: buraya kadar yazılan şeyler asıl programımıza yapılan birer hazırlık safhasıdır.

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. }

Şimdi o zaman geçelim asıl programımıza:

11.satır: burada WHILE () komutunu görüyoruz. Bir döngü komutudur. Parantez içindeki şart sağlandığı sürece döner durur. Ve bu da tıpkı programımızın başında olduğu gibi hakemin düdüğüyle yani “{” işareti ile başlar. Komutun söz dizilimi:


While (şart ifadesi)
{
Burada şart sağlandığı sürece komutlar çalıştırılır.
}


Bakınız, mesela:

i=1
While (i < 6)
{

Yazdır “hasan”
i=i+1;

}

Programında, örneğin C dilimizde “Yazdır” diye komutumuz olsaydı. Şu yukarıdaki satırlardan sonra ekranda 5 kere hasan ifadesi yazılmış olacaktı. Çünkü en başta “i” nin değeri 1 iken While döngüsü içinde her seferinde 1 artıyor, 2,3,4,5 oluyor. 6 olunca artık While döngüsünün şartı bozuluyor ve “}” (hakemin bitiş düdüğü) ifadesinin altından program devam ediyor.

While döngüsünü anlattıktan sonra Kendi programımıza geri dönersek buradaki

While(1) ifadesi parantez içindeki şartı devamlı doğru olduğundan bu sonsuz bir döngü oldu.

13.Satırdaki for () ifadesi aynı While() ifadesi gibi bir döngü komutudur. Aynı işi yaparlar. Yani parantez içindeki şart sağlandığı müddetçe “başla” ve “bitir” { } parantezleri arasındaki komutlar icra edilir.

Söz dizimi:


For(başlangıç değeri; bitiş değeri; artış değeri)
{

Buraya İcra edilecek komutlar yazılır.

}


FOR döngüsü WHILE ile aynı görevi görse de daha esnek olduğundan While göre daha sık kullanılır. Yukarıdaki programdaki komutumuzu ele alalım:

for (i=1;i<129;i=i*2)

{
PORTB=i;
delay_ms(100);

}

“i” değerim 1 den başlayarak 129’dan küçük olduğu sürece aşağıdaki komutları icra et. Ve i değerini de her döndüğünde 2 ile çarp yani ikiye katla.

Aşağıdaki komutlarda ne var peki?

PORTB=i;
delay_ms(100);

i değerini PORTB’ye ata. Yani PORTB’de göster. Ve 100 mili saniye gecikme yap.

İlk başta “i” değişkenimin değeri 1 di. Yani PORTB=1 oldu. Yani PORTB=00000001 oldu Yani birinci Led yandı. Döngünün başına dönünce döngüdeki i=i*2 ifadesinden ötürü i=2 oldu. 129 dan küçük olduğundan aşağıdaki komutları yeniden icra edecek yani:

PORTB=2 oldu yani PORTB=00000010 oldu yani İkinci Led yandı.

Tekrar başa döndük. Yani FOR satırına döndük. “i” tekrar 2 ile çarpıldı. i=2 idi şimdi i=4 oldu ve 129 ile karşılaştırıldı. 129’dan küçük olduğu için şart sağlandı. Aşağıdaki komutlar tekrar icra edildi:

PORTB=4 oldu yani PORTB=00000100 oldu. Yani Üçüncü led yandı.

Böylece bu adımlar süregelecek her seferinde bir sonraki led yanacak. 2 ile çarpıla çarpıla “i” değeri en son 128 olacak. 129 ile karşılaştırıldı ve yine küçük olduğu için aşağıdaki komutlar icra edilecektir:

PORTB=128 oldu yani PORTB=10000000 oldu yani 8.pindeki led yandı.

Şart son kez sağlandığı için yani i=256 olduğu dolayısıyla 129’dan büyük hale geldiği için FOR döngüsünün bitiş düdüğü “}” çaldı. Döngüden çıktık ve aşağı satırlara devam ettik.

19.satırdaki “}” ifadesi While komutunun bitişi,

20.satırdaki ise tüm programımızın bitiş düdüğüdür.

 

Anahtar Kelimeler: Mikrodenetleyici

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