Branch - Branchl
Tarih : 12 Ekim 2009
Yazar : Zafer AKBAY
BRANCH indeks,[Etiket{,Etiket...}]
BRANCH: Programın indeks değerine göre farklı yerlere gitmesini sağlar. İndeks 0 ise program ilk etikete dallanır, 1 ise 2 nci etikete gibi. Branch komutu ile en fazla 255 etiket kullanılabilir.
İndeks değerinin etiket sayısından büyük olduğu durumlarda hiçbir şekilde etiketlere dallanma yapılmayacak ve program bir sonraki satırdan devam edecektir.
Etiketlerle belirtilen kodların Branch fonksiyonu ile aynı kod sayfasında olması gerekir. Eğer bundan emin değilsek BRANCHL komutunu kullanmalıyız.
BRANCHL indeks,[Etiket{,Etiket...}]
BRANCHL: (Branch Long) Branch komutu ile farklı kod sayfalarındaki etiketlere dallanmak gerektiğinde BRANCHL kullanılır. PIC16F84, 16F628 gibi tek kod sayfası olan işlemcilerde Branch komutunu kullanmak yeterli olacaktır. Branchl fonksiyonu ile en fazla 127 etiket kullanılabilir.
Örnek:
=======================================================
'---------------------------------
'BRANCH ve BRANCHL komutları
'Zafer AKBAY
'12 Ekim 2009
'www.picpro.org
'---------------------------------
TRISB = $0F 'portb üst 4 bit led çıkışı, alt 4 bit buton girişi olarak ayarla
PORTB = 0
option_reg.7 = 0 'pull-up aktif
Butonbilgi var byte
butonbilgi = 0
Basla:
if portb & $0F = $0F then butonbilgi = 0 'butonlar bırakıldıysa buton bilgisini sıfırla
if portb.0 = 0 then butonbilgi = 1
if portb.1 = 0 then butonbilgi = 2
if portb.2 = 0 then butonbilgi = 3
if portb.3 = 0 then butonbilgi = 4
BRANCH butonbilgi,[sondur,yak1,yak2,yak3,yak4]
goto basla
sondur:
portb = 0
goto basla
yak1:
portb.4 = 1
goto basla
yak2:
portb.5 = 1
goto basla
yak3:
portb.6 = 1
goto basla
yak4:
portb.7 = 1
goto basla
end
=======================================================