PIC16F84 Komutları

PIC16F84'ün 35 komutu bulunur. Bu komutlar ve açiklamalari asagidaki tabloda görülmektedir.Ayrıntılar için BUYRUN DEVAM EDELİM.

ne-nasil.net
PIC16F84 Komutları
pic komutları

f    : file register

W : Work register

b   : f register içerisindeki bit pozisyonu

d   : Yönlendirilecek yer (d=0 ise f register, d=1 ise W register)

PIC16F84 Komutlar ve Örnekleri

1- MOVLW k: k sabit degerini W registerine yükler.

 

Örnek : MOVLW   H’FF’ : H’FF’ sabit degerini W registerine yükler. Komut öncesi W register içerigi H’00’ gibi herhangi bir deger ise komut sonrasi H’FF’ olur.

 

2- MOVWF f : W registerinin içerigini f registerine yükler.

 

Örnek : MOVLW   TRISB : W register içerigi H’FF’ ise bu degeri TRISB registerine yükler.

 

3- MOVF f,d : f registerin içerigini W registerine veya yine f registerine yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : MOVF   FSR,0 : FSR register içerigi H’A0’ ise W register içerigi de H’A0’ olur.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : MOVF   FSR,1 : W register içerigi sabit kalirken FSR register içerigi H’FF’ ise bu degeri yine FSR registere yükler. d=1 durumu status registerdeki Z bayragini (flag) etkiler. Z=1 olur.

 

4- CLRW : W register içerigini sifirlar.

 

Örnek : CLRW  : Komut öncesi W register içerigi H’FF’ ise komut sonrasi W register içerigi H’00’ olur.

 

5- CLRF f : f register içerigini sifirlar.

 

Örnek : CLRF  PORTB : PORTB’yi sifirlar. PORTB H’00’ veya B’00000000’ olur. Bu durum ayni zamanda PIC’in B portunun çikis olarak tanimlanmasinda kullanilir.

 

6- SWAPF f,d : f registerdeki ilk dört bit ile son dört biti yer degistirerek sonucu W veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : SWAP   REG,0 : REG register içerigi H’F0’ ise W register içerigi de H’0F’ olur. Diger bir ifadeyle binary formda REG register içerigi B’11110000’ ise W register içerigi B’00001111’ olur. REG, yazilimci tarafindan tanimlanan özel bir register adresidir ve isim degistirilebilir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : SWAP   REG,1 : REG register içerigi H’F0’ ise komut sonrasi REG register içerigi H’0F’ olur. Binary formda REG register içerigi B’11110000’ ise komut sonrasi B’00001111’ olur.

 

7- ADDLW k : W registerin içerigini k sabiti ile toplayarak sonucu W registere yükler.

 Örnek : ADDLW  H’10’ : W register içerigi H’15’ ise komut sonrasi W register içerigi H’25’ olur.

8- ADDWF f,d : W registeri ile f registeri içerigini toplayarak sonucu W registere veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

Örnek : ADDWF FSR,0 : FSR register içerigi H’0B’ ve W register içerigi de H’11’ ise W register içerigi H’1C’ olur. FSR register içerigi ise H’0B’ olarak kalir. 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : ADDWF FSR,1 : FSR register içerigi H’4F’ ve W register içerigi de H’A0’ ise FSR register içerigi H’EF’ olur. W register içerigi ise H’A0’ olarak kalir.                                    

 

9- SUBLW k : k sabit degerinden W register içerigini çikarir ve sonucu W registerine yükler.

 

Örnek : SUBLW  H’15’ : W register içerigi H’10’ ise komut sonrasi W register içerigi H’05’ olur.

 

10- SUBWF f,d : f register içeriginden W register içerigini çikarir ve sonucu W veya f registerine yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : SUBWF KPR,0 : KPR register içerigi H’D0’ ve W register içerigi de H’10’ ise W register içerigi H’C0’ olur. KPR register içerigi ise H’D0’ olarak kalir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : SUBWF KPR,1 : KPR register içerigi H’7A’ ve W register içerigi de H’51’ ise KPR register içerigi H’29’ olur. W regiter içerigi ise H’51’ olarak kalir.

 

11- ANDLW k : W registeri içerigi ile k sabitine AND islemi uygulayarak sonucu W registerine yükler.

 

