PIC Assembler programlama dili
Güncelleme 16/08/2024
ASSEMBLER PROGRAM YAZMAK
Assembler programı üç kısımdan oluşur;
1-GİRİŞ BÖLÜMÜ
Bu kısımda pic numarası ve konfigürasyon bit düzenlemesi tanımlanır. Derleme işleminde kullanılacak .INC uzantılı gibi dosyalar belirtilir. Aşağıda giriş örnek programı verilmiştir.
;Bu program 07/OCAK/2004 tarihinde yazılmıştır. |
LIST P=16F84 |
INCLUDE “P16F84.INC” |
__CONFIG _CP_OFF &_WDT_OFF &_PWRTE_OFF &_XT_OSC |
; noktalı virgül:
Noktalı virgülden sonra açıklama, programın adı, yazım tarihi gibi bilgiler eklenebilir. Bu bilgilerin program akışıyla bir ilişkisi yoktur.
LIST P=<pic adı>:
LIST ‘den sonra kullanılacak olan pic’in adı yazılır. Biz PIC16F84 kullanacağımız için burası değişmeyecektir.
INCLUDE <”dosya adı>”:
Picler için hazırlanmış özel amaçlı kaydedici (SFR) gibi RAM hafızayla ilgili bazı adres tanımlamalarının bulunduğu dosyadır. Derleme sırasında, derleyici program MPASM.exe bu dosyayı kullanır.
Konfigürasyon Bitleri:
Konfigürasyon bitleri program hafızasının 2007h adresine yerleştirilmiştir. Sadece programlama ile değiştirilebilir.Aşağıda belirtilen işlevlere sahiptir.
_CP_ON :Program, hafızaya kod korumalı olarak programlanır.
PIC16F84 ‘den okunamaz, silinebilir.
_CP_OFF :Program, hafızaya kod korumasız olarak programlanır. PIC16F84 ‘den okunabilir, silinebilir.
_WDT_OFF :WDT sayıcısı çalışmaz.
_WDT_ON : WDT sayıcısı aktif haldedir.
_PWRTE_ON :PWRT özelliği aktif. (Bu konu önceki ünitelerde anlatılmıştır)
_PWRTE_OFF :PWRT özelliği aktif değil.
_XT_OSC :Kristalli osilatör kullanılacağını ifade eder.
_XT_RC :RC tip osilatör kullanılacağını ifade eder.
_XT_LP :Düşük güçlü tipte kristalli osilatör kullanılacağını ifade eder.
_XT_HP :Yüksek güçlü tipte kristal veya rezenatörlü osilatör kullanılacağını ifade eder.
2-DEĞİŞKEN TANIMLAMA BÖLÜMÜ
Program içinde kullanılacak değişkenlerin tanımlandığı bölümdür. Değişkenler 8 bit genişliğindeki genel amaçlı kaydedicilerle tanımlanır. Daha önceki konularda bahsettiğimiz gibi genel amaçlı kaydediciler 0Ch ile 4Farası RAM bölgesinde bulunmaktadırlar. Toplam 68 tane genel amaçlı kaydedici bulunur.
Değişken tanımlamada EQU komutu kullanılır, aşağıda örnek program parçası verilmiştir.
Değişken adı | Komut | Adres | |
SAYAC | EQU | h’0C’ | |
SAYI_1 | EQU | h’0D’ | |
SAYI_2 | EQU | h’0E’ | |
TOPLAM | EQU | h’0F’ | |
………. | …… | …… | |
………. | …… | …… |
Şunu da hemen belirtelim ki GİRİŞ bölümünde INCLUDE “P16F84.INC” tanımlaması yapılmazsa, programlama sırasında kullanılacak özel amaçlı kaydediciler de (SFR) ‘Değişken adı’ kısmında tanımlanmak zorundadır;
Değişken adı | Komut | Adres |
SAYAC | EQU | h’0C’ |
SAYI_1 | EQU | h’0D’ |
SAYI_2 | EQU | h’0E’ |
TOPLAM | EQU | h’0F’ |
STATUS | EQU | h’03’ |
PORTA | EQU | h’05’ |
PORTB | EQU | h’06’ |
TRISA | EQU | h’85’ |
TRISB | EQU | h’86’ |
………. | …. | …. |
3-PROGRAM BÖLÜMÜ
Bu bölümde amacımıza yönelik hazırlamış olduğumuz PIC16F84 komutlarından oluşan kısım bulunur. Program oluşturma ile ilgili dersler ileride verilecektir. Aşağıda örnek bir programım parçası verilmiştir.
BASLA ;BASLA noktası.
INCF PORTB,F ;PORTB=PORTB+1
MOVLW H’00’ ;W ‘ye h’00’ sayısını yükle.
MOVWF SAYI_1 ;W ‘deki sayıyı SAYI_1 ‘e aktar.
MOVLW H’01’ ;W ‘ye h’01’ sayısını yükle.
MOVWF SAYI_2 ;W ‘deki sayıyı SAYI_2 ‘e aktar
CALL GECIKME ;GECIKME alt programına git.
……. …………
……. …………
PIC16F84 ‘E GÖNDERMEK
Program yazımı ve PIC16F84 ‘e gönderilmesi konusunda birçok program bulunmaktadır. Bu işlem daha çok bilgisayar program kullanım bilgisine dayanmaktadır. Örneğin MPLAB programında makine dili programı yazıp, derleyerek PIC16F84 ‘e gönderebilmek mümkündür. Ayrıca yazılan program simülasyon yapmak da mümkündür.
Kitabımızda en basit yöntem gösterilecektir.
1-Note-Pad ‘De Yazım:
NOTEPAD’de komutlardan oluşan programımız yazılır ve “.ASM” uzantılı olarak kaydedilir.
2-Mpasmwın İle Derleme İşlemi:
MPASMWIN.exe programı çalıştırılır ve derlenecek olan asm uzantılı program dosyası browse butonuna tıklanır ve bulunduğu yerden yüklenir. Assembler butonuna basılır.derleme işlemi artık başlamıştır. Ekrana sağdaki küçük pencere gelir. 100% yazan kutudaki renk yeşil ise ; derlemesini yaptığımız programda hata olmadığını gösterir. PIC16F84 ‘e gönderilecek HEX uzantılı dosyamız hazırlanmıştır. Bu alanın rengi kırmızı ise; yazım hataları gibi hatalarımız vardır.HEX dosyası oluşmamıştır.
Şunu belirtelim MPASM.exe program algoritmasındaki yani içeriğindeki mantık hatalarını denetlemez. Komut yazım hataları, adı kullanılmış fakat tanımlanmamış değişken vb döngü adları gibi eksikllikleri denetler.
Örneğin derleme işlemi sonucunda “yuruyen.ASM” isimli bir dosya için dört dosya daha oluşturulur;
yuruyen.LST yuruyen.HEX
yuruyen.ERR yuruyen.COD
Derleme işlemi sonucunda hata oluşmuşsa ERR uzantılı dosyadan yapılan hatalar görülebilir. Bu dosyada hatalara ilşkin çeşitli hata mesajları bulunur.
MPASMWIN.exe programı görünüşü
hatasız derleme hatalı derleme