hava harp okulu 6`ncı ulusal salon model uçak yarışması – 2015

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.