17 Mayıs 2014 Cumartesi

PIC 16F877 VE PIC 16F84 KOMUT SETİ


16F84 ve 16F87X ailesinde aynı komut seti kullanılır. Sette 35 komut vardır. Komutlar üç grupta incelenir; bit, byte ve sabit/kontrol işlemleri.


Komut Biçimleri (Formatları)
Genel Komut Biçimleri:
  1. Byte Yönlendirmesi Yapan Kaydedici İşlemleri
(d=0 için hedef W, d=1 için hedef f, f=7 bit kaydedici adresi)

13             8
7
6            0
İŞLEM KODU
d
f (kaydedici)

 
  1. Bit Yönlendirmesi Yapan Kaydedici İşlemleri
(b=3 bit adres, f=7 bit kaydedici adresi)
13           10
9          7
6            0
İŞLEM KODU
b (bit no)
f (kaydedici)

  1. Denetim veya Sabit/Sayısal (literal) İşlemleri
13               8
7           0
İŞLEM KODU
k (sabit)

Yalnızca call ve goto komutlarında kullanılan biçim
13           11
10                 0
İŞLEM KODU
k (sabit)

KOMUTLARIN KULLANILIŞI
ADDLW                      Bir sayı/sabit ile W’nin içeriğini topla
Söz dizim kuralı        : [etiket]       ADDLW         k
İşleçler                   : 0 ≤ k ≤ 255
İşlevi                     : (W) + k à (W)
Status etkisi            : C, DC, Z
Tanımı                    : W’nin içeriğini 8 bitlik k sabiti ile toplar ve sonucu W’ye aktarır.
Örnek:
ADDLW         h’FF’   ; Komuttan önce k=h’FF’ ve W=h’01’ ise,komut çalıştırıldıktan sonra
                            ; W=00h olur. Toplam sonucu, FFh’tan büyük olduğu zaman, elde
                            ; biti, STATUS kaydedicisinin içinde C-Carry bitinde (STATUS, 0)
; tutulur. W kaydedicisinin içeriği (değeri) sıfırsa, status
; kaydedicisinin zero biti de 1 (set zero flag) yapılır.

ADDWF                      Bir kaydedici içeriği ile W’nin içeriğini topla
Söz dizim kuralı        : [etiket]       ADDWF         f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (W) + f à (hedef) 
                               d=0 ise hedef W kaydedicisidir, d=1 ise f kaydedicisidir.
Status etkisi            : C, DC, Z
Tanımı                    : W’nin içeriğini, 7 bitlik f ile toplar ve sonucu; d=0 ise W’ye, d=1
   ise f’ye aktarır.
Örnek:
ADDLW         f,0      ; Bu komuttan önce W=h’10’, f=h’10’ ise komuttan sonra
                            ; W=20h ve f=10h olur. 
ADDWF         f,1      ; Bu komuttan önce W=h’10’, f=h’10’ ise komuttan sonra
; W=10h ve f=20h olur. 

ANDLW                      Bir sayı ile W’nin içeriğine AND (ve) işlemini uygula
Söz dizim kuralı        : [etiket]       ANDLW         k
İşleçler                   : 0 ≤ k ≤ 255
İşlevi                     : (W) AND k à (W)
Status etkisi            : Z
Tanımı                    : W’nin içeriğini k ile AND’le ve sonucu W’ye aktar.
Örnek:
ANDLW         h’01’   ; Bu komuttan önce W=h’01’ ise, komut VE işlemini uygular. Komut
                            ; sonucu W=h’01’ olur. İşlem sonucunda, 0 değeri elde edilirse,                     ; status kaydedicisinin zero biti 1 yapılır.

ANDWF                      Kaydedici içeriğini, W’nin içeriği ile AND’le
Söz dizim kuralı        : [etiket]       ANDWF         f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (W) AND f à (hedef)       
                               d=0 ise hedef W kaydedicisidir, d=1 ise f kaydedicisidir.
Status etkisi            : Z
Tanımı                    : W’nin içeriğini f kaydedicisinin içeriği ile AND’le ve sonucu; d=0 ise
   W’ye, d=1  ise f’ye yükle.
Örnek:
ANDLW         f,0      ; Bu komuttan önce W=h’03’, f=h’07’ ise komuttan sonra
                            ; W=02h ve f=07h olur. 
