Adım Adım PIC Öğreniyorum – 5
Bu PIC nasil bir şeydir nasıl öğrenilir diyenler için, PIC doktoru yazıyor kaçırmayın! Pic nasıl programlanır bir bakalım.
AKIŞ DİYAGRAMLARI :
Pic Assembler ile bir program yazmadan evvel, pic'in hangi adımlarla programı işleyeceğini planlamamız gerekmektedir.Bu planlama işlemi akış diyagramları ile yapılır.Akış diyagramı işlenecek komutların sırasıdır.Uzun ve karmaşık programlarda, akış diyagramları, hangi seviyeden programın ayrılacağını ve hangi komutları yerine getireceğini, sonra tekrar nereye döneceğini göstermesi nedeni ile faydalıdır. Akış diyagramlarının kendine has sembolleri de vardır.
Bir program yazılırken 3 blok halınde yazılır.Bu bloklar:
1-) Etiket
2-) Komut ( Equate)
3-) Adres
bloklarıdır.
ETİKET : Etiketler iki tiptir. Birinci tipi adres atanan etiketlerdir, ikinci tipi ise adres atanmayan etiketlerdir.Tüm etiketler birinci blok'a yazılır. Adres atanan etiketler EQUATE komutu ile kullanılır veya INC. Dosyası sayesinde tanımlanırlar. Bu etiketler sayesinde tanımlanan registerler, program içinde tekrar tanımlamaya gerek kalmadan kullanılır
PORTB EQU0X06
STATUSEQU0X03
BuradaPORTB ve STATUS Etikettir. EQU komutu ile tanımlanan bu registerler,daha sonra kullanıldığında, hangi adreste olduğu otomatik olarak pic tarafından bilinir. Bir diğer etiket çeşidi ise adres atanmayan etiketlerdir. Adres atanmayan etiketler, pic'in çalışması sırasında döneceği program seviyesini göstermekte kullanılır. Bu etiketler programcı tarafından yaratılırlar.
BASLA
START
DÖNGÜ
Gibi etiketler bu tip etiketlerdendir. Bir kısım adres atanan etiket de, programcı tarafından yaratılır.
SAYAC
Etiketigibi etiketler bu çeşit etikettir. Adres atananbu etiketlerRAM alanına yazılır.Bu etiketleri INC. Dosyası içine ilaveederek Equate tanımlarını yapmadan INC. dosyası ile de kulanılabiliriz.
ETİKET KURALLARI :
1-)Etiketler birinci sütüna yazılır.
2-)Etiketler de ingilizce harf karakterleri kullanılır.
3-)Assembly komutundan etiket olmaz
4-)Etiket en fazla31 karakter olabilir.
5-)Etiket ile prograk içinde kullanımı aynı karakter özellikleri göstermelidir.
6-)Etiket Harf veyaalt çizgi ile başlar.
7-)Etiket içinde alt çizgi,rakam,soru işareti bulunabilir.
ETİKET | KOMUT | ADRES |
STATUS | EQU | H'03' |
TRİSB | EQU | H'86' |
SAYAC1 | EQU | H'0D' |
START | ||
CLRF | PORTB | |
BSF | STATUS,5 | |
GOTO | START |
Burada start etiketiprogramcı tarafından yaratılmıştır ve bir adresi yoktur, bu etikete adres Assembler tarafından atanır ve bunu biz bilemeyiz.
Bir program yazılırkenküçük veya büyük harf seçimi programcıya kalmıştır. Kullanılan karakterler etiket ve adres kısmında aynı olduktan sonra problem çıkmaz. Etiket te PORTB yazıp adres kısmında Portb yazamayız. Bu anlatılanlar EQU komutu kullanıldığında ve register tanımlarının programcı tarafından yapıldığında geçerlidir. Eğer INC. Dosyası kullanılacaksa dosya içi karakterler ile programcının yazı karakterleri aynı olmalıdır. Yani INC. dosyası içinde bir etiket büyük harf ile yazılı ise,programcı program içinde bu etiket kullanmak gerektiğinde büyük harf kullanmalıdır.
BİNARY ve HEXADECİMAL SAYILAR :
Bilgisayar sistemlerinde sık kullanılan ikili (binary ) ve 16 lı (hexadecimal ) sayı sistemlerine de kısaca göz atalım:
0 ve 1 kullanarak sayıları ifade etmek mümkün müdür ? Günlük hayatta en çok kullanılan 10 tabanına göre aritmetiktir. Burada 10 sembol ile sayılar oluşturulur bunlar :
1 2 3 4 5 6 7 8 9 0 sembolleridir.Bu semboller ile ifade edilen bir çokluğu yalnızca iki sembolle veya 16 sembollü bir sistemle de ifade edebiliriz.İki sembol söz konusu ise Binary 16 sembol söz konusu ise Hexadecimalaritmetik ten bahsedilir. Binary sistemin sembolleri
0 1
Hexadecimal sistem sembolleri ise:
0 1 2 3 4 5 6 7 8 9 A B C D E F dir.
10 lu sistemdeki bir sayıyı binary sayı sisteminde yazmak için, bize kolaylık sağlayan şu tabloyu göz önünde tutalım.
2^0 =1
2^1 =2
2^2 =4
2^3 =8
2^4 =16
2^5 =32
2^6 =64
2^7 =128
2^8 =256
10 lu sistemdeki bir sayıyı binary 'e çevirirken, busayıyı oluşturan ,ikinin katları şeklinde yazılabilen sayıları büyükten küçüğe doğru toplarız, burada ikinin her üs sayısı kullanılmalıdır.Bir üs şeklinde ifade edilemiyorsa 0X şeklinde yazılır.Örnek :
255 sayısını iki tabanına göre yazalım.
128 + 64 + 32 + 16 + 8 + 4 +2 +1 sayılarının toplamı olarak yazılır bu da:
1X2^7+1X2^6+1X2^5+1X2^4+1X2^3+1X2^2+1X2^1+1X2^0olarak yazılabilir.
Burada dikkat edilmesi gereken nokta kımızı olarak gösterilen2 nin tüm üs lerinin sıra ile kullanılma zorunluğudur, bu sıralama büyükten küçüğe doğru olacaktır.Çarpım dan evvel olan katsayılar ikili sistemde yalnız 0 veya 1 olabilir,burada hepsi birdir.Sonuç olarak da 255 sayısının binary karşılığı,baştaki katsayılar yanyana konarak bulunur.
11111111 ( 8 tane 1 dir ).
ÖRNEK 2 :
129 sayısını aynı şekilde yazalım :
128 + 1 dir
Burada 128 den başlayarak ikinin üs 'sü şeklinde tüm üsleri kullanarak129 sayısını elde edelim.
1X2^7 +0X2^6+0X2^5+0X2^4+0X2^3+0X2^2+0X2^1+1X2^0
Binary karşılığı" 10000001"olarakbulunur.Bu şekilde 8 bit ile 256 ya kadar olan sayıları binary olarak yazabiliriz bunun yetmediği ha
llerde 12 bitle 2^12 =4096 veya 16 bitle 2^16=65536 ya kadar sayıları ifade edebiliriz.
HEXADECİMAL SİSTEM :
16Sembol setinden oluşan bir sistemdir.Elemanları:
0 1 2 3 4 5 6 7 8 9 A B C D E F dir.
Burada decimal 10 sayısına A karşılık olarak gelmektedir, F de 15'e karşılık olur.0 ile birlikte 16 sembol içeren bu sayı sistemi hexadecimal sayı sistemidir,bu simgeler 12 li sayı sisteminde X=10 ve Sigma=11 dır.
Bir sayının Hexadecimal karşılığını bulmak için, binary de yaptığımız işlemi yaparız.
16^0=1
16^1=16
16^2=256
16^3=4096
16^4=65536
16^5=1.048.576
Binary sistemde 8 basamaklı 255 sayısını, hexadecimal sistemde iki basamak ile elde ederiz.
256 sayısı hexadecimal olarak
1X16^2+0X16^1+0X16^0 demektir"100 "olarak yazılır.
255 sayısı için
15X16^1+15X16^0 burada 15. karakter F olduğu için " 255 "decimal " FF "Hexadecimal
olur.
EQUATES : EQU komutu program yazımının başında INC. dosyası kullanmadığımızda registerler adreslerinin tanımı için kullanılır.EQU komutu ile register'in bir sabitten olusan adresi tanımlanır veya bizim yarattığımız bir file register için bir adres atanmasında kullanılır.
Bir sabit veya bir isim Equ komutu ile tanımlanabilir.
MAX EQU3; 3 rakamı nın adı MAX olsun,-bit yönlendirmeli komutla kullanıldığında bu sabit 3.bit'e karşılık olur-.
FLAGSEQUH'09'; h'09' da flgs diye bir file register olsun
BSFFLAGS,MAX; flags registerinin 3.bitini 1 yap
SABİTLER : Bir register adresini tanımlamada kullanılan bir haxadecimal sayıdır.En çok MOVLW komutu ile kullanılır ve bir sabiti Write registere yazar.Sabitlerle kullanılan komutlar ileride verilecektir.Desimal sayılar da sabit olarak kullanılır.
ORG : Program başlangıç adresini göstermek için veya interrup alt program başlangıcını göstermek için kullanılır.
END : Program komutlarının sona erdiğini Assembler'e gösterir,olmazsa derlemede hata mesajı verilir.
SAYILAR :
Hexadecimal sayılar birkaç şekilde yazılabilir
0X06
6
06
06h
h'06'
Biz program yazarkenH'FF' şeklindeki ifadeyi kullanacağız.
Binary sayılarB ile ifade edilirlerB '11111111' tarzında yazılırlar.
Decimal sayılar D ile ifade edilirlerD'255' şeklinde yazılırlar.