Jumat, 06 Februari 2009

Set Instruksi Mikrokontroler PIC16F84A

Mikrokontroler PIC16F84A tergolomg mikrokontroler jenis RISC. Dengan demikian set instruksi yang digunakan relatif sedikit, hanya 35 instruksi. Instruksi-instruksi ini terdiri atas 6 instruksi untuk transfer data, 15 instruksi untuk operasi aritmatika dan logika, 2 instruksi pengarah aliran program dan 3 instruksi umum. Tiap instruksi pada mikrokontroler PIC16F84A merupakan kata 14-bit yang terbagi menjadi suatu kode operasi yang menjelaskan tipe instruksi dan satu atau lebih operand yang nantinya menjelaskan operasi dari instruksi tersebut.

Berdasarkan medan operasinya set instruksi mikrokontroler PIC16F84A dibagi menjadi :

1). Instruksi orientasi byte

2). Instruksi orientasi bit

3). Instruksi literal dan operasi kontrol

Untuk instruksi berorientasi byte, “ f ” menunjukkan suatu register file dan “ d “ menunjukkan suatu tujuan. Bila “ d “ adalah nol ( 0 ) maka suatu hasil akan ditempatkan pada register W. Namun bila “ d “ adalah satu ( 1 ) maka hasil akan ditempatkan pada suatu register file yang dijelaskan pada instruksi yang bersangkutan.

Untuk instruksi orientasi bit, “ b “ menunjukkan medan bit yang menunjukkan nilai bit yang dipengaruhi oleh operasi tersebut. Sedangkan “ f “ adalah menunjukkan nilai file dimana bit tersebut berlokasi. Untuk instruksi literal dan operasi kontrol “ k “ menunjukkan suatu 8 atau 11 bit suatu nilai ( konstanta ) atau nilai literal.

Adapun set-set instruksi dari mikrokontroler PIC16F84A serta penjelasannya masing-masing adalah sebagai berikut:

Set Instruksi Mikrokontroler PIC16F84A

NO

KODE

ARTI

KETERANGAN

1

MOVLW

Move Constan to W

Instruksi ini digunakan untuk memindahkan nilai literal ke register W. Dengan instruksi ini kita dapat memuati register W dengan nilai tertentu.

2

MOVWF

Move W to f

Instruksi ini digunakan untuk memindahkan isi register W ke register f. Dengan instruksi ini kita dapat mengkopikan isi register W ke register f. Register W tidak berubah.

3

MOVF

Mov f to d

Instruksi untuk memindahkan isi register f ke register W jika d=0 atau ke register f jika d=1.

4

CLRW

Clear W

Membersihkan isi register W. Dengan instruksi ini register W akan diisi dengan nilai 00h.

5

CLRF

Clear f

Instruksi ini berfungsi untuk membersihkan isi register f. Register f akan dmuati nilai 00h.

6

SWAPF

Swap nibble of f

Instruksi ini digunakan untuk saling menukarkan 4 bit (nibble) atas dengan 4 bit bawah pada register f dan hasilnya diletakkan pada tujuan d. Jika d=0, hasil operasi ditempatkandiregister w dan jika d=1, hasil ditempatkan di register f.

7

ADDLW

Add literal and W

Addlw digunakan untuk menjumlahkan suatu literal dengan register W, dan hasilnya disimpan diregister W. Operasi ini dapat mengubah status flag C, DC dan Z pada register STATUS.

8

ADDWF

Add f and W

Digunakan untuk menjumlahkan isi register W dengan register f, kemudian hasilnya disimpan di tujuan d.

9

SUBLW

Substract W from literal

Mengurangkan isi register W dari suatu nilai literal, hasilnya disimpan di register W.

10

SUBWF

Substract W from f

Mengurangkan isi register W dari register f, hasilnya disimpan di tujuan d.

11

ANDLW

And literal with W

Digunakan untuk melakukan operasi logika AND antara nilai literal dengan register W. Hasilnya operasi diletakkan kembali diregister W.

12

ANDWF

And W with f

Digunakan untuk operasi logika AND antara register W dengan register f, hasil disimpan di tujuan d.

13

IORLW

Inclusive OR W with literal

Instruksi ini digunakan untuk melakukan operasi OR antara register W dengan nilai literal k. Hasil operasi ini disimpan di register W.

14

IORWF

Inclusive OR W with f