Örnek : ANDLW  H’CF’ : W register içerigi H’1A’ ise komut sonrasi W register içerigi H’0A‘ olur.

 

12- ANDWF f,d : W register ile f register içerigine AND islemi uygulayarak sonucu W registerine veya          f registerine yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : ANDWF KSM,0 : KSM register içerigi H’2C’ ve W register içerigi de H’12’ ise W register içerigi H’0C’ olur. KSM register içerigi ise H’2C’ olarak kalir.

b)       Eger d = 1 ise f registere yükler.

 

Örnek : ANDWF  KSM,1 : KSM register içerigi H’A3’ ve W register içerigi de H’F0’ ise KSM register içerigi H’A0’ olur. W register içerigi ise H’F0’ olarak kalir.

 

13- IORLW k : W registerinin içerigi ile k sabitine OR islemi uygulayarak sonucu W registerine yükler.

 

Örnek : IORLW  H’B4’ : W register içerigi H’26’ ise komut sonrasi W register içerigi H’B6‘ olur.  

 

14- IORWF f,d : W registeri ile f registeri içerigine OR islemi uygulayarak sonucu W registerine veya  f registerine yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : IORWF MTN,0 : MTN register içerigi H’19’ ve W register içerigi de H’4D’ ise W register içerigi H’5D’ olur. MTN register içerigi ise H’19’ olarak kalir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : IORWF  MTN,1 : MTN register içerigi H’DE’ ve W register içerigi de H’AA’ ise MTN register içerigi H’FE’ olur. W register içerigi ise H’AA’ olarak kalir.

 

15- XORLW k : W registerinin içerigi ile k sabitine XOR islemi uygulayarak sonucu W registerine yükler.

 

Örnek : IORLW  H’F5’ : W register içerigi H’67’ ise komut sonrasi W register içerigi H’92‘ olur.

 

16- XORWF f, d : W registeri ile f registeri içerigine XOR islemi uygulayarak sonucu W registerine veya f registerine yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : XORWF ENG,0 : ENG register içerigi H’C2’ ve W register içerigi de H’CF’ ise W register içerigi H’0D’ olur. ENG register içerigi ise H’C2’ olarak kalir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : XORWF  ENG,1 : ENG register içerigi H’AA’ ve W register içerigi de H’0F’ ise ENG register içerigi H’A5’ olur. W register içerigi ise H’0F’ olarak kalir.

 

17- INCF f,d : f registerin içerigini 1 artirarak sonucu W registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : INCF REG,0 : REG register içerigi H’D4’ ise komut sonrasi W register içerigi H’D5’ olur.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : INCF REG,1 : REG register içerigi H’A1’ ise komut sonrasi REG register içerigi H’A2’ olur

 

18- DECF f, d : f registerin içerigini 1 azaltarak sonucu W registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : DECF KPR,0 : KPR register içerigi H’10’ ise komut sonrasi W register içerigi H’0F’ olur.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : DECF KPR,1 : KPR register içerigi H’11’ ise komut sonrasi KPR register içerigi H’10’ olur

 

19- RLF f,d : f registerin içerigini bir sola kaydirarak sonucu W registere veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : RLF MTN,0 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            W register içerigi B’10010110’ ve C=1 olur.  MTN register içerigi ise B’11001011’ olarak kalir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : RLF MTN,1 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            MTN register içerigi B’10010110’ ve C=1 olur. 

 

20- RRF f,d : f registerin içerigini bir saga kaydirarak sonucu W registere veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : RLF MTN,0 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            W register içerigi B’01100101’ ve C=1 olur.  MTN register içerigi ise B’11001011’ olarak kalir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : RLF MTN,1 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            MTN register içerigi B’01100101’ ve C=1 olur. 

 

21- COMF f,d : f register içerisindeki sayiyi tersleyerek sonucu W registere veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : COMF ENG,0 : ENG register içerigi H15’ ise komut sonrasi W register içerigi H’EA’ olur.

b)       Eger d = 1 ise f registere yükler.

 

Örnek : COMF ENG,1 : ENG register içerigi H’F5’ ise komut sonrasi ENG register içerigi H’0A’ olur.

 

