Sunteți pe pagina 1din 3

Assembly Programlama-0

Aslında assembly programlama sanıldı ından daha kolay bi eydir. Burada assembly ile nasil PIC mikrokontrolcü
programlandı ını ö renecez. Önce www.microchip.com sitesinden MPLAB IDE download edip kuralım. imdi de kullanmak
istedi imiz çipin ( burada 16f628a ) datasheet'inide indirip bi güzel göz attıktan sonra devam edebiliriz.

Önce örnek bir assembly programına göz atalım:

list p=16f628a
#include p16f628A.inc
sifir equ 0x00
cblock 0x20
var1 ;hiz
var2 ;zaman
endc
org 0x0000
goto basla
org 0x0004
goto kesme
basla:
.
call fonk
.
.
kesme:
.
.
.
retfie
fonk:
.
.
.
return
.
.
.
end

imdi parça parça açıklayacam


list p=16f628a
Burada kullandı ımız çipi tanımlıyoruz.

#include p16f628.inc
Burada kullandı ımız çipe ait bazı tanımlama bilgilerini dosyamıza ekliyoruz. E er bu dosyayı bulup notepadle açarsanız
içinde
sifir equ 0x00
gibi birçok ifadenin oldu unu görürsünüz. equ deyimi sizin yerinize bir ifadenin yerine ba ka bir ifadeyi koymanızı sa lar. Yani
siz kendinize göre anlamlı ancak assemblera göre anlamsız bir ey yazmak isterseniz equ, yazdı ınız ifadeyi assemblerin
anlayaca ı bir eyle de i tirmenize yarar. Örnek olarak p16f628.inc dosyasındaki
STATUS EQU H'0003'
satırını alalım. h'0003' STATUS adlı registerin adresidir. ( Datasheete baktık ama di mi? ) Ancak 0x03 gibi bir sayı bizim için
fazla bir anlam ta ımayaca ı gibi programdaki hataları ayıklarken zorlanmamıza sebep olacaktır. Üstteki ifadeyle her
STATUS kelimesini H'0003' ile de i tiriyoruz. Benzer ekilde örnek programımızda her sifir kelimesini 0x00 sayısıyla
de istiriyoruz.
Aman dikkat! MPLAB büyük küçük harf ayrımı yapar. STATUS ile status aynı ey de ildir mesela.

cblock 0x20
var1 ;hiz
var2 ;zaman
endc
Bu ifade ile register hafızasında 0x20 adresinden itibaren degi kenlerimiz için yer tutuyoruz.
; i areti assembler için gözardı etmesi gereken eyleri belirtir. Bu sayede kodumuzu içine asssemblerı kızdırmadan tek
satırlık açıklamalar ekleyebiliriz. endc ile de i kenleri tanimlamayı bitirdi imizi belirtiyoruz.

org 0x0000
te asıl koda yava tan geldik.
lemciye her reset attı ımızda ilk olarak 0x0000 adresindeki komutla mesaiye ba lar. Bu adrese reset vektörü denir. ( bkz.
Datasheet ). org yazdı ımız kodun hangi adresten itibaren hafızaya yerle mesi gerekti ini assemblera anlatmak için
kullanılır.

goto basla
Datasheet ve MPLAB help dosyaları isteseniz de istemeseniz de sizin en büyük yardımcınızdır. Bir komutun ne i e yaradı ı
en güzel oralarda yazar. Ancak algoritmaların içinde ne i e yarayaca ı konusunda yardımcı olmaz. ( Bu yüzden gecenin bi
vakti oturup bunu yazıyorum :-) ). Komutun anlamı basla yazan yere zıplamaktır.

org 0x0004
goto kesme
Interrupt (kesme) demek i lemciye i ini gücünü bırakıp ba ka bi ey yapmasını söyleyen olay demektir. Çok çe itli kesme
kaynakları vardır. ç saatin 0xFF de erini geçmesi, belli bir pin grubundaki girdinin de i mesi... Bu olaylardan herhangi biri
oldu unda i lemci ilk i kaldı ı yeri bi kenara not edip 0x0004 adresine zıplar. ( Interrupt vektörü ) Buradaki komutu çalı tırır
ki bu komut genelde daha ferah bir yere zıplama komutu olur.

basla:
.
.
call fonk
.
.
.
kesme:
.
.
.
te zıplama noktaları. : ile biten kelimeler sadece zıplanacak noktalara ad vermeye yarar.
Bir de call fonk diye bir komut var. Bu da goto benzeri bir komut. Farkı, programın zıpladı ı yerden geri dönebilmesine
olanak tanıması. Donanımsal ayrıntılar için datasheete bakmanızı tavsiye ederim, çok önemli ayrıntılar yazıyor orada :-).

retfie
Kesme, i ini bitirdikten sonra kumandayı ana programa bırakır. Bu i de yukardaki komutla yapılır. Ana program kaldı ı
yerden devam eder. Ancak bazı eyleri bıraktı ı gibi bulamayabilir ve kızabilir. Bu sebeple kesme fonksiyonunun ortalı ı
toparlayacak komutları içermesi gerekir. ( MPLAB IDE templatelerinde nasıl yapılabilece inin örne i var )

fonk:
.
.
.
return
te call ile ça ırılan fonksiyonumuz. return komutu ile ça ırılan yere geri dönüyoruz.

end
Assemblera komutların bitti ini anlatmaya yarar.
Hazırlayan: Görkem Demirta
ikayetler e1448596@ceng.metu.edu.tr adresine...

S-ar putea să vă placă și