11 Ocak 2011 Salı

1.4 Port Yazmacı (devam 5) (Port Register)

Prg: 10

            Device = 16F877
XTAL 4

TRISB=0
TRISD=%00000111

Dongu:
    If PORTD.0 = 1 Then PORTB.0=1
    If PORTD.1 = 1 Then PORTB.0=0
GoTo Dongu

      End


If komutu bir koşul sağlanıyorsa gereğini yapmak için kullanılmaktadır. Bazı durumlarda Else kullanılmayabilir. Örneğin “IF PortD.0 = 1 Then PortB.0=1” şeklinde programa satır yazılırsa sadece şartın sağlanması kontrol edilmektedir. Ayrıca şart sağlandığında ise sadece bir işlem yapılmaktadır.

Prg: 11

Device = 16F877
XTAL 4

TRISB=0
TRISD=%00000111

Dim Var1 As Word
Var1=0

Dongu:
    PORTB=Var1
    Var1=Var1 +1
   
    If Var1>=100 Then Var1=0
    DelayMS 200   

GoTo Dongu
     End


Yukarıdaki örnekte Var1 değişkeninin değeri programın her dönüşünde 1 artmaktadır. Eğer Var değişkeninin değeri 100’e eşit veya 100’den büyük olursa Var değişkeninin değeri tekrar 0’lanır.

Prg: 12
           Device = 16F877
XTAL 4

TRISB=0
TRISD=%00000111

Dim Var1 As Word
Var1=0

Dongu:
    If PORTD.0=1 Then
        If Var1<100 Then Var1= Var1 + 1
    EndIf
    If PORTD.1=1 Then
        If Var1>1 Then Var1= Var1 - 1
    EndIf
    If PORTD.2=1 Then Var1=0   

GoTo Dongu

End


Eğer PortD.0 bacağı 1 ise (yani butona basıldı ise)
     Ve Var1 değişkeninin değeri 100’den küçükse Var1’in değerini 1 arttır

Eğer PortD.1 bacağı 1 ise
     Ve Var1 değişkeninin değeri 1’den büyükse Var1’in değerini 1 azalt

Eğer PortD.2 bacağı 1 ise Var1 değişkeninin değeri 0’lanır.

Yukarıdaki örnekten de anlaşılacağı gibi if önermeleri arka arkaya veya iç içe de kullanılabilir. Fakat burada önemli bir kural vardır o da önermelerin birbirini kesmemesidir. Soldaki önerme yapısı doğru sağdaki önerme yapısı ise yanlıştır.


Şekil 8

Yukarıdaki yapı önermelerin program içinde nasıl yerleştirileceğini göstermektedir. Soldaki çizimde if önermelerinin birbirini kesmeden nasıl iç içe yerleştirileceğini göstermektedir. Bu doğru bir program yazım akışıdır. Fakat sağdaki önerme grubuna bakarsanız içte birbirini kesen önermenin varlığını göreceksiniz. Bu yanlış bir yazılım dizilimidir. Bu yazılım dizimi aslında tüm program yazım yapıları için geçerlidir. For Next döngüsü, While Wend döngüsünde de döngülerinin birbirini kesmemesine dikkat etmek gerekmektedir.

Hiç yorum yok:

Yorum Gönder