22- BCF f, b: f register içindeki sayinin b. bitini sifirlar.

 

Örnek : BCF   PORTB,7 : Komut öncesi PORTB içerigiH’8A’ ise komut sonrasi H’6A‘ olur.                               

 

23- BSF f,b : f register içindeki sayinin b. bitini 1 yapar.

 

Örnek : BSF   PORTB,5 : Komut öncesi PORTB içerigiH’4B’ ise komut sonrasi H’6A‘ olur. 

 

24- BTFSC f,b : f registerin b. bitini test eder. Eger bu bit sifir ise program akisi bir sonraki komutu atlar.

 

Örnek : BTFSC   PORTA,1 : PORTA’nin 1.biti sifir ise siradaki komutu atlayarak bir sonraki komutu uygular. Eger PORTA’nin 1.biti 1 ise siradaki komutu uygular.

 

25- BTFSS f,b : f registerin b. bitini test eder. Eger bu bit 1 ise program akisi bir sonraki komutu atlar.

 

Örnek : BTFSS   PORTA,1 : PORTA’nin 1.biti 1 ise siradaki komutu atlayarak bir sonraki komutu uygular. Eger PORTA’nin 1.biti sifir ise siradaki komutu uygular.

 

26- DECFSZ f,d : f registerin içerigini 1 azaltir. Eger register içerigi sifir ise bir sonraki komutu atlayarak sonucu W registere veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : DECFSZ  REG,0 : REG = H’01’ ise, REG-1 = H’00’ olur ve register içerigi sifir oldugundan siradaki komut atlanarak bir sonraki komut isletilir ve sonuç W registerine yazilir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : DECFSZ  REG,1 : REG = H’3D’ ise, REG-1 = H’3C’ olur ve register içerigi sifir olmadigindan siradaki komut isletilerek sonuç REG registerine yazilir.

 

27- INCFSZ f, d : f registerin içerigini 1 artirir. Eger register içerigi sifir ise bir sonraki komutu atlayarak sonucu W registere veya f registere yükler.

 

a)       Eger d = 0 ise W registere yükler.

 

Örnek : DECFSZ  REG,0 : REG = H’FF’ ise, REG+1 = H’00’ olur ve register içerigi sifir oldugundan siradaki komut atlanarak bir sonraki komut isletilir ve sonuç W registerine yazilir.

 

b)       Eger d = 1 ise f registere yükler.

 

Örnek : DECFSZ  REG,1 : REG = H’3D’ ise, REG+1 = H’3E’ olur ve register içerigi sifir olmadigindan siradaki komut isletilerek sonuç REG registerine yazilir.

 

28- GOTO k : Program akisi k adresine dallanir.

 

Örnek : GOTO   DONGU : Program akisi GOTO komutu ile siradaki komutlari atlayarak DONGU etiketine dallanir.

 

29- CALL k : Program akisi k etiketinin bulundugu alt programa dallanir. Bu komut alt programlara dallanmak amaciyla kullanilir.

 

Örnek : CALL   TIMER : Program akisi CALL komutuna geldiginde devamindaki komutlari atlayarak TIMER etiketine dallanir.    

 

30- RETURN : Program akisini ana programa döndürür. Program akisi CALL komutu ile alt programa yönlendirildiginde, alt programin sonuna yazilan RETURN komutu ana programa dönmeyi saglar. Ana program kaldigi yerden devam eder.

 

Örnek : RETURN :

 

31- RETLW k : Program akisini RETURN komutunda oldugu gibi ana programa döndürür ancak ana programa dönüs esnasinda W registerine k sabitini yükler.                                                   

 

32- RETFIE : Program akisini Interrupt (kesme) alt programindan ana programa döndürür.

 

33- NOP : Zaman geciktirme islemi için kullanilir ve bir komut saykili süresince hiçbir islem yapmaz.

 

34- CLRWDT : Watchdog Timer’i sifirlar.

 

35- SLEEP : Mikrodenetleyiciyi uyuma moduna geçirir.

 

PIC BASIC PRO UYGULAMALARI DERS KİTABI

Write a comment

Comments: 1
  • #1

    ibrahim (Friday, 22 July 2011 15:21)

    timer zamanlayıcı alt devresini bana acil yazıp verebilir misiniz çok önemli