ANDWF         f,1      ; Bu komuttan önce W=h’03’, f=h’07’ ise komuttan sonra
; W=03h ve f=02h olur. 
Not 1                     : AND işlemi sonucu, h’00’ olsaydı STATUS register’ının 2.biti olan Z
   biti 1 (Set) yapılırdı.
Not 2                     : AND mantıksal işleminin maskeleme özelliği vardır. Mantıksal
  durumunun değişmesini istemediğimiz bitleri, 1 ile AND’lersek,
  diğer bitler 0 olurken maskelediğimiz bitler değişmez.

BCF                            Kaydedicinin belirlenen bitini sıfırla
Söz dizim kuralı        : [etiket]       BCF        f,b
İşleçler                   : 0 ≤ f ≤ 127           0 ≤ b ≤ 7
İşlevi                     : 0 à f(b)
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin b.bitini 0 yap.
Örnek:
BCF    PORTD,0       ; Komutu çalışınca PORTD kaydedicisinin ilk biti 0 yapılır. PORTD’nin                         ; 0.bitine bağlı bir led yanıyorsa, bu komutla söndürülür.

BSF                            Kaydedicinin belirlenen bitini bir (set) yap
Söz dizim kuralı        : [etiket]       BSF        f,b
İşleçler                   : 0 ≤ f ≤ 127           0 ≤ b ≤ 7
İşlevi                     : 1 à f(b)
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin b.bitini 1 (set) yap.
Örnek:
BSF    PORTD,0       ; Komutu çalışınca PORTD kaydedicisinin ilk biti 1 yapılır. PORTD’nin                         ; 0.bitine bağlı bir led yanıyorsa, bu komutla yakılabilir.

BTFSC                                    Kaydedicinin belirlenen biti 0 ise, bundan sonraki komutu atla
Söz dizim kuralı        : [etiket]       BTFSC        f,b
İşleçler                   : 0 ≤ f ≤ 127           0 ≤ b ≤ 7
İşlevi                     : 0 à f(b)
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin b.bitinin 0 olup olmadığı kontrol edilir. Eğer 0 ise
  bu komutun altındaki komut işlemez, bir sonraki komuta sapılır.
  Aksi durumda ise sıradaki komut uygulanır.
Örnek:
Basla
     BTFSC PORTB,0  ; Komut çalışınca PORTB kaydedicisinin ilk bitinin 0 olup olmadığı
; kontrol edilir. Eğer 0 ise komutun hemen altındaki komut işlenmez
; bir sonraki komuta sapılır. Aksi durumda ise sıradaki komut
; uygulanır.
     GOTO Basla        ; PORTB’nin 0.biti 0 değilse işlenecek, tekrar başa dönecek.
     BSF PORTB,1      ; PORTB’nin 0.biti 0 olunca işlenecek, aynı bit bu komutla 1
; yapılacak. Eğer pinde led varsa yanacak. Böylece pinde; bir kare
; dalga (sinyal) oluşur.

BTFSS                        Kaydedicinin belirlenen biti 1 ise, bundan sonraki komutu atla
Söz dizim kuralı        : [etiket]       BTFSS        f,b
İşleçler                   : 0 ≤ f ≤ 127           0 ≤ b ≤ 7
İşlevi                     : 1 à f(b)
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin b.bitinin 1 olup olmadığı kontrol edilir. Eğer 1 ise
  bu komutun altındaki komut işlemez, bir sonraki komuta sapılır.
  Aksi durumda ise sıradaki komut uygulanır.
Örnek:
Basla
BTFSS PORTA,0
GOTO Basla
BSF PORTB,1
BTFSC STATUS,0
BTFSC STATUS,2

CALL                          Altprogramı çağır
Söz dizim kuralı        : [etiket]       CALL            k
İşleçler                   : 0 ≤ k ≤ 2047                 
İşlevi                     : (PC) + 1 à TOS    
                               PC: Program Sayacı (Program Counter)
                               TOS: Yığının üstü (Top of Stack)
                               k à (PC <10:0>)
                               PCLATH <4:3> à PC <12:11>                         
