PIC16F84'ün 35 komutu bulunur. Bu komutlar ve açiklamalari asagidaki tabloda görülmektedir.Ayrıntılar için BUYRUN DEVAM EDELİM.
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
ibrahim (Friday, 22 July 2011 15:21)
timer zamanlayıcı alt devresini bana acil yazıp verebilir misiniz çok önemli