PERTEMUAN SET INSTRUKSI MIKROKONTROLER AT 89C51 Pendahuluan Dalam materi sebelumnya sudah di bahas untuk menjalankan suatu tugas maka mikrokontroler 89C51 membutuhkan sebuah program yang terdiri dari susunan perintah-perintah atau instruksi-instruksi. Mikrokontroler 89C51 menggunkan instruksi operasi 8 bit. Instruksi 8 bit memberikan 256 kemungkinan instruksi Di bawah contoh instruksi: CPL a MOV a, 40h MOV 41, #30h CPL MOV MOV a a, 40h 41, #30h ; komplementkan isi reg A, kodenya F4h ; isi reg A dgn isi memori lokasi 40h, kodenya E5h 40h ; isi memori lokasi 41h dgn konstanta 30h kodenya 75h 41h 30h Program Status Word Program Status Wors atau PSW menerangan kondisi CPU dari mikrokontroler. Program satus word terdapat di dalam Special Function Register atau SFR di lokasi D0h. PSW berisikan bit-bit satus CPU dari mikrokontroler. Isi satus dalam psw adalah: Carry bit The Auxiliary Carry (Dalam operasi BCD) Dua bit pemilih bank register Overflow Flog satu bit paritas Dan dua bit status Carry bit mempunyai dua fungsi yaitu: 1. Carry (status bit sisa) pada operasi aritmatika 2. Sebagai Accumulator dalam beberapa operasi boolean Bit RS0 dan RS1 berfungsi untuk memilih salah satu dari empat bank register. RS0 dan RS1 menentukan bank register mana yang digunakan selama eksekusi program berjalan. CY AC F0 RS1 RS0 0V P PSW 7 PSW 0 Flag Carry menerima Carry out dari bit operan ALU 2 Paritas genap Accumulator diatur melalui hadware (menjaga agar logika “1” di accumulator selalu genap PSW 6 PSW 1 Flag Auxiliary Carry menerima Carry Out dari Bit 1 operand-operand penjumlahan PSW 5 Flag status multyguna PSW 4 Bit 1 pemilih Bank Register Flag yang dapat di deenisikan pengguna PSW 2 Flag Overflow (limpahan) di set melalui operasi Aritmatika PSW 3 Bit 0 pemilih Bank Register Mnemonic & Opcode Mnemonic adalah simbol-simbol instruksi/perintah seperti: Mov, CPL, RR, SJMP dan lain-lain. CPL MOV MOV A A, 40h 41, #30h ; komplementkan isi reg A, kodenya F4h ; isi reg A dgn isi memori lokasi 40h, kodenya E5h 40h ; isi memori lokasi 41h dgn konstanta 30h kodenya 75h 41h 30h Opcode (operation code) merupakan kode dari simbol instruksi, contoh: Dari contoh instruksi diatas F4h adalah opcode dari register A . Opcode bisa diikuti atau tidak oleh satu atau dua operand.Opcode menentukan operasi yang akan dilakukan sedangkan operand menentukan jenis data ,variable atau instruksi berikutnya dalam sebuah program. Bahasa assembly atau assembler pada dasarnya adalah susunan mnemonic yang dapat menjalankan suatu fungsi. Seperti sudah di bahas dalam pertemuan sebelumnya bahasa assembler memudahkan penulisan program . Didalam Mikrokontroler setiap mnemonic diterjemahkan dulu kedalam bahasa mesin sebelum di eksekusi. Op-Code Mnemonic Keterangan F4 CPL F4h merupakan Opcode operasi komplement a tanpa operand E540 MOV A, 40h E5h operasi untuk register A dengan memory internal dengan alamat tertera dalam operand (40h) 753130 MOV 41, #30h 75h merupakan opcode dengan operand 41h dan 30h. A Mode Penggalamatan Mode penggalamatan berdasarkan orientasi alokasi memory Dari tabel diatas perintah MOV di ikuti oleh opcode yang berbeda, karena jenis penggalamatannya berbeda. Perbedaan ini di kenal sebagai ragam penggalamatan atau mode pengalamatan. Register Addressing Menggunakan register R0 s/d R7 yang diseleksi oleh register Program Staus Word (PSW). Mnemonic Keterangan ADD A,R7 Register a diisi dgn isi a awal ditambah isi register R7. atau ditulis A = A+ R7 kode mesinnya adalah 2Fh = 00101111b Lima bit awal merupakan instruksi dan tiga bit akhir merupakan register tujuan, lihaT tabel dibawah. Kode Mesin register tujuan Kedua tabel ini mengambarkan format bahasa mesin pada mikrokontroler 89C51. Direct Addressing Direct Addressing atau penggalamatan langsung hanya dapat dilakukan di internal memory mikrokontroler (tidak dapat mengakses memory luar). Penggalamatan langsung menggunakan: Accumulator Register dan Port Contoh Penggalamatan langsung: Mov P2, A Isi Port P2 dengan data dari register A ADD A, 50h Tambahkan isi accumulator dengan data yang ada dilokasi memory 50 h (A = A + isi data di lokasi memory 50h) Indirect Addressing Indirect Addressing atau penggalamatan tidak langsung diberi simbol @ (at). Pengertiannya disana tempat data yang harus di baca terlebih dahulu. Contoh Penggalamatan tidak langsung: Mov A, @R7 Baca dulu isi register R7, misalnya isinya 30h. Selanjutnya isi register A dengan data yang ada di alamat 30h. Immediate Addressing Immediate Addressing atau penggalamatan segera Penggalamatan pada operasi-operasi dengan konstanta ysng sudsh menyatu dengan op-code program. penggalamatan segera ditandai dengan simbol # Contoh Penggalamatan segera: Mov A, # 200 Isi A dengan 200d. Relative Addressing Relative Addressing atau penggalamatanberlaku pada operasi lompat dengan jarak 8 bit (256 langkah), operasi ini lompat sejauh + 127 langkah atau mundur – 128 langkah. Operasi ini menggunakan perintah SJMP. Tipe Instruksi Mode penggalamatan berdasarkan jenis-jenis instruksi, tipe intruksi terbagi atas: Aritmatika Instruksi logika Transper data Manipulasi dan operasi boelean Pencabangan Simbol-simbol yang di gunakan mnemonic dapat dilihat pada tabel di bawah Simbol Rn Direct Keterangan Register Multiguna R0 s/d R7 di dalam register BANK yang di pilih oleh PSW 8 bit alamat internal RAM (0 s/d 127) atau Special function Register (128 s/d 255) @ Rn Lokasi RAM internal yang ditunjukan oleh R0 s/d R7 (pada Indirect Addressing), tetapi tidak berlaku pada R3, R4, R5, R6 dan R6 # Data Konstanta 8 Bit # Data16 Konstanta 16 Bit addr 11 Alamat 11 bit dalam mengakses memory hingga 2K addr 16 Alamat 11 bit dalam mengakses memory hingga 64K Rel 8 bit offset relatif mempunyai tanda (2’s complement), dalaminstruksi SJMP, mundur sejauh 128 atau maju sejauh 127 Bit Lokasi Bit yang di alamati langsung pada internal RAM dan SFR Instrusi Aritmatika Perintah-perintah perhitungan yang digunakan dalam bahasa Assemler dapat di lihat pada tabel di bawah No Mnemonic Keterangan 1 ADD A, (Source) Isi A= A + (Source) 2 ADDC A, (Source) Isi A= A + (Source) + Carry 3 SUBB A, (Source) Isi A= A - (Source) - Carry 4 INC A Isi A= A + 1 5 INC (Source) Isi (Source) = (Source) -1 6 DEC A Isi A= A - 1 7 DEC (Source) Isi (Source) = (Source) -1 8 INC DPTR Isi DPTR = DPTR + 1 9 MUL AB Isi AB= A x B 10 DIV AB A = A :B 11 DA A Decimal Adjust ; B = sisa A :B Penjumlahan Sumber ( source ) adalah operand dengan beragam penggalamatan; register, direct, indirect dan immediate. Dibawah ini beberapa contoh intruksi Aritmatika: ADD A, 0CH ADD A,@R1 ADD A,R4 ADD A,# 145 ; a diidi dengan a+ isi memori lokasi 0CH ; ( pengalamatan langsung ) ; a diisi dengan a+isi dari memori yang alamatnya ; disimpan di R1 ( penggalamatan taklangsung ) ; a diisi dengan a+isi dari R4 ; a diisi dengan a+145 ( penggalamatan segera ) Umumnya instruksi-instruksi aritmatika dieksekusi dalam 1µs kecuali instruksi INC DPTR yang memerlukan waktu 2µs dan intruksi DIV membutuhkan waktu 4µs. Increment dan Decriment Instruksi Increment dan Decriment berfungsi untuk menaikan dan menurunkan data yang tersimpan di dalam memori internal tanpa melalui accumulator. Perkalian Untuk perkalian memakai instruksi MUL AB mengalikan accumulator dengan data yang ada pada register B dan menempatkan hasil perkalian sebanyak 16 bit pada register A dan register B . Register A berisikan lo-byte dan Register B berisikan hi-byte, tetapi jika hasil perkalian lebih besar dari 256 (00FFH) maka bit 0V set, sedangkan bit CY selalu akan diclearkan ( ‘0’ ). Pembagian Mempergunakan instruksi DIV AB membagi isi accumulator dengan data di dalam register B dan meletakan hasil sebanyak 8bit pada accumulator dan sisa pembagian sebanyak 8 bit pada register B. Pemakaian instruksi DA A digunakan untuk operasi aritmatika BCD. Perintah-perintah ADD dan ADDC diikuti dengan sebuah perintah DA A agar didapatkan hasil dalam format BCD.Contoh: MOV A, 29h ADD A+1 DA A ; Isi A dengan data 29h ; isi A = 2Ah (dalam BCD kita mengharapkan hasilnya = 30h) Agar hasilnya = 30h tambahkan perintah DA A ; isi A= 30h Instrusi Logika Instruksi logika pada MCS-51 merupakan operasi boolean (bit ) yang terdiri dari operasi AND, OR, EXOR dan NOT antar bit dalam sebuah register. Tabel dibawah ini berisikan bentuk-bentuk instruksi mikrokontroler 89C51. Mnemonic Diskripsi ANL <dest>,<source> <dest>=<dest> AND <source> ORL <dest>,<source> <dest>=<dest> OR <source> XRL <dest>,<source> <dest>=<dest> XOR <source> CLR A Kosongkan A CPL A Komplemenkan A RL A Geser byte A kekanan RLC A Geser byte A kekanan via C RR A Geser byte A kekiri RRC A Geser byte A kekkiri via c SWAP A Tukar nibble dari a Dest (ination)/ Operand adalah tujuan: < dest> dan <source> adalah dua operand dengan beragam kombinasi penggalamatan Tabel Instruksi Logika Bit 1 Bit 2 Hasil Operasi AND Hasil Operasi OR Hasil Operasi XOR 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 Dibawah ini contoh operasi aritmatika pada MCS-51: ;Operasi AND MOV AND A, # 10010010B ; isi A A, # 10111010B ; di AND kan dengan ; hasil disimpan di A 10010010B 10111010B 10010010B ; Operasi OR ORL ORL ORL ORL a,7FH a,@R0 a,R7 a,#35 ; dirrect addressing ; indirrect addressing ; register addressing ; immediate constans ; Operasi EXOR XRL 00001111B P1,#0FH ; port P1 di EXOR kan dengan ; hasil P1 akan dikomplemenkan SOAL-SOAL 1. Mikrokontroler, menggunakan operasi sepanjang….: a. 4 bit c. 4 byte b. 8 bit d. 2 byte 2. Program status word terdapat didalam Register ….: a. SCR c. SFR b. LDR d. NTR 2. Program status word terdapat didalam Register ….: a. SCR c. SFR b. LDR d. NTR 3. Perintah/interuksi untuk memanggil subrutin adalah: a. MOV c. CALL b. INT d. ADD 3. Perintah/interuksi untuk memanggil subrutin adalah: a. MOV c. CALL b. INT d. ADD 4. Simbol-simbol instruksi seperti: MOV, CPL, RR, dan lain-lain dikenal dengan: a. Mnemonic c. Operand b. Source d. Deskripsi 4. Simbol-simbol instruksi seperti: MOV, CPL, RR, dan lainlain dikenal dengan: a. Mnemonic c. Operand b. Source d. Deskripsi 5. instruksi AND, OR, EXOR dan NOT merupakan instruksi : a. Pembagian c. Perkalian b. Logika d. Pembagian 5. instruksi AND, OR, EXOR dan NOT merupakan instruksi : a. Pembagian c. Perkalian b. Logika d. Pembagian 1. Mikrokontroler ,menggunakan operasi sepanjang….: a. 4 bit c. 4 byte b. 8 bit d. 2 byte