Status etkisi            : Yok
Tanımı                    : Altprogramı çağırır. Önce PC’yi bir artırır ve yığının (stack) üstüne
   koyar. Sonra altprogram adresi PC’nin <10:0> bitlerine yüklenir. 
   PCLATH’ın <4:3> bitlerindeki değerler, PC’nin üst bitleri olan
   <12:11> arasındaki bitlere yüklenir. CALL işlemi iki saat
   çevriminde uygulanan bir dallanma komutudur.
Örnek:
REF1   CALL  Gonder ; Bu komuta gelindiğinde PC bir artırılarak TOS’e konur. TOS’da
 ; REF1’in adresi vardır. Böylece, TOS’te komut uygulandıktan sonra
 ; dönülecek adres oluşturulmuş olur. Bundan sonraki aşamada
 ; PC’ye Gonder altprogramının adresi oluşturulur yani altprograma
 ; sapılır. Altprogram komutları sırası geldikçe uygulanacak
; altprogramı sonlandıran RETURN ile birlikte, TOS’teki değer PC’ye
; geri yüklenecektir ki bundan sonraki komut uygulanabilsin.
; RETURN uygulandığında, TOS’deki adres PC’ye yüklenir.
; PCLATH’ın <4:3> bitleri ise bellek sayfalarının değerini içerdiği için
; üst bitlere yüklenerek altprogramın bulunduğu adrese doğru
; sapılması sağlanır.

CLRF                          Kaydedici içeriğini sil (sıfırla)
Söz dizim kuralı        : [etiket]       CLRF        f
İşleçler                   : 0 ≤ f ≤ 127          
İşlevi                     : h’00’ à f              1 à Z
Status etkisi            : Z
Tanımı                    : f kaydedicisinin içeriği sıfırlanır ve değeri sıfır olduğu için STATUS
   kaydedicisinin zero biti 1 (set) yapılır.
Örnek:
CLRF   TRISD           ;D Portunun yönlendiricisi olan TRISD kaydedicisinin tüm bitleri sıfır
; yapılmıştır. Böylece D portu çıkış olarak belirlenmiştir. TRISD’nin
; sıfırlanması sonucu STATUS kaydedicisinin zero biti de set
; edilmiştir.

CLRW                         W Kaydedicisinin içeriğini sil (temizle)
Söz dizim kuralı        : [etiket]       CLRW
İşleçler                   : Yok           
İşlevi                     : h’00’ à (W)          1 à Z
Status etkisi            : Z
Tanımı                    : W kaydedicisinin içeriği sıfırlanır ve değeri sıfır olduğu için STATUS
   kaydedicisinin zero biti 1 (set) yapılır.
Örnek:
CLRW                    ; W kaydedicisi temizlendi. STATUS kaydedicisinin zero biti de set
; edilmiştir.

CLRWDT                     Watchdog Timer içeriğini sil (temizle)
Söz dizim kuralı        : [etiket]       CLRWDT
İşleçler                   : Yok           
İşlevi                     : h’00’ à WDT         0 à WDT (ön bölücü sabit)
                              1 à TO       1 à PD
Status etkisi            : TO, PD
Tanımı                    : W kaydedicisinin içeriği sıfırlanır ve değeri sıfır olduğu için STATUS
   kaydedicisinin zero biti 1 (set) yapılır.
Örnek:
CLRWDT                 ; Komut uygulanmadan önce WDT’nin içeriği ne olursa olsun, komut
; çalıştırıldıktan sonra WDT sayacı ve ön bölücüsü 0’lanır (reset).
; Aynı zamanda TO, PD (Time Out ve Power Down) bitleri 1 olur.

COMF                         Kaydedici içeriğinin tersini (komplementini) al
Söz dizim kuralı        : [etiket]       COMF           f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : f à (hedef)
Status etkisi            : Z
Tanımı                    : f kaydedicisinin içeriği terslenir ve d=0 ise sonuç W’ye, d=1  ise
  f’ye yüklenir.
Örnek:
COMF           f,0      ; Bu komuttan önce W=h’02’, f=h’01’ ise komuttan sonra
                            ; W=h’FE’ ve f=h’01’ olur. 
COMF           f,1      ; Bu komuttan önce W=h’02’, f=h’01’ ise komuttan sonra
; W=h’02’ ve f=h’FE’olur. 

