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