PIC Assembly Genel Komutlar

2 Ağustos 2010 Pazartesi

Bu yazımda size PIC için gereken genel komutlarımızdan bahsedeceğim.

Her PIC yazmaya başladığımızda üst tarafta hangi PIC te yazacağımızı belirtmek amacıyla LIST P= komutunu kullanırız.Örneğin biz PIC16F628A ile işlem yaptığımız için LIST P=16F628A şeklinde yazılmaktadır.

PIC'te banklar bulunmaktadır.Bu banklarda hex cinsinden adresleri vardır.Bu adreslerde de bizim atayacağımız ve önceden atanmış değişkenler vardır.(bknz:PIC16F628A RAM Memory )
Bu banklar arası geçişi yapmak içinde BANKSEL komutunu kullanırız.
Biz PIC'te bir değişkeni bir yere atamak için EQU komutunu kullanırız.Örnek kullanımı:
PORTB EQU 0x06 Burada ki "0x06" hex değerinde yazılmış adresimizdir.Biz PORTB yi Banklarımızda ki 06h'ye oturttuk.Artık orası PORTB'nindir :)

PIC'te temizleme işlemlerini CLRF ile yaparız.Örneğin;
CLRF PORTB yazdığımızda PORTB nin içeriği sıfırlanmaktadır.

Elektronikte 1 ve 0 kavramları vardır.Örneğin küçük bir Led'in yandığı duruma 1,sönük olduğu konuma da 0 deriz.Yani genellemek olursa enerji varsa 1,yoksa 0'dır.

Şimdi PIC'te bu 1 ve 0 ı kullanabileceğimiz iki komut göstereceğim.

İlk komutumuz kendine verilen değeri 1 yapıyor.Komutumuzun adı BSF(Bit Set F) Örnek kullanımı; BSF PORTA,2 ; PORTA'nın 2.bitini 1 yap.

Diğer komutumuzda BCF ( Bit Clear F ).Örnek kullanımı;
BCF PORTB,4 ; PORTB'nin 4.bitini 0 yap.
PORTB4 nin 4 bitinde bir motor çalışıyor farzedelim.Bu komutu yazdığımızda motor duracaktır.

Şuraya git dediğimizde gidebilecek bir komutumuzda var tabi ki.Oda GOTO
Bu komutcuk daha çok DONGU'lerde kullanılmaktadır.Örnek kullanımı;
DONGU

GOTO DONGU


Gördüğünüz gibi bir sonsuz döngü oluşturduk.

Birde istediğimizi çağırabilmek için CALL komutu kullanırız.Örnek kullanımı;

CALL DONGU gibi.

BTFSC ( Bit Test F,Skip if Clear ) : Bu komuta söylediğimiz biti test eder,eğer bu test ettiği bit "0" ise bir sonraki komuttan devam eder.
Örnek kullanımı;

BTFSC PORTB,5

GOTO DONGU

MOVLW h'FF'

Buranın açıklaması şöyle: PORTB'nin 5. bitini test et eğer bu bit 1 ise GOTO DONGU satırına git.Eğer 0 ise de MOVLW h'FF' satırına atla.

BTFSS ( Bit Test F,Skip if Set ) :
Bu komuta söylediğimiz biti test eder,eğer bu test ettiği bit "1" ise bir sonraki komuttan devam eder.
Örnek kullanımı;

BTFSS PORTA,1

GOTO DONGU

MOVLW h'06'

Buranın açıklaması da şöyle: PORTA'nın 1. bitini test et eğer bu bit "1" ise MOVLW h'06' satırına atla.Eğer 0 ise de GOTO DONGU satırına git.

INCF(INCrease F) : F değerinin içerini 1 attırır.

INCF h'06' ; h'06' INCF komutuyla h'07' oldu.

INCFSZ ( Increment f, Skip if Zero ) : F'teki içeriği 1 attırır,içerik 0 sa bir sonraki komutu atlar.

INCFSZ f,d şeklinde kullanılmaktadır.Buradaki d sonucumuzun nereye yazılacağını belirtir.eğer bu 0 ise W saklayıcısına 1 ise F in içerisine yani kendisine atılır.
Örnek kullanımı;

INCFSZ SAY,1

SAY=h'08' olduğunu farzedelim. INCFSZ komutumuzla içeriği 1 attırarak h'09' olarak yeni değerimizi aldı.Şimdi bu sonucu nereye atacak?
Yukarıda da belirttiğimiz gibi eğer 1 ise SAY'ın içerisine 0 ise de W saklayıcısına atacak.

DECF (DECrement F ) : F'in içeriğini 1 azaltır.

DECFSZ (DECrement f,Skip if Zero) f,d : F içeriğini 1 azaltır,içerik 0'sa bir sonraki komuta atlar.

Aklıma şimdilik bu kadar geldi.Bu yazıyı aklıma geldikçe güncelleyeceğim.Siz de yorum yazarak belirtirseniz yazıma ekleyebilirim :]

3 yorum:

Leon4rdo dedi ki...

Harika bilgiler yücel bende yeni başlıycam assembly ilemi başlasam die tereddütte kalıyordm kodlar değişiyor her pic de ama MPASM de sabit sanırım herşey .s ??? yanılıyormuyum?

yucel dedi ki...

Merhaba Leon4rdo,
PIC serisinin genelinde Mantık ve komutlar aynıdır.Sadece PIC yeni seriler çıktıkça yeni komutlar ve bir sürü komutun yapabildiği işlevi tek komutla yapılabilir hale geliyor Bu da güzel birşey tabiki.
Tavsiyem PIC ile başlaman.MPLAB ile gelen MPASM'de zaten her türlü PIC serisi bulunmakta.Ayrıca; Aslında PIC denen şey Microchip firmasının yayımladığı bir mikrodenetleyiciden başka birşey değil.Temelde Assembly var,umarım yararlı olmuştur.
Kolay Gelsin,

Leon4rdo dedi ki...

Harika oldu kardeşim :) Şu sınavlarım bitsin mantığı tamamen oturttum mikrişlemci dersi sayesinde.Ben özgür bu arada :D PicAssembly e artk başlama zamanım geldide geçiyo bile php vs para kazandırmıyor.

Yorum Gönder