DECF                          Kaydedici içeriğini bir azalt
Söz dizim kuralı        : [etiket]       DECF            f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f) - 1 à (hedef)  
Status etkisi            : Z
Tanımı                    : f kaydedicisinin içeriği bir azaltılır ve d=0 ise sonuç W’ye, d=1  ise
  f’ye yüklenir.
Örnek:
DECF   SAYAC,0       ; Sayacın içindeki değer her ne ise, bir azaltılır ve sonuç d=0 ise
; W’ye, d=1 ise SAYAC kaydedicisine yüklenir.

DECFSZ                     Kaydedici içeriğini bir azalt, 0 oldu ise bir komut atla
Söz dizim kuralı        : [etiket]       DECFSZ        f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f) - 1 à (hedef)             sonuç=0 ise atla
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin içeriği bir azaltılır ve sonuçta oluşan değer sıfır ise,
  bu komutu izleyen komut atlanır. Sonuçta d=0 ise W’ye, d=1 ise
  f’ye yüklenir. Komut atlamayla sonuçlanırsa, ikinci çevrim
  süresinde NOP uygulayarak, toplam iki saat çevrim süresinde
  işlenir. Atlama olmadığı durumda uygulanması bir saat çevrimi
  süredir.
Örnek:
Azalt
     DECFSZ SAYAC,1          ; SAYAC 1 azaltılır, sonuç 0 ise BSF komutuna atlanır.
     GOTO Azalt        ; Sonuç 0 değilse Azalt etiketine sapılır.
     BSF PORTB,1      ; Sonuç 0 ise PORTB’nin 1.biti set (1) edilir.

GOTO                         Adrese git
Söz dizim kuralı        : [etiket]       GOTO           k
İşleçler                   : 0 ≤ k ≤ 2047        
İşlevi                     : k à PC <10:0>
                               PCLATH <4:3> à PC <12:11>                         
Status etkisi            : Yok
Tanımı                    : GOTO koşulsuz bir sapma komutudur. k’nın adresi neyse PC’ye
   <10:0> bitlerine yüklenir. Bellek sayfası neyse PCLATH’ın <4:3>  
   bitleri PC’nin üst bitlerine yüklenir ve adrese sapılır. Bu komut iki
   saat sürede uygulanır.
Örnek:
Tası    GOTO  Bas     ; Komuttan önce PC’da Tası etiketinin adresi vardır. Komut
; çalıştırıldıktan sonra ise PC’de Bas etiketinin adresi oluşur.
INCF                           Kaydedici içeriğini bir arttır
Söz dizim kuralı        : [etiket]       INCF             f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f) + 1 à (hedef)           
Status etkisi            : Z
Tanımı                    : f kaydedicisinin içeriği bir arttırılır ve d=0 ise W’ye, d=1 ise f’ye   
yüklenir.
Örnek:
INCF   SAYAC,0       ; Sayacın içindeki değer her ne ise bir arttırılır ve sonuç d’nin 0
; olması durumunda W’ye, aksi halde f’ye yüklenir. Sonucun kendisi
; 0 ise Z biti 1 yapılır.
INCFSZ                      Kaydedici içeriğini bir arttır, 0 oldu ise bir komut atla
Söz dizim kuralı        : [etiket]       INCFSZ         f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f) + 1 à (hedef)            sonuç=0 ise atla
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin içeriği bir arttırılır ve sonuçta oluşan değer sıfır ise,
bu komutu izleyen komut atlanır. Sonuçta d=0 ise W’ye, d=1 ise f’ye yüklenir. Komut atlamayla sonuçlanırsa, ikinci çevrim süresinde NOP uygulayarak, toplam iki saat çevrim süresinde işlenir. Atlama olmadığı durumda uygulanması bir saat çevrimi süredir.


Örnek:
Artır 
     INCFSZ SAYAC,1 ; SAYAC 1 artar, sonuç 0 ise BSF komutuna atlanır.
     GOTO Artır         ; Sonuç 0 değilse Artır etiketine sapılır.
     BSF PORTB,1      ; Sonuç 0 ise PORTB’nin 1.biti set (1) edilir.

