Senin, 03 Agustus 2009

Set Instruksi Mikrokontroler ATMEL AT89S51

Set Instruksi Mikrokontroler ATMEL AT89S51


Semua anggota keluarga Mikrokontroler ATMEL 89S51 mengeksekusi set instruksi yang sama. Set instruksi ini telah dioptimasi untuk aplikasi kontrol 8 bit, serta menyediakan berbagai macam mode pengalamatan yang cepat untuk mengakses RAM internal dan RAM external.

a. Mode-mode Pengalamatan

Mode-mode pengalamatan dapat dikelompokkan menjadi seperti berikut ini:

1.) Pengalamatan langsung (direct Addressing)
Dalam pengalamatan langsung operan-operan ditentukan berdasarkan alamat 8 bit (1 byte) dalam suatu instruksi. Hanya RAM internal dan SFR yang dapat diakses secara langsung.

2.) Pengalamatan Tak Langsung (Indirect Addressing)
Dalam pengalamatan tak langsung instruksi menentukan suatu register yang digunakan untuk menyimpan alamat operan. Baik RAM Internal maupun external dapat diakses secara tidak langsung.
Register alamat untuk alamat-alamat 8 bit bisa menggunakan stack pointer R1 atau R0 dari bank yang dipilih, sedangkan untuk alamat 16 bit dapat menggunakan DPTR.

3.) Instruksi-Instruksi Register
Bank-bank register yang masing-masing berisi R0-R7 dapat diakses dengan menggunakan instruksi yang memiliki kode operasi 3 bit. Pengaksesan dengan cara demikian dapat menghemat penggunaan kode instruksi, karena tidak menggunakan sebuah byte untuk alamat. Pada saat instruksi tersebut dijalankan maka salah satu bank register yang telah dipilih yang akan diakses.

4.) Instruksi-instruksi register khusus
Beberapa instruksi hanya dikhususkan untuk suatu register tertentu. Misalnya suatu instruksi yang hanya bekerja pada akumulator saja, sehingga tidak memerlukan satu byte untuk menunjukkan alamat akumulator tersebut. Instruksi mengacu akumulator sebagai A akan dikodekan dengan op-code spesifikasi akumulator.

5.) Konstanta segera (Immediate constant)
Nilai dari suatu konstanta dapat segera menyatu dengan op-code dalam memori program. Misalnya, instruksi : MOV A,#50, yang akan menyimpan konstanta 50 (desimal) ke dalam akumulator.

6.) Pengalamatan Terindeks (Indexed Addressing)
Memori program hanya dapat diakses melalui pengalamatan terindeks. Mode pengalamatan ini ditunjukkan untuk membaca tabel tengok (Look up table) yang tersimpan dalam memori program. Sebuah register 16 bit menunjuk ke awal atau dasar tabel dan akumulator diset dengan angka indeks tabel yang akan diakses. Alamat dari entri tabel memori program dibentuk dengan menjumlahkan data akumulator dengan petunjuk ke tabel. Tipe lain dari pengalamatan terindeks digunakan dalam instruksi-instruksi “lompat bersyarat”. Dalam hal ini, alamat tujuan dari instruksi lompat (jump) dihitung sebagai jumlah dari petunjuk dasar dengan data ke akumulator.

b. Instruksi Aritmatika

Tabel 2.1 memuat daftar instruksi-instruksi aritmatika dan waktu instruksi. Jika sistem mengguakan frekuensi clock 12 MHz, terlihat semua instruksi dilakukan selama 1 ?s kecuali INC DPTR, perintah ini beroperasi pada petunjuk data pointer 16 bit, sedangkan hasilnya adalah 16 bit alamat untuk memori external. Instruksi MUL AB digunakan untuk melakukan perkalian antara akumulator dengan register B dan hasilnya disimpan di register B dan di akumulator.
Tabel 2.1 Daftar Instruksi Aritmetika ATMEL AT89S51
Mnemonis Operasi Waktu Eksekusi (µd)
ADD A, A=A+ 1
ADDC A, A=A++C 1
SUBB A, A=A--C 1
INC A A=A+1 1
INC =+1 1
INC DPTR DPTR=DPTR+1 2
DEC A A=A-1 1
DEC =-1 1
MUL AB B:A=BxA 4
DIV AB A=int[A/B] 4
B=mod[A/B] 4
DA A Decimal adjust 1

