Pertemuan 05 - Set Intruksi Mikrokontroler 89C51 · mode pengalamatan. Mode penggalamatan...

Post on 07-Mar-2019

232 views 1 download

Transcript of Pertemuan 05 - Set Intruksi Mikrokontroler 89C51 · mode pengalamatan. Mode penggalamatan...

PERTEMUAN

SET INSTRUKSI MIKROKONTROLER AT

89C51

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

Pendahuluan

Instruksi 8 bit memberikan 256 kemungkinan instruksi

Di bawah contoh instruksi:CPL aMOV a, 40hMOV 41, #30h

CPL a ; komplementkan isi reg A, kodenya F4hMOV a, 40h ; isi reg A dgn isi memori lokasi 40h, kodenya E5h 40hMOV 41, #30h ; 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 bitThe Auxiliary Carry (Dalam operasi BCD)Dua bit pemilih bank registerOverflow Flogsatu bit paritasDan dua bit status

Carry bit mempunyai dua fungsi yaitu:1. Carry (status bit sisa) pada operasi aritmatika2. Sebagai Accumulator dalam beberapa operasi

boolean

Bit RS0 dan RS1 berfungsi untuk memilih salah satu dari 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 0Flag 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 yang dapat di deenisikan penggunaFlag Auxiliary Carry menerima Carry Out dari Bit 1 operand-operand penjumlahan

Bit 1 pemilih Bank Register

Flag status multyguna Flag Overflow (limpahan) di set melalui operasi Aritmatika

PSW 5

PSW 4

PSW 2

PSW 3

Bit 0 pemilih Bank Register

Mnemonic & Opcode

Mnemonic adalah simbol-simbol instruksi/perintah seperti:Mov, CPL, RR, SJMP dan lain-lain.

CPL A ; komplementkan isi reg A, kodenya F4hMOV A, 40h ; isi reg A dgn isi memori lokasi 40h, kodenya E5h 40hMOV 41, #30h ; 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.kedalam bahasa mesin sebelum di eksekusi.

Op-Code Mnemonic Keterangan

F4 CPL A 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.

Mode Penggalamatan

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.

Mode penggalamatan berdasarkan orientasi alokasi memory

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 atau penggalamatan langsung hanya dapat dilakukan di internal memory mikrokontroler (tidak dapat mengakses memory luar).Penggalamatan langsung menggunakan:

AccumulatorRegister

Direct Addressing

Registerdan 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 atau penggalamatan tidak langsung diberi simbol @ (at).Pengertiannya disana tempat data yang harus di baca terlebih dahulu.

Indirect Addressing

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 atau penggalamatan segera Penggalamatan pada operasi-operasi dengan konstanta ysng sudsh menyatu dengan op-code program. penggalamatan segera ditandai dengan simbol #

Immediate Addressing

Contoh Penggalamatan segera: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:

AritmatikaInstruksi logikaTransper dataManipulasi dan operasi boeleanPencabangan

Simbol-simbol yang di gunakan mnemonic dapat dilihat pada tabel di bawah

Pencabangan

Simbol Keterangan

RnRegister Multiguna R0 s/d R7 di dalam register BANK yang di pilih oleh PSW

Direct 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 64Kaddr 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 AritmatikaPerintah-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 ; B = sisa A :B

11 DA A Decimal Adjust

Sumber ( source ) adalah operand dengan beragam penggalamatan; register, direct, indirect dan immediate.

Dibawah ini beberapa contoh intruksi Aritmatika:

ADD A, 0CH ; a diidi dengan a+ isi memori lokasi 0CH

Penjumlahan

ADD A, 0CH ; a diidi dengan a+ isi memori lokasi 0CH; ( pengalamatan langsung )

ADD A,@R1 ; a diisi dengan a+isi dari memori yang alamatnya ; disimpan di R1 ( penggalamatan taklangsung )

ADD A,R4 ; a diisi dengan a+isi dari R4ADD A,# 145 ; 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.

Instruksi Increment dan Decriment berfungsi untukmenaikan dan menurunkan data yang tersimpan di dalam memori internal tanpa melalui accumulator.

Increment dan Decriment

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’ ).

Mempergunakan instruksi DIV AB membagi isiaccumulator dengan data di dalam register B dan

meletakan hasil sebanyak 8bit pada accumulator dan sisa pembagian sebanyak 8 bit pada register B.

Pembagian

MOV A, 29h ; Isi A dengan data 29hADD A+1 ; isi A = 2Ah (dalam BCD kita mengharapkan hasilnya = 30h)

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:

ADD A+1 ; isi A = 2Ah (dalam BCD kita mengharapkan hasilnya = 30h)Agar hasilnya = 30h tambahkan perintah DA A

DA A ; isi A= 30h

Instrusi LogikaInstruksi 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>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

Hasil Operasi

Hasil Operasi Operasi

ANDOperasi

OROperasi

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 A, # 10010010B ; isi A 10010010BAND A, # 10111010B ; di AND kan dengan 10111010B

; hasil disimpan di A 10010010B

; Operasi OR; Operasi OR

ORL a,7FH ; dirrect addressingORL a,@R0 ; indirrect addressingORL a,R7 ; register addressing

ORL a,#35 ; immediate constans

; Operasi EXOR

XRL P1,#0FH ; port P1 di EXOR kan dengan 00001111B

; hasil P1 akan dikomplemenkan

SOAL-SOALSOAL-SOAL

1. Mikrokontroler, menggunakan operasi sepanjang….:a. 4 bit c. 4 byteb. 8 bit d. 2 byte

2. Program status word terdapat didalam Register ….:2. Program status word terdapat didalam Register ….:a. SCR c. SFRb. LDR d. NTR

2. Program status word terdapat didalam Register ….:a. SCR c. SFRb. LDR d. NTR

3. Perintah/interuksi untuk memanggil subrutin adalah:a. MOV c. CALLa. MOV c. CALLb. INT d. ADD

3. Perintah/interuksi untuk memanggil subrutin adalah:a. MOV c. CALLb. INT d. ADD

4. Simbol-simbol instruksi seperti: MOV, CPL, RR, dan lain-lain dikenal dengan: dikenal dengan:

a. Mnemonic c. Operandb. Source d. Deskripsi

4. Simbol-simbol instruksi seperti: MOV, CPL, RR, dan lain-lain dikenal dengan:

a. Mnemonic c. Operandb. Source d. Deskripsi

5. instruksi AND, OR, EXOR dan NOT merupakan instruksi :5. instruksi AND, OR, EXOR dan NOT merupakan instruksi :a. Pembagian c. Perkalianb. Logika d. Pembagian

5. instruksi AND, OR, EXOR dan NOT merupakan instruksi :a. Pembagian c. Perkalianb. Logika d. Pembagian

1. Mikrokontroler ,menggunakan operasi sepanjang….:a. 4 bit c. 4 bytea. 4 bit c. 4 byteb. 8 bit d. 2 byte