IORLW                       Bir sayı ile W’nin içeriğine OR (veya) işlemini uygula
Söz dizim kuralı        : [etiket]       IORLW          k
İşleçler                   : 0 ≤ k ≤ 255
İşlevi                     : (W) OR k à (W)             
Status etkisi            : Z
Tanımı                    : W kaydedicisinin içeriği k sabiti ile OR’lanır. Sonuç W’ye yüklenir.
  Mantıksal işlem sonunda oluşan değer 0 ise, Z biti 1 yapılır.
Örnek:
IORLW          h’0F’   ; Komut öncesi W=h’F0’ ise, komut sonrası W=h’FF’ olur.

IORWF                       Kaydedici içeriği ile W’nin içeriğine OR (veya) işlemini uygula
Söz dizim kuralı        : [etiket]       IORWF          f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (W) OR (f) à (hedef)               
Status etkisi            : Z
Tanımı                    : W kaydedicisinin içeriği f kaydedicisinin içeriği ile OR’lanır. Sonuç
  d=0 ise W’ye, d=1 ise f’ye yüklenir. Mantıksal işlem sonunda
  oluşan değer 0 ise, Z biti 1 yapılır.
Örnek:
IORWF          f,0      ; Komuttan önce W=h’10’ ve f=h’01’ ise, komuttan sonra W=h’11’,
  f=h’01’  olur.
IORWF          f,1      ; Komuttan önce W=h’10’ ve f=h’01’ ise, komuttan sonra W=h’10’,
  f=h’11’  olur.

MOVLW                      W’ye bir sayı/sabit yükle
Söz dizim kuralı        : [etiket]       MOVLW         k
İşleçler                   : 0 ≤ k ≤ 255          
İşlevi                     : k à (W)              
Status etkisi            : Yok
Tanımı                   : W kaydedicisinin içeriği k olur.
Örnek:
MOVLW         k        ; Komut öncesi W’nin değeri ne olursa olsun, komuttan sonra k
  sabitinin değeri ile yüklenir.

MOVF                         Kaydedici içeriğini hedefe taşı
Söz dizim kuralı        : [etiket]       MOVF           f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f) à (hedef)                 
Status etkisi            : Z
Tanımı                    : f kaydedicisinin içeriği; d=0 ise W kaydedicisine, d=1 ise kendisine
  yüklenir.
Örnek:
MOVF           f,0      ; Komuttan önce W=h’0F’ ve f=h’01’ ise, komuttan sonra W=h’01’,
  f=h’01’  olur.
MOVF           f,1      ; Komuttan önce W=h’0F’ ve f=h’01’ ise, komuttan sonra W=h’0F’,
  f=h’01’  olur.

MOVWF                     W’nin içeriğini f kaydedicisine taşı
Söz dizim kuralı        : [etiket]       MOVWF         f
İşleçler                   : 0 ≤ f ≤ 127          
İşlevi                     : (W) à (f)
Status etkisi            : Yok
Tanımı                    : W kaydedicisinin içeriği; f kaydedicisine taşınır.
Örnek:
MOVWF      SAYAC   ; Komutu uygulamadan önce SAYAC kaydedicisinin içeriği ne olursa
; olsun komut uygulandıktan sonra W kaydedicisinin içeriği SAYAC’a
; yüklenir.

NOP                            İşlem yapma
Söz dizim kuralı        : [etiket]       NOP
İşleçler                   : Yok
İşlevi                     : Yok
Status etkisi            : Yok
Tanımı                    : Hiçbir şey yapılmadan bir saat çevrimi süre alır.
Örnek:
NOP                       ; Hiçbir işlem yapılmadan, bir çevrimlik süre geçirir.

RETFIE                       Kesme (interrupt) altprogramından geri dön
Söz dizim kuralı        : [etiket]       RETFIE
İşleçler                   : Yok
İşlevi                     : TOS à PC   1 à GIE
Status etkisi            : Yok
Tanımı                    : Kesme altyordamından dönmek için kullanılır. Dönüş yapılacak
  adres TOS’da olduğu için, TOS değeri PC’ye yüklenir. INTCON
  kesme kaydedicisinin, GIE biti set edilir. Komut iki saat çevriminde
  işlenir.
Örnek:
RETFIE                   ; Bu komut uygulanınca PC=TOS ve GIE=1 olur.

