Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register...

24
PERTEMUAN SET INSTRUKSI MIKROKONTROLER AT 89C51 (Lanjutan)

Transcript of Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register...

Page 1: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

PERTEMUAN

SET INSTRUKSI MIKROKONTROLER AT 89C51

(Lanjutan)

Page 2: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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

Page 3: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Proses Rotate di dalam Accumulator

Page 4: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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 a,#FAh ; iasi a dengan FAh

Swap

Data Transper

Mov a,#FAh ; iasi a dengan FAhSwap a ; isi a menjadi AFh

Instruksi MOV adalah perintah salin data dari sumber ke tujuan tanpa merubah data yang ada di sumber.

Page 5: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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

Page 6: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Keterangan Data Transfer

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.

Internal memory

Contoh:

Sebagian besar internal memory dan Special function Register dapat digunakan sebagai sumber

Kondisi awal isi RAM dengan alamat 30h adalah 40h, lokasi 40h berikan data 10h, P1 berisikan 11110001b

MOV R0,# 30h ; isi R0 dengan 30h MOV A,@R ; A berisikan 40hMOV R1,A ; Isikan data di alamat 40h ke R1 (R1 berikan 10h)MOV B, @R1 ; isi B adalah 10hMOV @R1,P1 ; alamat 40h berisikan data 11110000bMOV P3,P1 ; isi P3=P1= 11110000b

Contoh:

Page 7: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

MOVC merupakan perintah code bit, Mengopy isi memori program (dikatifkan dengan PSEN)di lokasi yang di berikan register dasar (DPTR atau PC).

Program memory

Contoh:

MOV A,@A+DPTRMOV A,@A+DPTR

MOV A,@R+PC

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.

Data memory

Page 8: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Instruksi MOVX menggunakan indirect addresing menggunakan register R0 atau R1.

Contoh:

MOV A,@R0 ; Copy data di memori R0 ke AMOV @R1,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

Page 9: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack

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.

Contoh instruksi di bawah menjelaskan proses stack

MOV SP, # 2Fh ; isi SP dengan 2FhMOV A, # AAh ; isi A dengan BBhMOV B, # BBh ; isi B dengan CChPUSH ACC ; memori lokasi 30h berisikan AAh, SP=30h

cat: Compiler tidak mengenal PUSH A, tetapi PUSH ACCPUSH B ; memori lokasi 31h berisikan CCh, SP=31hPUSH B ; memori lokasi 32h berisikan CCh, SP=32hPOP ACC ; A= memori lokasi 32hdengan isi data CCh, SP=31hPOP B ; B= memori lokasi 31hdengan isi data BBh, SP=30h

Page 10: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

PUSHMenaikan 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.

atau data yang terahir masuk keluar terlebih dahulu.

Page 11: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Pertukaran data

Contoh:

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.

XCHD adalah pertukaran nible rendah antara accumulator dengan memori denen cara penggalamatan tidak langsung.Instruksi ini tidak menyebabkan nible tinggi berubah.

Contoh:

MOV A,#DDh ; isi A dengan DDhMOV B,#EEh ; isi B dengan EEhXHC A,B ; isi A=EE dan isi B=DDh

Page 12: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Contoh:

MOV A,#FDh ; isi A dengan FDhMOV 20h,#AAh ; Alamat memori 20h berisikan AChMOV R2,#20h ; isi R1 dengan 20hXHCD A,#R2 ; tukar nible antara A dengan memori

di alamat 20h, A=ADh, dan memori dengan alamat 20h berisikan data= FCh

Pencabangan Program

Pencabangan program terdiri dari:Pelaksanaan subrutin

Pencabangan bersyaratPencabangan tanpa syarat

Pencabangan Program

Pencabangan program dalam bahasa assembler di perlukan untuk kebutuhan lompat kelokasi memori dengan alamat tertentu.

Page 13: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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 addr16SJMP 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>,<scr-byte>,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

Page 14: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Subrutin

Sub rutin adalah potongan program yang terdapat pada memori program yang sering digunakan. Pada mikrokontroler 89C51 subrutin dapat dipanggil dengan instruksi:

ACALLLCALLLCALL

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.

ACALL dapat memanggil 2K (11 line), sedangkan LCALL dapat memanggil sampai 64 K

Page 15: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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.

Instruksi JMP @A+DPTR lompat absolut ke lokasi yang ditunjuk pada lokasi yang ditentukan oleh DPTR + isi A.

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

Page 16: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

Pencabangan bersyarat

Pencabangan bersyarat artinya lompat kealamat tertentu jika persyaratannya dipenuhi.

Instruksi yang di gunakan adalah CJNE<dest-byte>, <src-byte>,rel. pengertiannya compare destination byte and source byte, jump if not equal along rel (aktif)source byte, jump if not equal along rel (aktif)

Contoh:

Mulai:CJNE A,#040h, Label1 ; Bandikan A dengan 40h, jika tidak sama lompat

ke label1CJNE A,P2, Label1 ; Bandikan A dengan P2, jika tidak sama lompat

ke label1Label1

_____________

Page 17: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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 2MOV R1,# 20H ; isi R1 dengan 20h

Putar:MOV @R1, #BBh ; isis memori R1 dengan BBhINC R1 ; R1=R!+1DJNZ R0,Putar ; R0=R0-1 ≠0, kembali putarSJM$ ;selesai

Page 18: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

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.

Page 19: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

SOAL-SOALSOAL-SOAL

Page 20: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

1. Intruksi dalam bahasa assembler yang identik dengan shift register:

a. MOV c. CALLb. Rotate d. LJUMP

2. Intruksi MOV dalam bahasa assembler mikrokontroler berfungsi dalam proses….:

a. Interuptb. Timer/conterc. Operasi logikad. Transper data

Page 21: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

2. Intruksi MOV dalam bahasa assembler mikrokontroler berfungsi dalam proses….:

a. Interuptb. Timer/conterc. Operasi logikad. Transper datad. Transper data

3. Perintah untuk menaikan isi stack pointer adalah …..:a. PUSHb. INTc. CALLd. ADD

Page 22: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

3. Perintah untuk menaikan isi stack pointer adalah …..:a. PUSHb. INTc. CALLd. ADD

4. Perintah/instruksi untuk memanggil subrutin adalah …..: a. CALLb. LCALLc. A dan B benard. A dan B Salah

Page 23: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

4. Perintah/instruksi untuk memanggil subrutin adalah …..: a. CALLb. LCALLc. A dan B benard. A dan B Salah

5. Intruksi NOP bisa di gunakan untuk ….:a. Interupsib. Delayc. Pollingd. Semua jawaban salah

Page 24: Pertemuan 06 - Set Instruksi Mikrokontroler 89C51 (Lanjutan) · Proses stack menggunakan register stac pointer (SP). Contoh instruksi di bawah menjelaskan proses stack Proses stack

5. Intruksi NOP bisa di gunakan untuk ….:a. Interupsib. Delayc. Pollingd. Semua jawaban salah

1. Intruksi dalam bahasa assembler yang identik dengan shift register:

a. MOV c. CALLb. Rotate d. LJUMP