Digunakan untuk operasi logika OR antara register W dengan register f, hasilnya ditemparkan ditujuan d.

15

XORLW

Exclusive OR W with literal k

Instruksi ini untuk operasi logika Exclusive OR (XOR) antara register W dengan nilai literal k. Hasilnya dikembalikan ke register W.

16

XORWF

Exclusive OR W with f

Instruksi ini digunakan untuk operasi XOR antara register W dengan register f, hasilnya ditempatkan ditujuan d.

17

INCF

Increment f

Instruksi incf digunakan untuk menaikkan 1 nilai register kemudian hasilnya diletakkan ditujuan d.

18

DECF

Decrement f

Instruksi decf digunakan untuk mengurangi 1 nilai register f, kemudian hasilnya diletakkan di tujuan d.

19

RLF

Rotate Left f

Digunakan untuk menggeser kiri bit-bit dalam register f. Bit 0 ke bit 1, bit 1 ke bit 2 dan seterusnya. Bit 7 ke carry dan carry ke bit 0. Hasil pergeseran disimpan ditujuan d.

20

RRF

Rotate Right f

Digunakan untuk menggeser kanan bit-bit dalam register f. Bit 7 ke bit 6, bit 6 ke bit 5 dan seterusnya. Bit carry ke bit 7 dan bit 0 ke bit carry. Hasil pergeseran disimpan ditujuan d.

21

COMF

Complement f

Instruksi ini untuk mendapatkan nilai komplemen dari isi register f. Nilai komplemen tersebut kemudian disimpan di tujuan d.

22

BCF

Bit Clear f

Digunakan untuk membersihkan suatu bit pada registerf. Bit bersangkutan akan diberi logika 0.

23

BSF

Bit Set f

Intruksi ini digunakan untuk menetapkan suatu bit pada register f. Bit yang bersangkutan akan diberi logika 1.

24

BTFSC

Bit Test f, Skip if Clear

Instruksi ini digunakan untuk menguji logika suatu pada register f. Jika hasilnya “0”, instruksi berikutnya dilompati (tidak dieksekusi), sedangkan jika hasilnya “1”, instruksi berikutnya tetap dieksekusi.

25

BTFSS

Bit Test f, Skip if Set

Digunakan untuk memeriksa bit pada register f. Jika nilainya “1” lompati instruksi berikutnya, jika “0”, instruksi berikutnya tetap dieksekusi

26

DECFSZ

Decrement f, Skip if Zero

Digunakan untuk melakukandecrement register f, kemudian memeriksa hasilnya apakah “0” atau tidak. Jika “0”, instruksi berikutnya dilompati. Hasilnya disimpan ditujuan d.

27

INCFSZ

Increment f, Skip if Zero

Digunakan untuk melakukan incremen register f, kemudian memeriksa hasilnya. Jika hasilnya “0”, instruksi berikutnya dilompati (skipped). Hasil disimpan di tujuand.

28

GOTO

Go to address

Digunakan untuk mengarahkan program kesuatu tempat dengan nama atau alamat tertentu.

29

CALL

Call subroutine

Digunakan untuk memanggil suatu subrutin

30

RETURN

Return from subroutine

Instruksi return digunakan untuk kembali dari subrutin ke program utama yang memanggilnya. Setelah kembali, program akan melanjutkan mengerjakan instruksi berikutnya.

31

RETLW

Return with literal

Instruksi ini serupa dengan return, namun untuk retlw, saat kembali dari sub rutin, register W akan diberi nilai literal k yang menyertainya.

32

RETFIE

Return from interrupt

Instruksi retfie digunakan untuk mengakhiri suatu rutin interupsi agar program dapat kembali ke pekerjaan awal, melanjutkan pekerjaan yang ditinggalkan akibat adanya interupsi.

33

NOP

No operation

Tidak ada yang dikerjakan

34

CLRWDT

Clear Watch Dog Timer

Digunakan untuk me-reset WDT. Saat WDT di-enable, WDT harus di-reset sebelum mencapai overflow karena apabila dibiarkan, terjadinya overflow WDT akan menyebabkan mikrokontroler reset.

35

SLEEP

Go to Standby mode or Sleep

Digunakan untuk membawa mikrokontroler ke keadaan stanby. Mode Sleep sangat bermanfaat untuk menghemat konsumsi daya pada aplikasi.

Tidak ada komentar:

Posting Komentar