Yer Değiştirme veya Yükleme Komutları Komut ve Örnek MOVLW k MOVLW h'0F' MOVF f,d MOVF TEST, W MOVF TEST, f MOVWF f MOVWF PORTA Türkçe açıklaması İngilizce tanımı Move Literal to W Örnek Move f k sabit değerini W registerine yükler (saklar) h'OF' sayısını W registerine yükle(sakla). f registerinin içeriğini (d) yerine yazılan W veya f registerine yükler(kopyalar). Örnek d yerine W yazıldığından TEST registerinin içeriğini W registerine yükler (kopyalar). Örnek d yerine f yazıldığından TEST registerini yine TEST registerine yükler(kopyalar). Move W to f W registerin içeriğini f registerine yükler (kopyalar) Örnek PORTA 'nın içeriğini W registerine yükler (kopyalar) Register İçeriğini Değiştirme Komutları CLRF CLRF CLRW f TRISB COMF f,d DECF f,d (etkilediği bayrak: Z) DECF GIT,f INCF f,d (etkilediği bayrak: Z) GIT,W f,b BCF Complement f Örnek Decrement f Örnek Increment f Örnek Bit Clear f BCF PORTB,5 BSF f,b Örnek Bit Set f BSF PORTA,3 RLF f ,d (etkilediği bayrak: C ) RLF KAY ,W RRF f ,d ( etkilediği bayrak: C ) RRF Örnek Clear W COMF SAY,W INCF Clear f KAY, f SWAPF f , d SWAPF DEG , f Örnek Rotate Left f Örnek Rotate Right f Örnek Swap nibbles in f Örnek f registerinin içeriğini siler (sıfırlar) TRISB registerine b' 00000000 ' yükler (sıfırlar) W registerinin içeriğini siler f registerinin içindeki sayı terslenir. Yani tüm 1'ler 0, tüm 0'lar 1 olur. Sonuç (d) yerine yazılana bağlı olarak W veya f registerine yüklenir. Sonuç h'00' olursa Z bayrağı 1 olur SAY registerinde b' 00110110' varsa, d= W olduğundan W←11001001 olur d= f olsaydı SAY←11001001 f registerinin içerisindeki sayıyı "1" eksiltir. Registerin içeriği h' 25 ' ise "1" eksiltildiğinde h ' 24 'olur. Sonuç W veya f registerine yazılır.. Sonuç h'00' olursa Z bayrağı 1 olur GIT=h ' 20 ' ise 20 - 1=1F olur. d = f olduğundan GIT registerine d = W olsaydı W←1F olurdu. h'1F' yazılır. f registerinin içerisindeki sayı "1" arttırılır. Registerin içeriği h' FF ' ise "1" arttırıldığında h'00' olur.Sonuç W veya f registerine yazılır... Sonuç h'00' olursa Z bayrağı 1 olur GIT registeri h ' 2C ' ise 2C + 1=2D d = W olduğuna göre W ← 2D olur d= f olsaydı GIT ← 2D f registerinin içerisindeki sayının b 'ninci bitini sıfırlar.. PORTB = b '11111111' ise komutun icrasından sonra PORTB ← b' 11011111' olur f registerinin içerisindeki sayının b 'inci bitini 1 yapar.. PORTA = b ' 00000000 ' ise PORTA ← b ' 00001000 ' olur f registeri içerisindeki sayıyı bir pozisyon sola kaydırır. Registerden taşarak Carry (C) bayrağına yazılan bit 0. bite yazılır . Sonuç W veya f registerine yüklenir. KAY = b'10110110' ve Carry bayrağı (C) ← 1 ise komuttun icrasından sonra KAY 'da b'01101101' elde edilir. Çünkü daha önce C=1 olduğundan bu '1' KAY registerinde 0. bite kayar. KAY'ın 7. biti ise C bayrağına gider d=W olduğundan W← 01101101 olur. d= f olsaydı KAY← 01101101 olurdu. f registeri içerisindeki sayıyı bir pozisyon sağa kaydırır. Registerden taşan bit C bayrağına yazılırken , daha önce C bayrağındaki bit f registerinin 7. bitine yazılır .Sonuç W veya f registerine yüklenir. KAY =b ' 10110111 ' ve C= 1 ise komutun icrasından sonra KAY'da b'11011011' elde edilir. C bayrağı KAY'ın 7. Bitine, C bayrağı da KAY'ın 0. Bitine geçer. d = W olsaydı W←11011011 olurdu d = f olduğundan KAY←11011011 olur f registerinin içerisindeki ilk dört bit ile son dört bit yer değiştirir. Sonuç W veya f registerine yüklenir. DEG = b' 00101111' ise d= f olduğundan DEG←11110010 olur. d = W olsaydı W←11110010 olurdu Program Akışını Kontrol Etme Komutları GOTO k Go to address GOTO DONGU Örnek k Call subroutine CALL CALL TIMER Return with Literal in W RETLW k RETLW h'2F' f,b BTFSC PORTA,2 BTFSS f,d BTFSS PORTA,0 DECFSZ Örnek Return From Interrupt RETFIE BTFSC Örnek Return From subroutine RETURN f,d Bit Test F , Skip If Clear Program akışı k adresine şartsız olarak dallanır Program, DONGU etiketinin yazıldığı yere dallanır ve buradan itibaren devam eder. Program akışı k etiketinin bulunğu yerdeki alt programa dallanır.. Program TIMER etiketinin yazıldığı alt program satırlarının başlangıcına dallanır ve buradan devam eder. Alt program komutlarının en sonuna yazılan bu komut, program akışını ana programa geri döndürür Program akışını alt programdan ana programa döndürür ve W registerine k sabiti yüklenir Alt programdan ana programa döndürür ve W registerine 2F yüklenir. Program akışını interrupt (kesme) alt programından ana programa döndürür f registerinin b 'inci bit'ini test eder. Eğer bu bit "0"sa program akışı bir sonraki komuta geçer.. portA = b' 00000100' ise ← (1) durumu portA = b ' 00000000 'ise ← (2) durumu Örnek BTFSC PORTA,2 GOTO START ; (1) durumu için bu satıra (komuta) atlar. MOVLW h'FF' ; (2) durumu için bu satıra (komuta) atlar. f registerinin b 'inci bit'ini test eder. Eğer bu bit "1"ise program akışı bir sonraki komuta Bit Test F , Skip If geçer.. Clear Örnek PORTA = b' 00000001' ise ←(1) durumu PORTA = b' 00000000' 'ise ←(2) durumu BTFSC PORTA,0 GOTO START ; (1) durumu için bu satıra (komuta) atlar. MOVLW h'FF' ; (2) durumu için bu satıra (komuta) atlar. Degrement f, Skip f registerinin içeriği "1" azaltılır. Register içeriği "0" sa bir sonraki komuta atlar. Sonuç W veya f if Zero registere yazılır.. DECFSZ SAYAC,f INCFSZ f,d INCFSZ SAYAC,f SAYAC = h'2F' ise d = W olsaydı d = f olduğundan Örnek 2F - 1 = 2E W ← h ' 2E ' SAYAC ← h '2E' olur f registerinin içeriğini ''1'' artırır. Register içeriği ''0'' ise bir sonraki komuta atlar. Sonuç (d) ye Increment f, Skip if zero bağlı olarak W veya f registere yazılır. SAYAC =h '2F' ise d = f olduğundan d = W olsaydı Örnek 2F+1=30 SAYAC←h '30' olur W← h '30' Mikrodenetleyici Kontrol Komutları CLRWDT Clear Watchdog Timer Watchdo timer'ı sıfırlar.Ayrıca watchdog timer'ın prescalar değerini de sıfırlar.STATUS bitlerinden TO ve PD 'yi ''1'' yapar. SLEEP Go into standby mode Mikrodenetleyiciyi uyuma moduna geçirerek güç harcamasını azaltır. Mikro denetleyeci uyuma modundan reset, watchdog timer ve TOCKI girişi vasıtasıyla çıkar ANDLW k AND Literal with W Mantıksal Komutlar ANDLW b '00110001' Örnek ANDWF f,d (etkilediği bayrak: Z) AND W with ANDWF TEST,f Örnek IORLW k (etkilediği bayrak: Z) Inclusive OR Literal withW IORWF f,d (etkilediği bayrak: Z ) XORLW k XORLW b' 00101100' XORWF f,d (etkilediği bayrak: Z ) W registeri ile file registeri içeriğine AND işlemi uygular.Sonuç W veya f registerine yazılır. Sonuç h'00' ise Z bayrağı "1" olur. W = b ' 11111111 ' ve TEST = b ' 11011110 ' ise, b ' 11011110 ' AND işleminin sonucu olur d = W olsaydı W←b ' 11011110 ' d = f olduğundan TEST← b ' 11011110 ' olur W registerinin içeriği ile k sabitine OR işlemini uygular. Sonuç W registerine yazılır W = b '10000100 ' b ' 00101000 ' b ' 10101100 ' W← b ' 10101100 ' IORLW b '00101000' IORWF TEST,f W registerin içeriği ile k sabitine AND işlemini uygular. Sonuç W registerine yazılır W = b ' 10011101 ' ise, b ' 00110001 ' sabitin değeri olduğuna göre b ' 00010001 ' AND işleminin sonucu olur W ← b ' 00010001' ise sabitin değeri OR işleminin sonucu olur W registeri ile file registerin içeriğine "OR" işlemini uygular.Sonuç W veya f registerine yazılır. Örnek Exclusive Or Literal with W Örnek Excusive OR W with f W = b ' 10000100 ' ise TEST = b ' 00101000 ' ise, b' 10101100 ' OR işleminin sonucu olur d=W olsaydı ise W← b ' 10101100 ' d= f olduğundan TEST← b ' 10101100 ' olur W registerinin içeriği ile k sabitine XOR işlemini uygular.Sonuç W registerine yazılır.. W = b ' 11111111 ' ise, b ' 00101100 ' sabitin değeri b ' 11010011 ' AND işlemi sonucu olur W ← b ' 11010011 ' W registerin içeriği ile file register içeriğine XOR işlemini uygular.Sonuç W veya f registerine yazılır.. W = b ' 00100000 ' ve TEST = b ' 00101000 ' ise, b' 00001000 ' XOR işleminin sonucu olur d=0 olsaydı W← b ' 00001000 ' d=1 olduğundan TEST← b ' 00001000 ' XORWF TEST,f Aritmetik İşlemler ADDWF f,d (etkilediği bayrak: Z ) Add W with f ADDWF TOPLA ,W Örnek ADDLW k (etkilediği bayraklar: Z,C ) ADDLW h' 2F ' SUBLW k (etkilediği bayrak: C) Add Literal and W Örnek Subtract W from Literal SUBLW h ' 9A ' SUBWF f,d (etkilediği bayraklar: Z,C ) SUBWF CIK ,f Subtract W from file register Örnek W registerinin içeriğini f registeri ile toplar . Sonuç (d) ye bağlı olarak W ya da f registerine yazılır.. W = h ' 2A ' ve, TOPLA = h ' 31 ' ise, h ' 2A ' + h ' 31' =h ' 5B ' olur d=W olsaydı TOPLAM ← h ' 5B ' d= f olduğundan W← h ' 5B ' olur W registerinin içeriğini k sabit değeri ile toplar. Sonuç W registerine yazılır.. W= h ' B0 ' ise, h ' B0 ' + h ' 2F ' = h ' DF ' W← h' DF ' olur k sabit değerinden W registerinin içeriğini çıkarır . Sonuç W registerine yazılır..Tümleyen aritmetiğine göre C bayrağı etkilenir W = h ' 83 ' ise h ' 9A ' - h ' 83 ' = h ' 07 ' W ← h ' 07 ' olur f registerinin içeriğinden W registerinin içeriğini cıkarır. Sonuç W veya f registerine yazılır. W = h ' 83 ' ve CIK= h ' 9A ' ise h ' 9A ' - h ' 83 ' = h ' 07 ' d=W olsaydı W ← h ' 07 ' d=f olduğundan CIK← h ' 07 ' olur İşlem Yapmayan Komut NOP No Operation Bir komut saykılı(peryodu) süresince hiçbir işlem yapmayan bir komuttur.Bir dahili komut süresince çalışır.Bu nedenlebu komut geciktirme işlemlerinde kullanılır NOT : Z ve C ilgili komutun icra edilmesinden sonra "STATUS" registerinde bulunan ve bu komuttan etkilenen bayrakları göstermektedir.
© Copyright 2024 Paperzz