240 likes | 636 Views
DERS 6 PIC 16F84 PROGRAMLAMA. İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar. KOMUTLAR. Programlamada iki önemli kavramdan bir diğeri ise verilerin işlenmesini sağlayan komutlardır. Bunlar sınıflandırılacak olursa;
E N D
DERS 6 PIC 16F84 PROGRAMLAMA
İÇERİK PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar
KOMUTLAR Programlamada iki önemli kavramdan bir diğeri ise verilerin işlenmesini sağlayan komutlardır. Bunlar sınıflandırılacak olursa; • Aritmetik ve Atama işlem komutları • Yükleme İşlemi: Değişken (register) değerini belirleme (=) • Aritmetik İşlem: Toplama, Çıkarma • Mantıksal İşlem: AND, OR, XOR • İçerik Değiştirme İşlemi: Değişken değerini değiştirme içerik temizle, arttır, azalt, eşlenik al • Bit İşlemleri: Değişken bitini 0 veya 1 yap • Kaydırma İşlemleri: Değişken bitlerini sağa veya sola kaydır • Karar verme işlem komutları • Koşullu Dallanma: Değişken sıfır–herhangi biti 0/1 ise dallan • Diğer işlem komutları • Program Akış Komutları:Dallanma • Mikrodenetleyici Kontrol Komutları
KOMUTLAR Dersin bu bölümünde I. Aritmetik Atama ve İşlem Komutların ne şekilde kullanıldıklarını sırayla inceleyelim…
KOMUTLAR (yükleme işlemi) Değişken (register) değerini belirleme (= işlemi) 0x00 MOVWF W MOVLW sabit 0x4E MOVF 0x4F
KOMUTLAR (yükleme işlemi) Değişken (register) değerini belirleme (= işlemi) MOVLW k : k W MOVWF f : W f MOVF f , d : f d veya d=0 ise f W d=1 ise f f
KOMUTLAR (aritmetik işlem) Toplama, Çıkarma 0x00 W sabit ADDLW, SUBLW sabitile W topla/çıkar Sonucu W akü.’ne gönder 0x4E ADDWF, SUBWF Register ile W topla/çıkar Sonucu herhangi birisine gönder 0x4F
KOMUTLAR (aritmetik işlem) Toplama, Çıkarma ADDLW k : k + W W SUBLW k : k – W W ADDWF f , d : f + W d veyad=0 ise f + W W d=1 ise f + W f SUBWF f , d : f – W d veyad=0 ise f - W W d=1 ise f - W f
KOMUTLAR (aritmetik işlem) ÖRNEK: 0x0C ve 0x0D RAM bellek gözlerinde tutulan iki adet 1B sayıyı toplayan assembler programını hazırlayın. ALGORİTMA 1) X W 2) Y+W ? (bu neden önemli)
KOMUTLAR (mantıksal işlem) AND, OR, XOR 0x00 ANDLW IORLW XORLW sabitve W için and, or, xor hesapla Sonucu W akü.’ne gönder W sabit 0x4E ANDWF, IORWF, XORWF Register ile W and, or, xor hesapla Sonucu herhangi birisine gönder 0x4F
KOMUTLAR (mantıksal işlem) AND, OR, XOR ANDLW k : W and k W IORLWk : W or k W XORLW k : W xor k W ANDWF f , d :f and W d veya d=0 ise f and W W d=1 ise f and W f IORWF f , d : f or W d veya d=0 ise f or W W d=1 ise f or W f XORWF f , d : f xor W d veya d=0 ise f xor W W d=1 ise f xor W f
KOMUTLAR (mantıksal işlem) ÖRNEK: 0x0C RAM bellek gözünde tutulan 1B sayıyının hex gösteriminde 1’ler basamağını hesaplayıp, 0x0D RAM bellek gözünde kaydeden assembler programını hazırlayın.
KOMUTLAR (içerik değiştirme işlemi) Değişken içeriğini temizle, arttır, azalt, eşlenik al 0x00 CLRW W 00000000 W CLRF: register 00000000 COMF: register register DECF: register register-1 INCF: register register+1 0x4E 0x4F
KOMUTLAR (içerik değiştirme işlemi) Değişken içeriğini temizle, arttır, azalt, eşlenik al CLRW : 00000000 W CLRF f : 00000000 f COMF f , d : f d veya d=0 ise f W d=1 ise f f DECF f , d : (f) - 1 d veya d=0 ise (f) - 1 W d=1 ise (f) - 1 f INCF f , d : (f) + 1 d veya d=0 ise (f) + 1 W d=1 ise (f) + 1 f
KOMUTLAR (bit işlemleri) Register’ın herhangi bitini 0 veya 1 yap 0x00 0x4E BCF: register istenilen bit0 BSF: register istenilen bit1 0x4F
KOMUTLAR (bit işlemleri) Register’ın herhangi bitini 0 veya 1 yap BCF f , b : (f ’ nin b. biti) 0 BSF f , b : (f ’ nin b. biti) 1
KOMUTLAR (bit işlemleri) Register ve carry bitlerini (toplam 8+1) sanki bir çember üzerinde sıralılarmışçasına sağa/sola döndür 0x00 MSB LSB Carry y a ş a s ı n F B B y a ş a s ı n F RRF: file register’ın 8 biti ve carry biti bir çember üzerindeler gibi SAĞA döndürülür MSB LSB Carry 0x4E y a ş a s ı n F B a ş a s ı n F B y 0x4F RLF: file register’ın 8 biti ve carry biti bir çember üzerindeler gibi SOLA döndürülür
KOMUTLAR (bit işlemleri) Register ve carry bitlerini (toplam 8+1) sanki bir çember üzerinde sıralılarmışçasına sağa/sola döndür RRF f , d : d=0 ise sağa döndür (f ’in 8 biti + carry) W veya d=1 ise sağa döndür (f ’in 8 biti + carry) f RLF f , d : d=0 ise sola döndür (carry + f ’in 8 biti) W veya d=1 ise sola döndür (carry + f ’in 8 biti) f
KOMUTLAR (bit işlemleri) ÖRNEK: 0x0C RAM bellek gözünde tutulan ve değeri 0-15 olan bir sayının 3 katını hesaplayan assembler programını hazırlayın. ALGORİTMA 1) X W 2) X+W . 3) .
KOMUTLAR (bit işlemleri) SORU: 3 yerine 8 kat hesaplayan program nasıl (ve daha kısa nasıl) gerçekleştirilir? Daha kısa gerçekleştirirken neye dikkat etmek gerekir?
KOMUTLAR (bit işlemleri) Register içerisindeki ilk 4 bit ile son 4 bit yer değiştirilir. 0x00 MSB LSB MSB LSB a b c d e f g h e f g h a b c d SWAPF: file register’ın ilk ve son 4 biti (nibble) yer değiştirilir. 0x4E 0x4F
KOMUTLAR (bit işlemleri) Register içerisindeki ilk 4 bit ile son 4 bit yer değiştirilir. SWAPF f , d:d=0 ise f’in nibble parçaları yerdeğiştirilir W veya d=1 ise f’in nibble parçaları yer değiştirilir f
DERS 6 MİKROİŞLEMCİ PROGRAMLAMA - SON- Kaynak: Mikrodenetleyiciler ve PIC Prog., Orhan ALTINBAŞAK, ISBN 975-883-409-6