Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan)

advertisement
PERTEMUAN
SET INSTRUKSI
MIKROKONTROLER AT 89C51
(Lanjutan)
Rotate
Perintah Rotate identik dengan Shift register dimana
bit-bit dalam byte di geser ke kiri atau kekanan
dengan atau tanpa carry.
Perintah-perintah Rotate dalam bahasa assembler adalah:
Mnemonic
Keterangan
RL
Rotate Left = Putar 1 Bit data kekiri
RR
Rotate Right = Putar 1 Bit data kekanan
RLC
Rotate Left Carry = Putar 1 Bit data kekiri melalui Carry
RRC
Rotate Right Carry = Putar 1 Bit data kekanan melalui Carry
Proses Rotate di dalam Accumulator
Swap
Instruksi Swap adalah perintah untuk menukar nible
dari byte dalam accumulator, nible rendah ditukar
dengan nible tinggi.
Contoh Pemakaian instruksi nible dalam bahasa Assemler:
Mov
Swap
a,#FAh
a
; iasi a dengan FAh
; isi a menjadi AFh
Data Transper
Instruksi MOV adalah perintah salin data dari
sumber ke tujuan tanpa merubah data yang ada di
sumber.
Copy data bisa antar internal memory atau dengan
eksternal memory.
Instruksi transfer data yang lain adalah : PUSH,
POP, XCH danXCHD
Mnemonic
Keterangan
MOV <dest>,<source>
<dest> =<source>, memori int
MOV DPTR, #data16
DPTR = data16
MOV A, @A+<base-reg>
A = isi dilokasi A + <base-reg>
MOVC <dest>,<source>
<dest> =<source>, data memori
PUSH direct
simpan data ke memory stack
POP direct
ambil data ke memory stack
XCH <byte>
XCHD A,@Rn
Keterangan Data Transfer
Internal memory
MOV <dest>,<source> adalah perintah copy data dari source ke
destination ( dari sumber ketujuan).
Sumua internal memory dan Special function Register dapat
digunakan sebagai sumber.
Sebagian besar internal memory dan Special function Register
dapat digunakan sebagai sumber
Contoh:
Kondisi awal isi RAM dengan alamat 30h adalah 40h, lokasi 40h berikan data
berisikan 11110001b
MOV
MOV
MOV
MOV
MOV
MOV
R0,# 30h
A,@R
R1,A
B, @R1
@R1,P1
P3,P1
10h, P1
; isi R0 dengan 30h
; A berisikan 40h
; Isikan data di alamat 40h ke R1 (R1 berikan 10h)
; isi B adalah 10h
; alamat 40h berisikan data 11110000b
; isi P3=P1= 11110000b
Program memory
MOVC merupakan perintah code bit, Mengopy isi
memori program (dikatifkan dengan PSEN)di lokasi
yang di berikan register dasar (DPTR atau PC).
Contoh:
MOV
A,@A+DPTR
MOV
A,@R+PC
Data memory
MOVx merupakan mov external untuk mengopy
data dari memori data ke memori data.
Perintah ini dapat alamat 2 byte 00h - FFh, dengan
jangkauan 0 s/d 255.
Instruksi MOVX menggunakan indirect addresing
menggunakan register R0 atau R1.
Contoh:
MOV
MOV
A,@R0
@R1,A
; Copy data di memori R0 ke A
; Copy isi A ke lokasi memori R!
Proses Stack
Instruksi yang digunakan adalah:
PUSH artinya mendorong dari kata pushing
POP artinya menampilkan kembali
dari kata poping
Proses stack di gunakan untuk mengamankan suatau data
karena register tempat data tersebut di gunakan untuk
proses yang lain, atau untuk mengingat alamat yang
ditinggalkan data karena ada pemanggilan sun rutin pada
proses interupsi.
Proses stack menggunakan register stac pointer (SP).
Contoh instruksi di bawah menjelaskan proses stack
MOV
MOV
SP, # 2Fh
A, # AAh
; isi SP dengan 2Fh
; isi A dengan BBh
MOV
PUSH
B, # BBh
ACC
; isi B dengan CCh
; memori lokasi 30h berisikan AAh, SP=30h
PUSH
B
cat: Compiler tidak mengenal PUSH A, tetapi PUSH ACC
; memori lokasi 31h berisikan CCh, SP=31h
PUSH
POP
POP
B
ACC
B
; memori lokasi 32h berisikan CCh, SP=32h
; A= memori lokasi 32hdengan isi data CCh, SP=31h
; B= memori lokasi 31hdengan isi data BBh, SP=30h
PUSH
Menaikan isi Stack pointer (SP) menjadi SP+1,
kemudian mendorong data lansung ke alamat yang
ditunjuk stack pointer k alamat yang ditunjuk Stack Pointer,
kemudian isi stack pointer dikurangi satu.
Prosesnya dilkenal dengan istilah Last In First Out (LIFO)
atau data yang terahir masuk keluar terlebih dahulu.
Di dalam mikrokontrler 89C51 stack pointer menunjuk
memori internal dialamat awal 30 h.
Pertukaran data
Intruksi yang di gunakan adalah XCH (exchange).
XCH (exchange) adalah pertukaran data di dalam
dua accumulator dengan ukuran byte.
Penggalamatan XHC bisa dengan cara direct,
register atau indirect.
Contoh:
MOV
MOV
XHC
A,#DDh
B,#EEh
A,B
; isi A dengan DDh
; isi B dengan EEh
; isi A=EE dan isi B=DDh
XCHD adalah pertukaran nible rendah antara
accumulator dengan memori denen cara penggalamatan
tidak langsung.
Instruksi ini tidak menyebabkan nible tinggi berubah.
Contoh:
MOV
MOV
A,#FDh
20h,#AAh
; isi A dengan FDh
; Alamat memori 20h berisikan ACh
MOV
XHCD
R2,#20h
A,#R2
; isi R1 dengan 20h
; tukar nible antara A dengan memori
di alamat 20h, A=ADh, dan memori
dengan alamat 20h berisikan data= FCh
Pencabangan Program
Pencabangan program dalam bahasa assembler di perlukan
untuk kebutuhan lompat kelokasi memori dengan alamat
tertentu.
Pencabangan program terdiri dari:
Pelaksanaan subrutin
Pencabangan bersyarat
Pencabangan tanpa syarat
Tabel pencabangan program
Mnemonic
Keterangan
AACALL addr11
Jalankan subrutin di addr11
LCALL add 16
Jalankan subrutin di addr16
RET
Kembali dari subrutin
RETI
Kembali dari service interupsi
AJMP addr11
Lompat kealamat addr11
SJMP add 16
Lompat kealamat addr16
JMP @A + DPTR
Lompat kealamat A+DPTR
JZ rel
Lompat ke rel jika A= 0
DJNZ rel
Lompat ke rel jika A ≠ 0
CJNE <dest-byte>,<scrbyte>,rel
Bila ,dest> ≠ <source> lompat sejauh rel
CJNE A,#data,rel
Bila A ≠ data lompat sejauh rel
DJNZ direct,rel
Direct = Direct-1, bila ≠ 0 lompat sejauh rel
NOP
No operation atau tidak ada operasi
Subrutin
Sub rutin adalah potongan program yang terdapat pada
memori program yang sering digunakan. Pada
mikrokontroler 89C51 subrutin dapat dipanggil dengan
instruksi:
ACALL
LCALL
ACALL dapat memanggil 2K (11 line), sedangkan
LCALL dapat memanggil sampai 64 K
Jika program menjalankan intruksi ACALL dan LCALL maka
memori stack di gunakan untuk menyimpan data-data alamat
yang ditinggalkan. Untuk kembali ke program utama setelah
menjalankan subrutin maka digunakan intruksi RET.
Pencabangan tak bersyarat
Dalam bahasa assemlerr untuk pencabangan program
menggunakan instruksi JMP diambil dari kata jump atau
lompat.
Jika dilihat dari pembahasan subrutin diatas berarti subrutin
adalah lompat dan kembali lagi.
Pencabangan tak bersyarat, biasanya tidak kembali lagi
tetempat semula.
Pencabangan relatif menggunakan perintah SJMP sejauh
– 128 (mundur) atau +127(maju).
Instruksi JMP @A+DPTR lompat absolut ke lokasi yang
ditunjuk pada lokasi yang ditentukan oleh DPTR + isi A.
Pencabangan bersyarat
Pencabangan bersyarat artinya lompat kealamat tertentu
jika persyaratannya dipenuhi.
Instruksi yang di gunakan adalah CJNE<dest-byte>, <srcbyte>,rel. pengertiannya compare destination byte and
source byte, jump if not equal along rel (aktif)
Contoh:
Mulai:
CJNE
CJNE
A,#040h, Label1
A,P2, Label1
Label1
______
_______
; Bandikan A dengan 40h, jika tidak sama lompat
ke label1
; Bandikan A dengan P2, jika tidak sama lompat
ke label1
Perintah DJNZ (Decriment Jump if not Zero) pengertiannya
adalah data di register di kurang satu jika hasilnya nol
kembali ke ke program utama.
Instruksi DJNZ di gunakan untuk counter atau pencacah.
Contoh:
Mulai:
MOV
Ro, #2
; isi R0 dengan 2
MOV
R1,# 20H
; isi R1 dengan 20h
MOV
INC
DJNZ
SJM$
@R1, #BBh
R1
R0,Putar
; isis memori R1 dengan BBh
; R1=R!+1
; R0=R0-1 ≠0, kembali putar
;selesai
Putar:
No Operation
Perintah NOP memerintahkan mikrokontroler 89C51 untuk
menunda menjalankan program.
Perintah NOP membutuhkan waktu 1 µs, sehingga perintah
ini dapat di gunakan untuk delay.
SOAL-SOAL
1. Intruksi dalam bahasa assembler yang identik dengan shift
register:
a. MOV
c. CALL
b. Rotate
d. LJUMP
2. Intruksi MOV dalam bahasa assembler mikrokontroler
berfungsi dalam proses….:
a. Interupt
b. Timer/conter
c. Operasi logika
d. Transper data
2. Intruksi MOV dalam bahasa assembler mikrokontroler
berfungsi dalam proses….:
a. Interupt
b. Timer/conter
c. Operasi logika
d. Transper data
3. Perintah untuk menaikan isi stack pointer adalah …..:
a. PUSH
b. INT
c. CALL
d. ADD
3. Perintah untuk menaikan isi stack pointer adalah …..:
a. PUSH
b. INT
c. CALL
d. ADD
4. Perintah/instruksi untuk memanggil subrutin adalah …..:
a. CALL
b. LCALL
c. A dan B benar
d. A dan B Salah
4. Perintah/instruksi untuk memanggil subrutin adalah …..:
a. CALL
b. LCALL
c. A dan B benar
d. A dan B Salah
5. Intruksi NOP bisa di gunakan untuk ….:
a. Interupsi
b. Delay
c. Polling
d. Semua jawaban salah
5. Intruksi NOP bisa di gunakan untuk ….:
a. Interupsi
b. Delay
c. Polling
d. Semua jawaban salah
1. Intruksi dalam bahasa assembler yang identik dengan shift
register:
a. MOV
c. CALL
b. Rotate
d. LJUMP
Download