RETLW                       Altprogramdan W’ye bir sayı/sabit yükle ve geri dön
Söz dizim kuralı        : [etiket]       RETLW          k
İşleçler                   : 0 ≤ k ≤ 255
İşlevi                     : k à (W)      TOS à PC
Status etkisi            : Yok
Tanımı                    : Altyordamdan; W’ye k sabiti yüklenmiş olarak dönmek için
  kullanılır. Dönüş yapılacak adres TOS’da olduğu için, TOS değeri
  PC’ye yüklenir. Komut iki saat çevriminde işlenir.
Örnek:
RETLW          h’21’   ; Bu komut uygulandıktan sonra W kaydedicisine h’21’ yüklenir. PC’ye
; TOS değeri yerleştirilir. Özellikle altprogramdan değerler dizisinden
; biri ile dönmesi istendiğinde kullanılır.

RETURN                      Altprogramdan geri dön
Söz dizim kuralı        : [etiket]       RETURN
İşleçler                   : Yok
İşlevi                     : TOS à PC  
Status etkisi            : Yok
Tanımı                    : Altprogramdan TOS’taki adrese geri döner. Komut iki saat çevrimi
  sürede çalışır.
Örnek:
RETURN                  ; Bu komut uygulanınca PC’ye TOS değeri yerleştirilir.

RLF                             Kaydedici bitlerini sola doğru döndür
Söz dizim kuralı        : [etiket]       RLF     f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : Tanım kısmında açıklanmaktadır.           
Status etkisi            : C
Tanımı                    : f kaydedicisindeki bitleri bir bit sola doğru yerleştir. Böylece 0.bitin
  değeri 1.bite, 1.bitin değeri 2.bite,..., 6.bitin değeri 7.bite yerleşir.
  Kaydedici 8 bitlik olduğundan 7.bitin değeri status kaydedicisinin
  Carry bitine yerleştirilir. Daha sonra Carry bitindeki değer, f
  kaydedicisinin 0.bitine aktarılır. Böylece hiçbir bit bozulmadan sola
  doğru kaymış olur. d=0 ise, sonucu W’ye, aksi durumda f’ye taşır.
  C biti f kaydedicisinin en üst bitinin değerini taşır.
Örnek:
RLF     SOL,1           ; Komuttan önce SOL=h’01’, STATUS taşma (Carry) biti olan C=0
; ise, komut çalışınca SOL=b’0000 0010’  ve C=0 olur.
RLF     SOL,1           ; Komut bir kez daha çalışınca, SOL=b’0000 0100’ ve C=0 olur.

RRF                             Kaydedici bitlerini birer bit sağa aktar
Söz dizim kuralı        : [etiket]       RRF     f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : Tanım kısmında açıklanmaktadır.           
Status etkisi            : C
Tanımı                    : f kaydedicisindeki bitleri bir bit sağa doğru yerleştir. Böylece
  7.bitin değeri 6.bite, 6.bitin değeri 5.bite,..., 1.bitin değeri 0.bite
  yerleşir. Kaydedici 8 bitlik olduğundan 0.bitin değeri status
  kaydedicisinin Carry bitine yerleştirilir. Daha sonra Carry bitindeki
  değer, f kaydedicisinin 7.bitine aktarılır. Böylece hiçbir bit
  bozulmadan sağa doğru kaymış olur. d=0 ise, sonucu W’ye, aksi
  durumda f’ye taşır. C biti f kaydedicisinin en üst bitinin değerini
  taşır.
Örnek:
RRF     SAG,1           ; Komuttan önce SAG=h’02’, STATUS taşma (Carry) biti olan C=0
; ise, komut çalışınca SAG=b’0000 0001’  ve C=0 olur.
RRF     SAG,1           ; Komut bir kez daha çalışınca, SAG=b’0000 0000’ ve C=1 olur.

SLEEP                        Uyu
Söz dizim kuralı        : [etiket]       SLEEP
İşleçler                   : Yok
İşlevi                     : h’00’ à WDT         0 à WDT ön bölücü sabiti
                              1 à TO                0 à PD
Status etkisi            : TO, PD
Tanımı                    : PD, güç kesim ( power-down) biti temizlenir. TO süre aşımı (time-
  out) biti set (1) olur. WDT ve ön bölücü sabit de sıfırlanır.
  Osilatörün de durmasıyla, işlemci uyuma moduna geçer. PIC bu
  durumda çok az güç harcar.
