Pertemuan 05 - Set Intruksi Mikrokontroler 89C51

advertisement
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
Download