Jumat, 13 Maret 2009

SET_INSTRUKSI

E. SET INSTRUKSI AT89S51

· Instruksi Aritmatika
Pada tabel 2 diperlihatkan instruksi yang digunakan untuk operasi aritmatika. Instruksi ADD, SUB harus menggunakan akumulator dan hasil operasi disimpan dalam akumulator. Untuk instruksi INC, DEC dilakukan di DPRT, akumulator, register, alamat, dan memori. Untuk operasi MUL dan DIV hanya bisa dilakukan dengan menggunakan akumulator dan register B.
Tabel2().

· Instruksi Logik
Operasi logika dapat dilakukan pada akumulator dan memori, tetapi ada beberapa operasi yang hanya dapat dilakukan pada akumulator. Untuk lebih jelasnya dapat dilihat tabel 3. Bila menggunakan akumulator, eksekusi dilakukan selama 1ms dan lainnya 2ms (clock 12 MHz).
Tabel 3().

· Instruksi Transfer Data
Internal RAM
Pada tabel 4 diperlihatkan instruksi yang tersedia untuk memindahkan data di dalam internal memori. Instruksi MOV ,_ digunakan untuk memindahkan data antara internal RAM dan SFR tanpa melalui akumulator. Instruksi PUSH, isi SP ditambah satu kemudian isi dari variable yang ditunjukkan oleh SP. Instruksi XCH A,_ digunakan untuk menukar isi akumulator dengan data yang ada pada alamat yang ditunjukkan.
Tabel 4()

Eksternal RAM
Pada tabel 5 diperlihatkan instruksi yang tersedia untuk memindahkan data ke eksternal memori. Instruksi MOVX @DPRT,A digunakan untuk memindahkan data dari Akumulator ke DPRT, dimana DPRT berisi suatu alamat memori eksternal dengan lebar alamat sepanjang 16 bit. Hal ini dilakukan misalnya untuk mengakses alamat dari eksternal memori ke register 16 bit DPRT dengan menggunakan perintah:
MOV DPRT, #address memori
Setelah penginisialisasian alamat dari eksternal memori atau data maka kita dapat menjalankan perintah :
MOVX @DPRT,A
Untuk memindahkan isi akumulator ke alamat yang ditunjukkan oleh register 16 bit DPRT.

Tabel5()

Tabel Tengok ( Look-up tables )
Pada tabel 6 ditunjukkan dua instruksi yang dapat digunakan untuk membaca tabel tengok yang tersimpan dalam memori program. Karena kedua instruksi ini hanya mengakses memori program saja, maka tabel tengok hanya bisa dibaca saja, tidak mungkin di remajakan atau di update. Jika akses tabelnya ke memori program eksternal, maka tanda bacanya melalui kaki PSEN.
Tebel6().

· Instruksi BooleanMikrokontroler AT89S51 mempunyai prosesor Boolean (bit tunggal) yang memudahkan pelaksanaan program. Semua bit diakses dengan pengalamatan langsung. Alamat bit dari 00H sampai 7FH untik 128 byte bawah dan ditambah 128 byte lagi oleh SFR pada internal memori. Seluruh port dapat dialamati perbit dan setiap satu bit port dapat diperlakukan secara terpisah. Instruksi dari tabel operasi Boolean diperlihatkan pada tabel 7.

Tabel7()
· Instruksi Percabangan
Instruksi percabangan sangat diperlukan dalam sebuah program, intruksi tersebut antara lain adalah JMP, CALL, RET, RETI, NOT.
a. Kelompok instruksi JUMP
Pada saat mikrokontroler melaksanakan instruksi JUMP, nilai Program Counter yang runtut sesuai dengan alur program diganti dengan lokasi memori program baru yang dikehendaki. Sedangkan isi lokasi berikutnya disimpan terlebih dahulu ke stack (PUSH) secara langsung. Mikrokontroler memiliki 4 macam instruksi JUMP yakni JMP, LJMP,(long jump) AJMP (absolute jump) dan SJMP (short jump). Instruksi LJMP ukurannya 3 byte, sedangkan instruksi AJMP,JMP dan SJMP cukup 2 byte.


b. Kelompok instruksi untuk Sub-Rutin
Instruksi ini melibatkan penggunaan sub-rutin program, selain melibatkan Program Counter, juga melibatkan stack yang diatur oleh petunjuk register stack. Instruksi yang digunakan adalah CALL, instruksi ini akan memanggil sebuah sub-rutin tertentu. Setelah mengerjakan sub-rutin tersebut maka mikrokontroler kembali mengerjakan alur program yang utama. Instruksi ini hanya akan kembali ke program utama semula jika bertemu dengan instruksi RET di akhir sub-rutin. Selain instruksi CALL juga terdapat instruksi ACALL dan LCALL. Jika kita memakai program interupt maka akan terdapat instruksi RETI, yaitu instruksi khusus yang digunakan untuk mengembalikan alur program setelah menjalankan sub-rutin interupt.
c. Kelompok instruksi lompatan bersyarat
Instruksi ini masih berhubungan dengan instruksi JUMP, dimana instruksi ini juga melibatkan operasi bit. Instruksi tersebut adalah JZ/JNZ, JC/JNC, JB/JNB/JBC. Instruksi JZ (jump if zero) dan JNZ (jump if not zero) adalah instruksi bersyarat yang memantau nilai Akumulator A, jika terpenuhi maka program akan melompat kememori program yang dituju. Instruksi JC (jump if carry) dan JNC (jump if not carry) adalah instruksi yang memantau nilai bit carry didalam Program Status Word (PSW). Instruksi JB (jump on bit set), JNB (jump on not bit set), JBC ( jump on bit set then clear bit) merupakan instruksi JUMP bersyarat yang memantau nilai bit tertentu. Bit-bit tertentu tersebut bisa merupakan suatu bit dalam register status maupun kaki masukan mikrokontroler.
d. Kelompok instruksi proses dan test
Kelompok instruksi ini memiliki dua anggota, yaitu instruksi DJNZ (decrement and jump if not zero) dan CJNE (compare and jump if not equal). Instruksi DJNZ adalah instruksi yang akan mengurangi 1 nilai register serbaguna atau memori data dan akan lompat pada memori program yang dituju jika ternyata setelah pengurangan 1 hasilnya tidak nol. Instruksi CJNE membandingkan dua nilai yang disebut dan akan melompat pada memori program yang dituju kalau kedua nilai tersebut tidak sama.

Tidak ada komentar:

Posting Komentar