c. Instruksi Logika
Instruksi logika digunakan untuk melakukan operasi boolean (AND, OR, XOR dan NOT) pada suatu byte dan beroperasi pada masing-masing bit. Jika suatu operasi ditunda karena interupsi, dengan tidak menggunakan akumulator akan menghemat waktu yang dibutuhkan untuk menyimpan isi akumulator ke dalam stack didalam rutin pelayanan interupsi yang bersangkutan.
Instruksi putar atau rotate (RL A, RLC A dan lainnya) akan menggeser isi akumulator 1 bit kekanan atau kekiri. Untuk putar kekiri, bit MSB akan berputar ke kiri dan menggantikan posisi bit LSB, dan bila berputar kekanan maka bit LSB akan menempati posisi bit MSB.
Tabel 2.2 Daftar Instruksi Logika Atmel AT89S51
Mnemonic Operasi Waktu Eksekusi
ANL A, A=A.and. 1
ANL ,A =.and.A 1
ANL ,#data =.and.#data 2
ORL A, A=A.or. 1
ORL ,A =.or.A 1
ORL ,#data =.or.#data 2
XRL A, A=A.xor. 1
XRL ,A =.xor.A 1
XRL ,#data =.xor.#data 2
CLR A A=00 H 1
CPL A A=.not.A 1
RL A Putar ACC kekiri 1 bit 1
RLC A Putar ACC kiri melalui carry 1
RR A Putar kanan ACC 1
RRC A Putar kanan ACC melalui carry 1

d. Instruksi Transfer Data
Instruksi trasfer data dapat dibagi menjadi 2 macam yaitu instruksi transfer data yang mengakses ruang memori internal dan transfer data yang mengakases ruang memori external. Pengaksesan ruang memori external menggunakan data pointer (DPTR) sebesar 16 bit. Pengeksekusian perintah trasnfer data tidak mempengaruhi Program Status Word.
Tabel 2.3 Instruksi Transfer Data AT89S51
Mnemonic Operasi Waktu eks. (µd)
MOV A, A= 1
MOV ,A =A 1
MOV , = 2
MOV DPTR,#data16bit DPTR=konstanta 16 bit 2
PUSH INC SP MOV “@SP”, 2
POP MOV ,”@SP”DEC SP 2
XCH A, Tukar data byte antara ACC & byte 2

e. Instruksi Boolean
Mikrokontroler ATMEL AT89S51 memiliki sebuah prosesor boolean yang cukup lengkap. Tabel 2.4 memperlihatkan instruksi boolean pada Mikrokontroler ATMEL AT89S51. Semua jalur port merupakan bit yang dapat dialamati dan dapat dilakukan sebagai port yang terpisah.
Tabel 2.4 Instruksi-Instruksi Boolean

Instruksi Fungsi Waktu eksekusi (µd)
ANL C,bit C=C.and.bit 2
ANL C,/bit C=C.and. .not. bit 2
ORL C,bit C=C .or. bit 2
ORL C,/bit C=C .or. not. bit 2
MOV C,bit C=bit 1
MOV bit,C Bit=C 2
CLR bit Bit=0 1
CLR C C=0 1

f. Instruksi Lompat (jump)
Instruksi lompatan (jump) merupakan perintah yang digunakan pada Mikrokontroler ATMEL AT89S51 untuk melakukan perpindahan alamat perintah yang akan dieksekusi oleh CPU. Instruksi lompatan ini dapat dibagi menjadi dua macam yaitu instruksi lompatan tak bersyarat dan instruksi lompatan bersyarat. Tabel 2.5 menunjukkan instruksi lompatan tak bersyarat pada Mikrokontroler ATMEL AT89S51 dan pada tabel 2.6 menunjukkan instruksi lompatan bersyarat.
Tabel 2.5 Instruksi Lompatan Tak Bersyarat
Instruksi Fungsi Waktu Eksekusi
JMP alamat Lompat ke alamat 2
JMP @A+DPTR Lompat ke A+DPTR 2
CALL alamat Panggil subrutin alamat 2
RET Kembali ke subrutin 2
RETI Kembali dari interupsi 2

Tabel 2.6 Instruksi Lompatan Bersyarat
Instruksi Fungsi Waktu Eksekusi (µd)
JZ rel Lompat jika A=0 2
JNZ rel Lompat jika A tidak 0 2
DJNZ ,rel Lompat jika tidak 0 2
CJNE A,,rel Lompat jika A’ 2
CJNE ,#data,rel Lompat jika ”#data 2

Semua instruksi bersyarat tersebut menentukan alamat tujuan menggunakan metode offset relatif dan terbatas pada jarak lompatan antara -128 hingga +127 dari istruksi lompatan tersebut.

Tidak ada komentar:

Posting Komentar