Örnek:
Uyu    SLEEP           ; PIC bu durumda çok az güç harcar. Arada bir kontrol gereken
; güvenlik işlerinde, ya da belirli sürelerde yapılacak işler bittiğinde
; PIC, uyuma moduna sokulur.

SUBLW                       Bir sayı/sabitten W’nin içeriğini çıkar
Söz dizim kuralı        : [etiket]       SUBLW          k
İşleçler                   : 0 ≤ k ≤ 255
İşlevi                     : k - (W) à (W)
Status etkisi            : C, DC, Z
Tanımı                    : k sabit değerinden,W’nin içeriği çıkarılır (2’lik tümleyen ile) ve
  sonucu W’ye yüklenir.
Örnek:
SUBLW          h’01’   ; Komuttan önce W=h’02’ ve C=1 ise, komuttan sonra W=h’FF’ ve
; C=0 olur. (Sonuç negatif)

SUBWF                      W’den f’yi çıkar
Söz dizim kuralı        : [etiket]       SUBWF         f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f) - (W) à (hedef)        
                               d=0 ise hedef W kaydedicisidir, d=1 ise f kaydedicisidir.
Status etkisi            : C, DC, Z
Tanımı                    : f kaydedicisinin içeriğinden W çıkarılır (2’lik tümleyen ile). d=0 ise
  sonuç W’ye, d=1 ise f kaydedicisine yüklenir.
Örnek:
SUBLW          f,0      ; Bu komuttan önce W=h’01’, f=h’02’ ise komuttan sonra
                            ; W=h’01’ ve C=1 olur. 
SUBWF         f,0      ; İkinci komut çalışınca W=h’00’, C=1 ve Z=1 olur (sonuç pozitif). 
SUBWF         f,0      ; Üçüncü komut da çalışınca W=h’FF’ ve C=0 olur (sonuç negatif). 

SWAPF                       Kaydedici içeriğinde 4’lülerin (digit) yerini değiştirir
Söz dizim kuralı        : [etiket]       SWAPF         f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (f<3:0>) à (Hedef<7:4>)
                              (f<7:4>) à (Hedef<3:0>)
Status etkisi            : Yok
Tanımı                    : f kaydedicisinin üst dörtlü biti ile alt dörtlü biti yer değiştirirler.
  Sonuç d=0 ise W’ye, d=1 ise f kaydedicisine yüklenir.
Örnek:
SWAPF     CAPRAZ,1 ; Komuttan önce CAPRAZ=h’03’, W=h’02’ ise komuttan sonra
; CAPRAZ=h’30’, W=h’02’ olur.

XORLW                      Sayı ile W’nin içeriğini EXOR’la
Söz dizim kuralı        : [etiket]       XORLW         k
İşleçler                   : 0 ≤ k ≤ 255
İşlevi                     : (W) XOR k à (W)           
Status etkisi            : Z
Tanımı                    : W kaydedicisinin içeriği k sabiti ile XOR’lanır. Sonuç W’ye
  yüklenir. Mantıksal işlem sonunda oluşan değer 0 ise, Z biti 1
  yapılır.
Örnek:
XORLW         h’03’   ; Komut öncesi W=h’01’ ise, komut sonrası W=h’02’ olur.

XORWF                      Kaydedici içeriği ile W’nin içeriğini EXOR’la
Söz dizim kuralı        : [etiket]       XORWF         f,d
İşleçler                   : 0 ≤ f ≤ 127           d Є (0,1)
İşlevi                     : (W) XOR (f) à (hedef)              
Status etkisi            : Z
Tanımı                    : W kaydedicisinin içeriği f kaydedicisinin içeriği ile XOR’lanır. Sonuç
  d=0 ise W’ye, d=1 ise f’ye yüklenir. Mantıksal işlem sonunda
  oluşan değer 0 ise, Z biti 1 yapılır.
Örnek:
XORWF         f,0      ; Komuttan önce W=h’09’ ve f=h’0F’ ise, komuttan sonra W=h’06’,
  f=h’0F’  olur.


Kaynak: http://www.oocities.org/tascoskun/komut.htm

1 yorum: