47
BAB VIII MIKROKONTROLER Pendahuluan Dalam bab ini akan dibahas tujuan perkuliahan, pengertian mikrokontroler, macam-macam dan tipe mikrokontroler, keunggulan dan kelemahan mikrokontroler, arsitektur mikrokontroler, organisasi memori, instruksi dan bahasa pemograman mikrokontroler, dan contoh-contoh program aplikasi. Tujuan Perkuliahan Setelah mempelajari bab ini, diharapkan mahasiswa mampu untuk : 1. Memahami pengertian mikrokontroler dan perbedaannya dengan mikroprosesor 2. Menjelaskan beberapa tipe mikrokontroler keunggulanya dan kelemahannya. 3. Memahami arsitektur mikrokontroler 4. Memahami organisasi memori mikrokontroler 5. Memahami set instruksi yang terdapat pada MCS-51. 6. Memahami bahasa pemograman pada MCS-51 . 7. Membuat program aplikasi . 8.1. Pengertian Mikrokontroler Mikrokontroller sering disebut sebagai komputer single chip, hal ini karena dalam chip mikrokontroler berisi semua komponen dasar komputer dalam skala kecil. Mikrokontroler berbeda dengan mikroprosesor. Mikroprosesor adalah single chip CPU yang digunakan dalam sistem komputer, sedangkan mikrokontroler adalah single chip sistem komputer yang di dalamnya sudah terdapat CPU, ROM, RAM, dan I/O. Bahkan ada mikrokontroler di dalamnya, selain CPU, RAM, ROM, I/O terdapat ADC/DAC, timer, counter, decoder, Clock, dan lain sebagainya. Kapasitas memori mikrokontroler pada umumnya terbatas tidak seperti pada sistem komputer sekala besar. 145

BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

BAB VIII MIKROKONTROLER

Pendahuluan

Dalam bab ini akan dibahas tujuan perkuliahan, pengertian mikrokontroler,

macam-macam dan tipe mikrokontroler, keunggulan dan kelemahan

mikrokontroler, arsitektur mikrokontroler, organisasi memori, instruksi dan

bahasa pemograman mikrokontroler, dan contoh-contoh program aplikasi.

Tujuan Perkuliahan

Setelah mempelajari bab ini, diharapkan mahasiswa mampu untuk :

1. Memahami pengertian mikrokontroler dan perbedaannya dengan

mikroprosesor

2. Menjelaskan beberapa tipe mikrokontroler keunggulanya dan

kelemahannya.

3. Memahami arsitektur mikrokontroler

4. Memahami organisasi memori mikrokontroler

5. Memahami set instruksi yang terdapat pada MCS-51.

6. Memahami bahasa pemograman pada MCS-51 .

7. Membuat program aplikasi .

8.1. Pengertian Mikrokontroler

Mikrokontroller sering disebut sebagai komputer single chip, hal ini karena

dalam chip mikrokontroler berisi semua komponen dasar komputer dalam skala

kecil. Mikrokontroler berbeda dengan mikroprosesor. Mikroprosesor adalah

single chip CPU yang digunakan dalam sistem komputer, sedangkan

mikrokontroler adalah single chip sistem komputer yang di dalamnya sudah

terdapat CPU, ROM, RAM, dan I/O. Bahkan ada mikrokontroler di dalamnya,

selain CPU, RAM, ROM, I/O terdapat ADC/DAC, timer, counter, decoder,

Clock, dan lain sebagainya. Kapasitas memori mikrokontroler pada umumnya

terbatas tidak seperti pada sistem komputer sekala besar.

145

Page 2: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

8.2. Arsitektur

Setiap mikrokontroler mempunyai arsitektur yang berbeda-beda antara yang

satu dengan yang lainnya. Dibawah ini akan dijelaskan beberapa mikrokontroler

yang cukup populer yang telah beredar dipasaran. pemilihan mikrokontroler tentu

dengan berbagai pertimbangan yaitu memiliki dokumentasi yang baik, harga yang

terjangkau, dan dengan berbagai peralatan pengembangan yang lengkap

(development tools). Selanjutnya akan diperkenalkan beberapa mikrokontroler

berbagai produk antara lain, Intel 8051, Motorola 68HC11, Microchip PIC ,

Atmel 89C51, dan Zilog dengan seri Z 86.

Intel 8051

Menggunakan arsitektur modifikasi Harvard dengan alamat terpisah untuk

memori program dan data. Memori untuk program bisa dialamati hingga 64 K.

Memori bawah (4K, 8K atau 16K tergantung tipe) bisa terletak di chipnya.

Mikrokontroler ini memiliki 128 byte memori internal ditambah beberapa register

(SFR), juga bisa mengalamati hingga 64K memori eksternal untuk data. Fasilitas

software, baik untuk software komersil maupun gratis cukup tersedia untuk

mikrokontroler 8051 ini. Mikrokontroler ini memiliki banyak varian sehingga

mampu memenuhi keperluan yang berbeda. Mikrokontroler ini tidak hanya

diproduksi oleh Intel tetapi juga oleh beberapa yang lainnya.

MC 6805 (Motorola)

Memiliki arsitektur Von Neuman dimana instruksi, data, I/O, dan timer terdapat

pada satu daerah memori. Stack pointer yang dimiliki adalah 5 bit sehingga

kedalaman stack terbatas hingga 32 byte. Beberapa mikrokontroler dari keluarga

ini memiliki ADC, PLL, Frequency Synthesizer, serial I/O dan software security.

PIC (Micro Chip)

Mikrokontroler PIC merupakan mikrokontroler RISC (Reduced Instruction Set

Compute) yang pertama. Pada umumnya RISC mengakibatkan kesederhanaan

rancangan dan memungkinkan untuk menambah kemampuanya dengan biaya

yang rendah. Walaupun hanya memiliki sedikit instruksi (33 instruksi untuk

16C5x), keluarga PIC memiliki banyak keunggulan yang sudah merupakan bagian

dari chip. Dengan bus instruksi dan bus data yang terpisah (arsitektur Harvard),

146

Page 3: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

PIC memungkinkan akses data dan program secara bersamaan sehingga menaikan

kinerja pemrosesannya. Keuntungan dari kesederhanaan rancangan ini adalah chip

yang sangat kecil, sedikit pin, dan pemakaian daya yang sangat kecil. Popularitas

mikrokontroler PIC ini meningkat sangat cepat. Dengan harga yang murah,

ukuran kecil dan hemat pemakaian daya, pada saat ini mikrokontroler tersebut

digunakan juga pada pemakaian lain seperti sebagai rangkaian logika. Terdapat

tiga keluarga PIC pada saat ini yaitu PIC16C5x, PIC16Cxx dan PIC17Cxx.

Z8 (Zilog)

Z8 merupakan turunan dari Zilog Z80. Memiliki arsitektur unik merupakan

arsitektur gabungan dengan tiga daerah memori, yaitu program memori, data

memori, dan CPU register file. Mikrokontroler ini memiliki UART, timer, DMA,

I/O hingga 40 buah pada chip-nya. Versi lainnya memiliki sync/async serial

channel. Keseluruhan mikrokontroler ini memiliki stack RAM yang dapat

dikonfigurasikan dan sistem interupsi, dua timer programmable dengan interupsi,

proteksi ROM, dua analog komparator dengan interupsi, dan 45 buah instruksi.

Arsitektur MCS-51

Mikrokontroler AT89C51 merupakan salah satu jenis mikrokontroler CMOS 8 bit

yang memiliki performa tinggi dengan disipasi daya rendah. Diagram blok

mikrokontroler AT89C51 secara garis besar ditunjukkan pada gambar 40.

Mikrokontroler ini memiliki flash PEROM 4 Kb, RAM internal dengan kapasitas

128 x 8 bit, 32 port I/O yang terbagi menjadi 4 buah port dengan 8 jalur I/O,

kemudian terdapat pula sebuah port serial dengan kontrol serial full duplex, dua

timer/counter 16 bit dan rangkaian osilator internal.

Selanjutnya pada bahasan ini akan dikemukakan dan diperkenalkan secara

lengkap dan mendalam adalah mikrokontroler AT 89C51. Dengan pertimbangan

mikrokontroler ini murah, lengkap instruksinya, dan mudah pemogramannnya

bagi pemula atau para hobist. Dibawah ini diperlihatkan arsitektur mikrokontroler

AT 89C51.

147

Page 4: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Gambar VIII.1. Diagram blok AT 89C51

(Sumber dari data book µC ATMEL) Diagram blok arsitektur mikrokontroler AT89S51, diambil dari datasheet

AT89S51 buatan Atmel, ditunjukan pada gambar VIII.1. Mikrokontroler ini

memiliki 40 konfigurasi pin seperti digambarkan pada gambarVIII.2. Fungsi dari

tiap–tiap pin dapat dikelompokkan menjadi sumber tegangan, kristal, kontrol,

dan I/O.

Disamping itu mikrokontroler ini dapat ditambahkan sebuah minimum

memori eksternal. Dari kedelapan line dapat digunakan sebagai suatu unit yang

berhubungan ke perangkat paralel seperti printer, pengubah digital ke analog, dan

sebagainya, atau tiap line dapat mengoperasikan sendiri ke perangkat single bit

seperti saklar, LED, transistor, selenoid, motor, dan speaker.

Mikrokontroler keluarga MCS-51 mempunyai 40 kaki, 32 kaki diantaranya

yaitu kaki untuk keperluan port paralel. Satu port terdiri dari 8 kaki, dengan

demikian 32 kaki tersebut membentuk 4 buah port paralel, yang dikenal sebagai

port 0, port 1, port 2 dan port 3.

8.2.1. Port Paralel AT89S51

Pada gambar VIII.2, port 1, 2, dan 3 memiliki Pullup internal, sedangkan

port 0 memiliki keluaran saluran terbuka atau open drain. Masing-masing jalur

I/O dapat digunakan secara independent sebagai masukan atau keluaran, tetapi

port 0

148

Page 5: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

(a) (b)

(c) (d)

Gambar VIII.2 Konstruksi Port Paralel

tidak dapat digunakan sebagai jalur I/O serbaguna selama pengaksesan memori

eksternal atau dijadikan sebagai jalur ADDR/DATA. Agar dapat digunakan

sebagai masukan, bit pengancing port yang bersangkutan harus diberi logik 1,

yang akan mematikan transistor FET (Field Effect Transistor) penggerak

keluaran. Sehingga, untuk port 1, 2 dan 3, kaki-kakinya ditarik tinggi (pulled

high) oleh pullup internal, tetapi bisa juga ditarik rendah (pulled low) dengan

suatu sumber eksternal.

Port 0 tidak memiliki pullup internal. Pullup FET (FET bagian atas )

didalam penggerak keluaran P0 digunakan hanya pada saat port mengirimkan

logik 1 selama pengaksesan memori eksternal. Selain dari itu, pullup FET akan

selalu mati. Sehingga P0 tidak dapat digunakan sebagai jalur output, kecuali jika

dipasang resistor sebagai pullup external.

8.2.2. Timer Dan Counter AT89S51

Pada dasarnya Timer / Counter merupakan sarana masukan berupa

149

Page 6: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

seperangkat pencacah biner (binary counter) yang terhubung langsung ke saluran

data mikrokontroler, sehingga mikrokontroler bisa membaca kondisi pencacah

dan bila diperlukan mikrokontroler dapat pula merubah kondisi pencacah tersebut.

Seperti layaknya pencacah biner, saat sinyal detak (clock) yang diberikan

sudah melebihi kapasitas pencacah, maka pencacah akan memberikan sinyal

overflow atau limpahan, limpahan pencacah ini dicatat dalam suatu register.

Sinyal detak yang diberikan ke pencacah dibedakan menjadi dua macam,

yang pertama ialah sinyal detak dengan frekuensi tetap yang sudah diketahui

besarnya dan yang kedua adalah sinyal detak dengan frekuensi yang bisa

bervariasi. Jika sebuah pencacah bekerja dengan frekuensi tetap, dikatakan

pencacah tersebut bekerja sebagai timer atau pewaktu, karena kondisi pencacah

tersebut setara dengan waktu yang bisa ditentukan secara pasti. Tetapi jika sebuah

pencacah bekerja dengan frekuensi yang bervariasi dikatakan pencacah tersebut

bekerja sebagai counter atau pencacah, kondisi pencacah tersebut menyatakan

banyaknya pulsa detak yang sudah diterima.

8.2.3. Port Serial AT89S51

Port serial pada AT89S51 dapat digunakan dalam 4 mode kerja yang

berbeda. Dari 4 mode tersebut, 1 mode diantaranya bekerja secara sinkron dan

lainnya bekerja secara asinkron. Keempat mode kerja tersebut yaitu :

1. Mode 0 Shift Register 8 Bit, Mode ini bekerja secara sinkron, data serial

dikirim dan diterima melalui kaki P3.0 (RXD), sedangkan kaki P3.1

(TXD) dipakai untuk menyalurkan clock pendorong data serial yang

dibangkitkan AT89S51. data dikirim/diterima 8 bit sekaligus, dimulai dari

bit yang bobotnya paling kecil atau LSB (bit 0) dan diakhiri dengan bit

yang bobotnya paling besar atau MSB (bit 7). Kecepatan pengiriman data

(baud rate) yaitu 1/12 frekuensi kristal yang digunakan.

2. Mode 1 UART 8 Bit Dengan Baud Rate Yang Dapat Diatur

Pada mode ini komunikasi dapat dilakukan secara 8 bit data asinkron yang

terdiri atas 10 bit, yaitu 1 bit start, 8 bit data dan 1 bit stop. Baud rate pada

mode ini dapat diatur dengan timer 1. Tidak seperti mode 0, pada mode ini

150

Page 7: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

merupakan mode UART, fungsi-fungsi alternatif dari P3.0/RXD dan

P3.1/TXD digunakan. P3.0 berfungsi sebagai RXD, yaitu kaki untuk

penerimaan data serial dan P3.1 berfungsi sebagai TXD, yaitu kaki untuk

pengiriman data serial. Pengiriman data dilakukan dengan menuliskan

data yang akan dikirim ke register SBUF (Serial Buffer). Data serial akan

digeser keluar diawali dengan bit start dan diakhiri dengan bit stop dimulai

dari bit yang berbobot terendah (LSB) hingga bit berbobot tertinggi

(MSB). Bit TI akan set setelah bit stop keluar melali kaki TXD yang

menandakan bahwa proses pengiriman data telah selesai. Bit ini harus di-

clear oleh perangkat lunak setelah pengiriman data selesai.

3. Mode 2 UART 9 Bit Dengan Baud Rate Permanent

Pada mode ini, komunikasi data dilakukan secara asinkron dengan 11 bit,

1 bit start, 8 bit data, 1 bit ke 9 yang dapat diatur dan 1 bit stop. Pada

proses pengiriman data, bit ke 9 diambil dari bit TB8 dan pada proses

penerimaan data bit ke 9 diletakan pada RB8.

4. Mode 3 UART 9 Bit Dengan Baud Rate Yang Dapat Diatur

Mode ini sama dengan mode 2, hanya saja kecepatan pengiriman data

bisa diatur sesuai dengan keperluan, seperti halnya mode 1.

8.2.4. Interupsi AT89S51

Interupsi adalah suatu kejadian atau peristiwa yang menyebabkan

mikrokontroler berhenti sejenak untuk melayani interupsi tersebut. Program yang

dijalankan pada saat melayani interupsi disebut Interrupt Service Routine.

Pada mikrokontroler AT89S51 terdapat 5 sumber interupsi yaitu 2 interupsi

eksternal (eksternal 0 dan eksternal 1), 2 interupsi timer (timer 0 dan timer 1),

serta sebuah interupsi port serial.

Dua buah mode untuk menghemat catu daya, yaitu mode Idle yang

memungkinkan CPU berhenti tetapi RAM, timer/counter, serial port dan interupsi

tetap dapat berfungsi. Power down mode, memungkinkan RAM tetap menyimpan

isinya, mematikan osilator dan fungsi yang lain sampai kemudian ada riset.

151

Page 8: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

8.2.5. Pena-pena ( pin-pin) AT89C51

Mikrokontroler AT 89C51 memiliki 40 pena (pin) seperti diperlihatkan pada

gambar VIII.3 fungsi dari tiap-tiap pin diperlihatkan pada tabel VIII.2 di bawah

ini.

a. Vcc ( kaki 40), suplay tegangan + 5 Volt

b. GND (kaki 20), ground atau pentanahan.

c. RST (kaki 9), merupakan kaki yang berfungsi untuk me-reset sistem

secara hardware selama 2 siklus mesin.

d. PSEN (kaki 29) ( Program Store Enable) merupakan sinyal pengontrol

yang membolehkan program memori ekternal masuk ke dalam bus selama

proses pemberian/pengambilan instruksi.

e. ALE/ PROG (kaki 30)(Address Latch Enable) menghasilkan pulsa-pulsa

untuk mengancing byte rendah (low byte) alamat selama mengakses

memori ekternal, berfungsi untuk menahan alamat memori ekternal selama

pelaksanaan instruksi, sedangkan PROG berfungsi sebagai masukan

pulsa program selama penulisan /memprogram Flash PEROM.

f. EA /Vpp (kaki 31), External Access Enable, jika dihubungkan ke ground

mikrokontroler akan mengeksekusi program dari memori ekternal lokasi

0000h hingga FFFFh, sedangkan bila dihubungkan dengan Vcc,

mikrokontroler akan mengakses program secara internal.

g. XTAL1 (kaki 19) input penguat osilator inversi dan input rangkaian

pewaktu (Clock) internal.

h. XTAL2 (kaki 18) output dari penguat osilator inverse.

i. Port 0 (kaki 32 – 39) merupakan port paralel 8 bit open drain

bidirectional. Bila digunakan untuk mengakses memori luar, port ini akan

memultiplek alamat memori dengan data. Port ini, digunakan juga untuk

proses penulisan dan pembacaan Flash PEROM.

j. Port 1 ( kaki 1-8) merupakan port paralel 8 bit dua arah yang dapat

digunakan untuk berbagai keperluan.

152

Page 9: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

k. Port 2 (kaki 21-28) adalah port paralel 8 bit dua arah, port ini

mengirimkan byte alamat bila dilakukan pengaksesan memori ekternal.

l. Port 3 (kaki 10-17) adalah port paralel 8 bit dua arah yang memiliki fungsi

pengganti ( alternatif).

Tabel VIII.1 Fungsi Alternatif kaki port 3

Kaki port Fungsi Alternatif

P30 TxD (port masukan serial)

P31 RxD (port keluaran serial)

P32 0INT (Interupsi ekternal 0)

P33 1INT ( Interupsi ekternal 1)

P34 T0 ( masukan ekternal pewaktu 0)

P35 T1 ( masukan ekternal pewaktu 1)

P36 WR ( sinyal tanda baca memori data

ekternal)

P37 RD ( sinyal tanda tulis memori data

ekternal)

153

Page 10: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Gambar VIII.3 Konfigurasi pin Mikrokontroler AT 89C51 (Sumber dari data book ATMEL)

Tabel VIII.2 Deskripsi pin Mikrokontroler AT 89C51

Nomor pin Nama pin keterangan 20 GND Ground 40 VCC Power Suplay

32 - 39 P0.7 – P0.0 Port 0 31 EA/ VPP External Access Enable(EA) 30 ALE/PROG Address Latch Enable (ALE) 29 PSEN Program Store Enable (PSEN)

21 – 28 P2.7 – P2.0 Port 2 18 & 19 XTAL Osilator 10 – 17 P3.7 P3.0 Port 3

9 RST RESET 1 - 8 P1.7 – P1.0 Port 1

8. 3. Organisasi memori Mikrokontroler MCS-51.

8. 3.1. Memori Program

Mikrokontroler MCS-51 memiliki ruang alamat memori data dan program

yang terpisah. Memori program adalah tempat program (binary program) yang

akan dijalankan. Ruang maksimum untuk memori program sebesar 64 KB, akan

tetapi untuk memaksimumkan memori tersebut perlu menggunakan memori luar

(eksternal memori) disamping memori dalam (internal memori). Tidak semua

mikrokontroller dari keluarga MCS-51 mempunyai memori dalam seperti 8031,

dan untuk yang mempunyai memori dalam kapasitasnya juga berbeda-beda.

Gambar di bawah ini memperlihatkan peta memori program dari 8051,

Gambar VIII.4 Peta memori program

154

Page 11: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

8.3.2. Memori Data

Memori data merupakan tempat menyimpan data-data yang dibutuhkan

untuk proses program. Semua keluarga MCS-51 selalu mempunyai Memori Data

Dalam (Internal Data Memory) akan tetapi kapasitasnya berbeda yaitu ada yang

256 byte (8051) dan ada yang 384 byte (8052). Sedangkan Memori Data Luar

(External Data Memory) mempunyai kapasitas maksimum 64 kb.

Gambar di bawah ini memperlihatkan peta memori data dari 8051

Gambar VIII.5 Peta memori data

8.3.3. Flash PEROM AT 89C51

Flash PEROM, merupakan teknologi terbaru ROM yang diperkenalkan oleh

berbagai perusahaan semikonduktor IC MCS-51 dapat dianggap sebagai IC Flash

PEROM. Sebagai Flash PEROM ada 5 hal yang dapat dilakukan, yakni :

a. Menghapus isi Flash PEROM semuanya sekaligus.

b. Mengisi Flash PEROM byte per byte.

c. Mengambil isi Flash PEROM byte per byte.

d. Selain itu untuk mencegah pembajakan, Flash PEROM dapat dikunci,

sehingga program yang disimpan di dalamnya tidak bisa diambil keluar

dari chip. Disediakan tiga macam pengaman yang berbeda tingkat.

e. Mikrokontroler produksi Atmel masing-masing mempunyai kode produksi,

ini memudahkan program di komputer mengenali chip mikrokontroler

jenis apa yang dipasangkan pada flash PEROM Programmer.

155

Page 12: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Hal-hal tersebut diatas diatur lewat kombinasi sinyal yang diberikan pada

P36 dan P37 ( kaki no 16 dan 17) serta P26 dan P27 ( kaki no 27 dan 28). Selain

sinyal-sinyal itu perlu pula diatur tegangan yang diumpankan ke Vpp (kaki no

31), untuk keperluan pengisian informasi ke dalam Flash PEROM diperlukan

tegangan 12 Volt yang disertai dengan pulsa pada PROG (kaki no 30).

Sedangkan untuk pembacaan cukup memakai tegangan Vpp 5 Volt. Mode kerja

Flash PEROM AT 89C51 diperlihatkan pada tabel dibawah ini .

Tabel VIII.3 Mode Kerja Flash PEROM AT89C51.

Mode Kerja P37 P36 P27 P26 Vpp PROG

Menghapus Isi PEROM L L L H 12 V L

Mengisi PEROM H H H L 12 V L

Membaca PEROM H H L L 5 V H

Proteksi bit 1 H H H H 12 V L

Proteksi bit 2 L L H H 12 V L

Proteksi bit 3 L H L H 12 V L

Membaca tanda ATMEL L L L L 5 V H

Daerah indirect address

Yaitu lokasi memori data yang diakses dengan cara penunjukkan alamat yang

tidak langsung. Sebagai gambaran diperlihatkan mengisi data pada 8052 dengan

masing-masing pada alamat 80H.

Contoh 1 : MOV 80H, #11H

Contoh 2 : MOV R0, #80H

MOV @R0, #22H

Pada contoh 1 transfer data direct address berlaku pengisian data ke blok

memori SFRs (P0) yang beralamat 80H, sedangkan pada contoh 2 transfer data

indirect address berlaku pengisian data ke memori data yang biasanya beralamat

80H (hanya pada 8052). Untuk daerah memori data dari alamat 00H sampai 7FH

tidak ada perbedaan lokasi data antara 8951 dan 8952.

156

Page 13: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Daerah direct address

Yaitu lokasi memori data yang diakses dengan cara langsung menuliskan

alamat lokasi memorinya.

Contoh : MOV 30H, #33H (Lokasi memori data yang beralamat 30H diisi data 33H)

Daerah memori data dari alamat 00h s/d 7fh

78 7F 70 77 68 6F 60 67 58 5F 50 57 48 4F 40 47 38 3F 30 37 28 2F 20 27 18 1F 10 17 08 0F 00 07

SRATCH PAD AREA

REGISTER BANK

BIT ADDRESSABLE SEGMENT

Daerah memori data dari alamat 80h s/d ffh

Terdapat dua kategori memori data pada alamat 80H s/d FFH untuk keluarga

MCS-51, yaitu :

• Kontroler yang mempunyai 1 blok data memori

• Kontroler yang mempunyai 2 blok data memori yang beralamat sama.

Untuk kategori yang mempunyai 2 blok data memori masing-masing blok disebut

blok SFRs (Special Function Register) dan blok memori data biasa.

Tabel VIII.4 Komposisi SFRs

Simbol Nama Alamat * ACC Accumulator 0E0H * B B Register 0F0H * PSW Program Status Word 0D0H SP Stack Pointer 81H DPTR Data Pointer 2 Bytes DPL Low Byte 82H DPH High Byte 83H

157

Page 14: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

*P0 Port 0 80H *P1 Port 1 90H *P2 Port 2 0A0H *P3 Port 3 0B0H *IP Interrupt Priority Control 0B8H *IE Interrupt Enable Control 0A8H TMOD Timer/ Counter Mode Control 89H *TCON Timer/ Counter Control *+T2CON Timer/ Counter 2 Control TH0 Timer/ Counter Control 0 high byte TL0 Timer/ Counter Control 0 low byte TH1 Timer/ Counter Control 1 high byte TL1 Timer/ Counter Control 1 low byte +TH2 Timer/ Counter Control 2 high byte +TL2 Timer/ Counter Control 2 low byte +RCAP2H T/C Capture Reg. High Byte +RCAP2L T/C Capture Reg. Low Byte *SCON Serial Control SBUF Serial Data Buffer PCON Power Control

Tabel VIII.5 Isi SFRs setelah power on atau reset

Register Data (Biner) * ACC 00000000 * B 00000000 * PSW 00000000 SP 00000111 DPTR DPL 00000000 DPH 00000000 *P0 11111111 *P1 11111111 *P2 11111111 *P3 11111111 *IP 8051 xxx00000

8052 xx000000 *IE 8051 0xx00000

8052 0x000000 TMOD 00000000 *TCON 00000000 *+T2CON 00000000 TH0 00000000 TL0 00000000 TH1 00000000 TL1 00000000 +TH2 00000000 +TL2 00000000

158

Page 15: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

+RCAP2H 00000000 +RCAP2L 00000000 *SCON 00000000 SBUF Indeterminate PCON 0xxxxxxx

FUNGSI-FUNGSI REGISTER PADA SFRs

• PSW (Program Status Word)

PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 CY AC F0 RS1 RS0 0V - P

CY = Carry Flag

AC = Auxiliary Carry

F0 = Flag 0 disediakan bebas untuk pengguna

RS1 = Register Bank Selector 1

RS0 = Register Bank Selector 0

0V = Overflow Flag

P = Parity Flag (dari AC)

RS1 RS0 Register Bank Address 0 0 0 00H – 07H 0 1 1 08H – 0FH 1 0 2 10H – 17H 1 1 3 18H – 1FH

Masing-masing Register Bank mempunyai 8 register dengan penamaan R0 s/d R7

• IE (INTERRUPT ENABLE REGISTER)

IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 EA - ET2 ES ET1 EX1 ET0 AX0

EA : Enable All Interrupt

ET2 : Enable Timer 2 Overflow or Capture Interrupt

ES : Enable Serial Port Interrupt

ET1 : Enable Timer 1 Overflow Interrupt

EX1 : Enable External 1 Interrupt

159

Page 16: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

ET0 : Enable Timer 0 Overflow Interrupt

EX0 : Enable External 0 Interrupt

• IP (INTERRUPT PRIORITY REGISTER)

IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0 - - PT2 PS PT1 PX1 PT0 PX0

PT2 : Interrupt Priority Timer 2

PS : Interrupt Priority Serial Port

PT1 : Interrupt Priority Timer 1

PX1 : Interrupt Priority External 1

PT0 : Interrupt Priority Timer 0

PX0 : Interrupt Priority External 0

• TCON (TIMER/ COUNTER CONTROL REGISTER)

TCON.7 TCON.6 TCON.5 TCON.4 TCON.3 TCON.2 TCON.1 TCON.0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TF1 : Timer 1 Overflow Flag

TR1 : Timer 1 Run Control Bit

TF0 : Timer 0 Run Control Bit

IE1 : External Interrupt 1 Edge Flag

IT1 : Interrupt 1 Type Control Bit

IE0 : External Interrupt 0 Edge Flag

IT0 : Interrupt 0 Type Control Bit

• TMOD (TIMER/ COUNTER MODE REGISTER)

GATE C/T M1 M0 GATE C/T M1 M0 TIMER 1 TIMER 0

GATE : Menentukan pengontrolan Timer/ Counter oleh Hardware (INTx) atau

software (TRx)

C/T : Timer or Counter Selector

M 1 : Mode Slector Bit

M 0 : Mode Selector Bit

160

Page 17: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

M 1 M 0 Mode Operasi 0 0 0 13 Bit Timer 0 1 1 16 Bit Timer/ Counter 1 0 2 8 Bit Auto Reload Timer/ Counter 1 1 3 Timer 0 8 Bit Timer (TL0 & TH0), Timer 1 Stop

• T2CON (TIMER/ COUNTER 2 CONTROL REGISTER) T2CON.7

T2CON.6 T2CON.5 T2CON.4 T2CON.3 T2CON.2 T2CON.1 T2CON.0

TF 2 EXF 2 RCLK TCLK EXEN2 TR2 C/ T2 CP/RL2

TF2 : Timer 2 Overflow Flag

EXF2 : Timer 2 External Flag

RCCLK : Receive Clock Flag

TLCK : Transmit Clock Flag

EXEN2 : Timer 2 External Enable Flag

TR2 : Software START/ STOP Control Timer 2

C/ T2 : Timer or Counter Select

CP/ RL2 : Capture/ Reload Flag

• SCON (SERIAL PORT CONTROL REGISTER)

SCON.7

SCON.6 SCON.5 SCON.4 SCON.3 SCON.2 SCON.1 SCON.0

SM0 SM1 SM2 REN TB8 RB8 TI RI

SM0 : Serial Port Mode

SM1 : Serial Port Mode

SM2 : Enable Komunikasi Multiprosessor pada mode 2 & 3

REN : Enable Serial Reception

TB8 : Bit ke 9 akan dikirim

RB8 : Pada mode 2 & 3, bit ke 9 akan diterima, pada mode 1 (SM2=0) RB8 = Stop bit.

TI : Transmit Interrupt Flag

RI : Receive Interrupt Flag

161

Page 18: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

SM0 SM1 MODE DESC BAUD RATE 0 0 0 Shift Register F. Osc/ 12 0 1 1 8 bit UART Variable 1 0 2 9 bit UART F.Osc/ 64 atau F.Osc/ 32 1 1 3 9 bit UART Variable

Mode pengalamatan mcs-51

Terdapat 5 (lima) mode pengalamatan, yaitu :

1. Direct Addressing (pengalamatan langsung), Operand sumber berisi alamat

data.

Contoh : MOV A, 7FH (7FH merupakan alamat memori data)

2. Indirect Addressing (pengalamatan tidak langsung), Operand sumber berisi

alamat memori data yang datanya menunjukkan alamat data yang dimaksud.

Contoh : ADD, @R0 (R0 berisi alamat memori data)

3. Register Addressing, Operand adalah register yang berisi data.

Contoh : MOV A, R1

4. Immediate Addressing, Operand berisi data langsung yang akan ditransfer.

Contoh : MOV A, #12H

5. Index Addressing, Metode pengalamatan ini hanya digunakan pada memori

program yaitu untuk mengambil data dengan menggunakan DPTR atau

Program Counter sebagai alamat dasarnya (Base of Table) dan menggunakan

Akumulator sebagai alamat relatifnya (Table Entry Number)

Contoh : MOVC A, @ A + DPTR atau MOVC A, @ A + PC

8.4. Instruksi dan Bahasa Pemograman

Instruksi-instruksi pada keluarga MCS-51 dibagi dalam 5 kelompok, yaitu :

1. Instruksi operasi Arithmetic

• Operasi penjumlahan tanpa Carry

Sintaks : ADD A, (src-byte)

Operasi : A A + (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

ADD A, Rn 1 1 0010 1rrr

162

Page 19: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

ADD A, Direct 2 1 0010 0101 (direct address)

ADD A, @ Ri 1 1 0010 011I

ADD A, #data 2 1 0010 0100 (immediate data)

• Operasi Penjumlahan dengan Carry

Sintaks : ADDC A, (src-byte)

Operasi : A A + C + (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

ADDC A, Rn 1 1 0011 1rrr

ADDC A, Direct 2 1 0011 0101 (direct address)

ADDC A, @ Ri 1 1 0011 011I

ADDC A, #data 2 1 0011 0100 (immediate data)

• Operasi Pengurangan dengan Borrow

Sintaks : SUBB A, (src-byte)

Operasi : A A - C - (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

SUBB A, Rn 1 1 1001 1rrr

SUBB A, Direct 2 1 1001 0101 (direct address)

SUBB A, @ Ri 1 1 1001 011i

SUBB A, #data 2 1 1001 0100 (immediate data)

• Operasi Increment

Sintaks : INC (byte)

Operasi : (byte) (byte) + 1

Anggotanya :

OpCode Byte Cycles Encoding

INC A 1 1 0000 0100

INC Rn 2 1 0000 1rrr

INC direct 1 1 0011 011I (direct address)

INC @Ri 2 1 0011 0100

INC DPTR 1 2 1010 0011

163

Page 20: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

• Operasi Decrement

Sintaks : DEC (byte)

Operasi : (byte) (byte) - 1

Anggotanya :

OpCode Byte Cycles Encoding

DEC A 1 1 0001 0100

DEC Rn 1 1 0001 1rrr

DEC direct 2 1 0001 010I (direct address)

DEC @Ri 1 1 0001 011i

• Operasi Perkalian

Sintaks : MUL AB

Operasi : A7 -0 A x B

BB15 - 8

OpCode Byte Cycles Encoding

MUL AB 1 4 1010 0100

• Operasi Pembagian

Sintaks : DIV AB

Operasi : A15 - 8 A / B

BB7 - 0

OpCode Byte Cycles Encoding

DIV AB 1 1 1101 0100

2. Instruksi Operasi Logical

• Operasi AND

Sintaks : ANL (dest-byte) (src-byte)

Operasi : (dest – byte) (dest – byte) (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

ANL A, Rn 1 1 0101 1rrr

ANL A, Direct 2 1 0101 0101 (direct address)

ANL A, @ Ri 1 1 0101 011i

ANL A, #data 2 1 0101 0100 (immediate data)

164

Page 21: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

ANL direct, A 2 1 0101 0010 (direct address)

ANL direct, #data 3 2 0101 0011 (direct addres) (immediate data)

• Operasi OR

Sintaks : ORL (dest-byte) (src-byte)

Operasi : (dest – byte) (dest – byte) (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

ORL A, Rn 1 1 0100 1rrr

ORL A, Direct 2 1 0100 0101 (direct address)

ORL A, @ Ri 1 1 0100 011i

ORL A, #data 2 1 0100 0100 (immediate data)

ORL direct, A 2 1 0100 0010 (direct address)

ORL direct, #data 3 2 01000011(direct address)

(immediate data)

• Operasi XOR

Sintaks : ORL (dest-byte) (src-byte)

Operasi : (dest – byte) (dest – byte) (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

XRL A, Rn 1 1 0110 1rrr

XRL A, Direct 2 1 0110 0101 (direct address)

XRL A, @ Ri 1 1 0110 011i

XRL A, #data 2 1 0110 0100 (immediate data)

XRL direct, A 2 1 0110 0010 (direct address)

XRL direct, #data 3 2 01100011(direct addres)

(immediate data)

• Operasi CLEAR

Sintaks : CLR A

165

Page 22: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Operasi : A 0

CLR A 1 1 1110 0100

• Operasi Complement

Sintaks : CPL A

Operasi : A A’

OpCode Byte Cycles Encoding

CPL A 1 1 1111 0100

• Operasi Rotasi tanpa Carry

PUTAR KIRI

Sintaks : RL A

Operasi : An + 1 An n = 0 – 6

A0 A7

OpCode Byte Cycles Encoding

RL A 1 1 0010 0011

PUTAR KANAN

Sintaks : RR A

Operasi : An + 1 An n = 0 – 6

A7 A0

OpCode Byte Cycles Encoding

RR A 1 1 0000 0011

• Operasi Rotasi dengan Carry

PUTAR KIRI

Sintaks : RL A

Operasi : An + 1 An n = 0 – 6

A0 C

C A7

166

Page 23: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

OpCode Byte Cycles Encoding

RLC A 1 1 0011 0011

PUTAR KANAN

Sintaks : RRC A

Operasi : An + 1 An n = 0 – 6

A7 C

C A7

OpCode Byte Cycles Encoding

RLC A 1 1 0001 0011

• Operasi PERTUKARAN NIBLE (4bit)

Sintaks : SWAP A

Operasi : A3-0 A7-4

OpCode Byte Cycles Encoding

SWAP A 1 1 1100 0100

1. Instruksi Transfer Data

• Instruksi Transfer Data pada Memori Data Internal

Sintaks : MOV (dest-byte) (src-byte)

Operasi : (dest – byte) (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

MOV A, Rn 1 1 1110 1rrr

MOV A, Direct 2 1 1110 0101 (direct address)

MOV A, @ Ri 1 1 1110 011i

MOV A, #data 2 1 0111 0100 (immediate data)

MOV Rn, A 1 1 1111 1rrr

MOV Rn, Direct 2 2 1010 1rrr (direct address)

MOV Rn, #data 2 1 0111 1rrr (immediate data)

MOV Direct, A 2 1 1111 0101 (direct address)

MOV Direct, Rn 2 2 1000 1rrr (direct address)

167

Page 24: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

MOV Direct, Direct 3 2 1000 0101 (dir.addr.(src))

(dir.addr.(dest))

MOV Direct, @Ri 2 2 1000 011I (direct address)

MOV Direct, #data 3 2 01110101 (direct address)

(immediate data)

MOV @Ri, A 1 1 1111 011I

MOV @Ri, Direct 2 2 1010 011I

MOV @Ri, #data 2 1 0111 011I (immediate data)

MOV DPTR, data16 3 2 1001 0000 (immd.data 15-8)

(immd.data 7-0)

• Operasi Transfer Data pada Memori Data external

Sintaks : MOVX (dest-byte) (src-byte)

Operasi : (dest – byte) (src-byte)

Anggotanya :

OpCode Byte Cycles Encoding

MOVX A, @Ri 1 2 1110 001I

MOVX A, @DPTR 1 2 1110 0000

MOVX @Ri, A 1 2 1111 001I

MOVX @DPTR, A 1 2 1111 0000

• Operasi Transfer Data pada Memori Program

Sintaks : MOVC A, @A + (base-reg)

Operasi : A (A + (base-reg)

Anggotanya :

OpCode Byte Cycles Encoding

MOVC A, @Ri 1 2 1001 0011

MOVC A, @DPTR 1 2 1000 0011

• Operasi Transfer data pada stack

• Simpan ke stack

Sintaks : PUSH Direct

168

Page 25: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Operasi : SP SP + 1

(SP) (direct)

OpCode Byte Cycles Encoding

PUSH direct address 2 2 1100 0000 (direct address)

• Ambil dari stack

Sintaks : POP Direct

Operasi : Direct (SP)

SP SP – 1

OpCode Byte Cycles Encoding

PUSH direct address 2 2 1100 0000 (direct address)

• Operasi Pertukaran Data

• Pertukaran Byte

Sintaks : XCH A, (byte)

Operasi : A (byte)

Anggotanya :

OpCode Byte Cycles Encoding

XCH A, Rn 1 1 1100 1rrr

XCH A, direct 2 1 1100 0101 (direct address)

XCH A, @Ri 1 1 1100 011I

• Pertukaran Nible

Sintaks : XCHD A, A, @Ri

Operasi : A3-0 (Ri3-0 )

OpCode Byte Cycles Encoding

XCHD A, @Ri 1 1 1101 011I

169

Page 26: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

2. Instruksi Manipulasi Variabel Boolean

• Operasi Clear Bit

Sintaks : CLR Bit

Operasi : Bit 0

Anggotanya :

OpCode Byte Cycles Encoding

CLR C 1 1 1100 001I

CLR Bit 2 1 1100 0010 (bit address)

• Operasi Set Bit

Sintaks : SETB Bit

Operasi : Bit 1

Anggotanya :

OpCode Byte Cycles Encoding

SETB C 1 1 1101 001I

SETB Bit 2 1 1101 0010 (bit address)

• Operasi Complement Bit

Sintaks : CPL Bit

Operasi : Bit Bit’

Anggotanya :

OpCode Byte Cycles Encoding

CPL C 1 1 1011 001I

CPL Bit 2 1 1011 0010 (bit address)

• Operasi AND bit

Sintaks : ANL C, (src-bit)

Operasi : C C ^ bit atau C C ^ bit’

Anggotanya :

OpCode Byte Cycles Encoding

ANL C, bit 2 2 1000 0010 (bit address)

ANL C,/bit 2 2 1011 0000 (bit address)

• Operasi OR bit

Sintaks : ORL C, (src-bit)

170

Page 27: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Operasi : C C V bit atau C C V bit’

Anggotanya :

OpCode Byte Cycles Encoding

ORL C, bit 2 2 0111 0010 (bit address)

ORL C,/bit 2 2 1010 0000 (bit address)

• Operasi Transfer Bit

Sintaks : MOV (dest-bit) , (src-bit)

Operasi : (dest-bit) (src-bit)

Anggotanya :

OpCode Byte Cycles Encoding

MOV C, bit 2 1 1010 0010 (bit address)

MOV bit, C 2 2 1001 0010 (bit address)

• Operasi JUMP oleh Bit

• JUMP Jika Bit Set

Sintaks : JB C, rel

Operasi : Jika bit = 1, maka PC PC + rel

OpCode Byte Cycles Encoding

JB bit, rel 3 2 0010 0000 (bit address)(rel.address)

• JUMP Jika Bit Set dan Bit tersebut di – Clear - kan

Sintaks : JBC Bit, rel

Operasi : Jika bit = 1, maka Bit = 0 dan PC PC + rel

OpCode Byte Cycles Encoding

JBC bit, rel 3 2 0001 0000 (bit address)(rel.address)

• JUMP Jika Carry Set

Sintaks : JC rel

Operasi : Jika C = 1, maka PC PC + rel

OpCode Byte Cycles Encoding

JC rel 2 2 0010 0000 (rel.address)

171

Page 28: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

• JUMP Jika Bit Not Set

Sintaks : JNB Bit, rel

Operasi : Jika bit = 0, maka PC PC + rel

OpCode Byte Cycles Encoding

JNB bit, rel 3 2 0011 0000 (bit address)(rel.address)

• JUMP Jika Carry Not Set

Sintaks : JNC rel

Operasi : Jika C = 0, maka PC PC + rel

Anggotanya :

OpCode Byte Cycles Encoding

JNB rel 2 2 0101 0000 (rel.address)

3. Instruksi Percabangan (Program Branching)

• Operasi Pemanggilan Sub Routine

• Absolute Call

Sintaks : ACALL addr11

Operasi : PC PC + 2

SP SP + 1

(SP) PC7 – 0

SP SP + 1

(SP) PC15 – 8

PC10-0 Page Address

OpCode Byte Cycles Encoding

ACALL addr11 2 2 a10 a9 a81 0001 a7 a6 a5 a4 a3 a2 a1 a0

• Long Call

Sintaks : LCALL addr 16

Operasi : PC PC +3

SP SP + 1

(SP) PC7 – 0

SP SP + 1

172

Page 29: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

(SP) PC15 – 8

PC10-0 Addr 15 - 0

OpCode Byte Cycles Encoding

ACALL addr11 3 2 0001 0010 a15 - 8 a7 - 0

• Operasi Kembali Sub routine

• Return dari Subroutine

Sintaks : RET

Operasi : PC15 – 8 (SP) SP SP – 1

PC15 – 8 (SP) SP SP – 1

Opcode Byte Cycle Encoding

RET 1 2 0010 0010

• Return dari Interupt (Subroutine)

Sintaks : RETI

Operasi : PC15 – 8 (SP) SP SP – 1

PC15 – 8 (SP) SP SP – 1

Opcode Byte Cycle Encoding

RETI 1 2 0011 0010

• Operasi JUMP tanpa Kondisi

• Absolute Jump

Sintaks : AJMP

Operasi : PC PC + 2

PC10 – 0 page address

Opcode Byte Cycle Encoding

AJMP addr16 3 2 a10 a9 a8 00001 a7 a6 a5 a4 a3 a2 a1 a0

• Long Jump

Sintaks : LJMP

Operasi : PC PC + 2

PC15 – 0 addr15-0

173

Page 30: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

Opcode Byte Cycle Encoding

LJMP addr16 3 2 0000 0001 a15-8 a7-0

• Short Jump

Sintaks : SJMP relative addr.

Operasi : PC PC + 2

PC PC + rel

Opcode Byte Cycle Encoding

SJMP rel 2 2 1000 0000 (rel address)

• Relative DPTR Jump

Sintaks : JMP @A + DPTR

Operasi : PC A + DPTR

PC A + DPTR

Opcode Byte Cycle Encoding

JMP @A + DPTR 1 2 0111 0011

• Operasi Jump dengan Kondisi

• Jump jika ACC sama dengan nol

Sintaks : JZ relative

Operasi : PC PC + 2

jika A = 0, maka PC PC + rel

Opcode Byte Cycle Encoding

JZ rel 2 2 0110 0000 (relative address)

• Jump jika ACC tidak sama dengan nol

Sintaks : JNZ relative

Operasi : PC PC + 2

jika A = 0, maka PC PC + rel

Opcode Byte Cycle Encoding

JNZ rel 2 2 0111 0000 (relative address)

174

Page 31: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

• Jump jika perbandingan dest – byte tidak sama dengan src – byte

Sintaks : CJNE (dest-byte), (src-byte), rel

Operasi : PC PC + 3

jika (dest-byte) ≠ (src-byte) maka PC PC + rel

jika (dest-byte) = (src-byte) maka C 1, selain itu C 0

Anggotanya :

Opcode Byte Cycle Encoding

CJNE A, direct, rel 3 2 10110101 (directa.addr)(rel addr)

CJNE A, # data, rel 3 2 10110100 (immediate data)(rel addr)

CJNE Rn, # data, rel 3 2 10111rrr (immediate data)(rel addr)

CJNE @Ri, #data, rel 3 2 1011011r (immediate)(rel addr)

• Jump jika hasil DEC byte data tidak sama dengan nol

Sintaks : DJNZ (byte), rel

Operasi : PC PC + 2

(byte Byte - 1

jika (byte) > 0, atau (byte) < 0, maka PC PC + rel

Anggotanya :

Opcode Byte Cycle Encoding

DJNZ Rn, rel 2 2 1101 1rrr (relative address)

DJNZ direct, rel 3 2 1101 0101 (direct addr) (rel. addr)

4. Tanpa Fungsi

Sintaks : NOP

Operasi : PC PC + 1

Opcode Byte Cycle Encoding

NOP 1 1 0000 0000

175

Page 32: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

8.5. Contoh – Contoh Program Mikrokontroler sederhana

Aplikasi pada lampu LED

1. Program Lampu Flip Flop pada Port 0 ; Program Lampu Flip Flop pada Port 0 $mod51 mulai: mov p0,#0ffh call delay mov p0,#0 call delay jmp mulai ; Sub rutin Delay delay: mov r0,#0 delay1: mov r1,#0 djnz r1,$ djnz r0,delay1 ret end 2. Program Lampu Flip Flop pada Port 0 ; Program Lampu Flip Flop pada Port 0 $mod51 mulai: mov p0,#00fh call delay mov p0,#0f0h call delay jmp mulai ; Sub rutin Delay delay: mov r0,#0 delay1: mov r1,#0 djnz r1,$ djnz r0,delay1 ret end 3. 3. Program Lampu berjalan pada Port 0 ; Program Lampu berjalan pada Port 0 $mod51 mulai: mov p0,#11111110b call delay mov p0,#11111101b call delay mov p0,#11111011b call delay mov p0,#11110111b call delay mov p0,#11101111b call delay mov p0,#11011111b call delay mov p0,#10111111b call delay mov p0,#01111111b

176

Page 33: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

call delay jmp mulai ; Sub rutin Delay delay: mov r0,#0 delay1: mov r1,#0 djnz r1,$ djnz r0,delay1 ret end 4. Program Lampu Flip Flop pada Port 0 ; Program Lampu Flip Flop pada Port 0 $mod51 mulai: mov a,#11111111b mulai1: rrc a mov p0,a call delay jmp mulai1 ; Sub rutin Delay delay: mov r0,#0 delay1: mov r1,#0 djnz r1,$ djnz r0,delay1 ret end 5. Program Lampu Flip Flop pada Port 0 ; Program Lampu Flip Flop pada Port 0 $mod51 mulai: mov a,#11111111b mulai1: rlc a mov p0,a call delay jmp mulai1 ; Sub rutin Delay delay: mov r0,#0 delay1: mov r1,#0 djnz r1,$ djnz r0,delay1 ret end Aplikasi pada 7 Segment 1. Program –1

$mod51 org 0h

main: mov p2,#11000000b ;0 clr p1.4 call delay mov p2,#11110011b ;1

177

Page 34: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

call delay mov p2,#10001001b ;2 call delay mov p2,#10100001b ;3 call delay mov p2,#10110010b ;4 call delay mov p2,#10100100b ;5 call delay mov p2,#10000100b ;6 call delay mov p2,#11110001b ;7 call delay mov p2,#10000000b ;8 call delay mov p2,#10100000b ;9 call delay jmp main delay: mov r7,#100 delay_loop1: mov r6,#100 delay_loop2: mov r5,#100 djnz r5,$ djnz r6,delay_loop2 djnz r7,delay_loop1 ret end 2. Program -2

$mod51 org 0h

main: mov p2,#11000000b ;0 setb p1.4 call delay mov p2,#11110011b ;1 call delay mov p2,#10001001b ;2 call delay mov p2,#10100001b ;3 call delay mov p2,#10110010b ;4 call delay mov p2,#10100100b ;5 call delay mov p2,#10000100b ;6 call delay mov p2,#11110001b ;7 call delay mov p2,#10000000b ;8 call delay mov p2,#10100000b ;9 call delay

178

Page 35: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

jmp main delay: mov r7,#100 delay_loop1: mov r6,#100 delay_loop2: mov r5,#100 djnz r5,$ djnz r6,delay_loop2 djnz r7,delay_loop1 ret end 3. Program -3

$mod51 Counter_Low equ 30h Counter_High equ 31h Scanning equ 32h org 0

main: mov Counter_Low,#0 mov Counter_High,#0 mov Scanning,#100 main_loop: clr a mov p2,a clr P1.4 mov a,Counter_Low call Tabel_Data mov p2,a call delay clr a mov p2,a setb P1.4 mov a,Counter_High call Tabel_Data mov p2,a call delay djnz Scanning,Main_Loop mov Scanning,#100 inc Counter_Low mov a,Counter_Low cjne a,#10,main_loop mov Counter_Low,#0 inc Counter_High mov a,Counter_High cjne a,#10,main_loop mov Counter_High,#0 jmp main_loop Tabel_Data: cjne a,#0,TabelData_1 mov a,#11000000b ;0 ret TabelData_1: cjne a,#1,TabelData_2 mov a,#11110011b ;1

179

Page 36: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

ret TabelData_2: cjne a,#2,TabelData_3 mov a,#10001001b ;2 ret TabelData_3: cjne a,#3,TabelData_4 mov a,#10100001b ;3 ret TabelData_4: cjne a,#4,TabelData_5 mov a,#10110010b ;4 ret TabelData_5: cjne a,#5,TabelData_6 mov a,#10100100b ;5 ret TabelData_6: cjne a,#6,TabelData_7 mov a,#10000100b ;6 ret TabelData_7: cjne a,#7,TabelData_8 mov a,#11110001b ;7 ret TabelData_8: cjne a,#8,TabelData_9 mov a,#10000000b ;8 ret TabelData_9: cjne a,#9,TabelData_Out mov a,#10100000b ;9 TabelData_Out: ret delay: mov r7,#1 delay_loop1: mov r6,#10 delay_loop2: mov r5,#100 djnz r5,$ djnz r6,delay_loop2 djnz r7,delay_loop1 ret end

Aplikasi pada KEYPAD

P1.3 P1.2 P1.1 P1.0

1 2 3 4 5 6 7 8 9 0 A BC d E F

P3.7 P3.6 P3.5 P3.4

180

Page 37: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

1. Program -1 $mod51 org 0 clr p1.4 mulai: mov P1,#11110111b jb p3.7,key_1 mov p2,#11110011b;1 sjmp mulai key_1: jb p3.6,key_2 mov p2,#10001001b;2 sjmp mulai key_2: jb p3.5,key_3 mov p2,#10100001b;3 sjmp mulai key_3: jb p3.4,key_4 mov p2,#10110010b;4 sjmp mulai key_4: mov p1,#11111011b jb p3.7,key_5 mov p2,#10100100b;5 key_5: jb p3.6,key_6 mov p2,#10000100b;6 sjmp mulai key_6: jb p3.5,key_7 mov p2,#11110001b;7 sjmp mulai key_7: jb p3.4,key_8 mov p2,#10000000b;8 sjmp mulai key_8: mov p1,#11111101b jb p3.7,key_9 mov p2,#10100000b;9 key_9: jb p3.6,key_10 mov p2,#11000000b;0 ljmp mulai key_10: jb p3.5,key_11 mov p2,#10010000b ;A ljmp mulai key_11: jb p3.4,key_12 mov p2,#10000110b ;b key_12: mov p1,#11111110b jb p3.7,key_13 mov p2,#11001100b;C

181

Page 38: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

sjmp mulai key_13: jb p3.6,key_14 mov p2,#10000011b;d key_14: jb p3.5,key_15 mov p2,#10001100b;E ljmp mulai key_15: jb p3.4,key_16 mov p2,#10011100b;0 ljmp mulai key_16: ljmp mulai end

Contoh program dan rangkaiannya

1. Merancang aplikasi lampu berjalan dari kiri kekanan dan dari kanan ke

kiri lengkap dengan program dan perhitungan delaynya.

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

RST9

P3.010

P3.111

P3.212

P3.313

P3.414

P3.515

P3.616

P3.717

XTAL218

XTAL119

GND20

VCC 40

P0.0 39

P0.1 38

P0.2 37

P0.3 36

P0.4 35

P0.5 34

P0.6 33

P0.7 32

EA/VPP 31

ALE/PROG 30

PSEN 29

P2.7 28

P2.6 27

P2.5 26

P2.4 25

P2.3 24

P2.2 23

P2.1 22

P2.0 21

AT89C51

11.0592MHz

33pF 33pF

+10uF

10K

5V

5V

5V

8x150

8xLED

Gambar VIII.6 Rangkaian Untuk Menyalakan Led 8 buah.

Bahasa Pemograman a) Lampu berjalan yang bergerak satu per satu dari kiri kekanan secara

berulang-ulang. ORG 0H ; Awal program dimulai pada alamat 0H

Mulai: MOV A,#07FH ; Isi Akumululator dengan data 7FH Putar:

MOV P0,A ; Salin data dari Akumuklator ke P0 (nyalakan 1 lampu)

RR A ; Putar 1 bit data pada Akumulator ke arah kanan

182

Page 39: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

ACALL Tunda ; Panggil subrutin tunda untuk waktu Tunda penyalaan

SJMP Putar ; Lompat ke label mulai (lakukan secara berulang) ; Led akan nyala jika diberi logik 0 Tunda: MOV R5,# 250 ; Isi Register 5 dengan data 250 Tunda1: MOV R6,#100 ; Isi Register 6 dengan data 100 Tunda2: MOV R7,#10 ; Isi Register 7 dengan data 10 DJNZ R7,$ ; Kurangi R7 dengan 1 sampai 0 * DJNZ R6,Tunda2 ; Kurangi R6 jika belum 0 lompat ke label tunda2

** DJNZ R5,Tunda1 ; Kurangi R7 jika belum 0 lompat ke label tunda1

*** RET ; Kembali ke program utama

End ; Waktu tunda ( siklus DJNZ = 2 µS) : ; * : 2 (R7) = 2 (10) = 20 µS ; ** : 2 (R7 x R6) = 2 (10 x 100) = 2000 µS ; *** : 2 (R7 x R6 x R5) = 2 (10 x 100 x 250) = 500000 µS ; ------------- + ; 502020 µS 500 mS ≈

b) Bahasa pemogramannya jika lampu ingin bergerak dari kanan ke kiri yaitu

Mulai: MOV A,#0FEH ; Intruksi yang diganti

Putar: MOV P0,A RL A ; Intruksi yang diganti ACALL Tunda SJMP Putar ; Led akan nyala jika diberi logik 0

c) Bahasa program untuk menggerakan lampu dari tengah ke pinggir dengan waktu tunda 200 mili detik yaitu

ORG 0H ; Awal program dimulai pada alamat 0H

Mulai: MOV P0,#11100111B ; Isi port 0 dengan data 11100111B

ACALL Tunda ; Panggil subrutin Tunda MOV P0,#11011011B ; Isi port 0 dengan data 11011011B ACALL Tunda ; Panggil subrutin Tunda MOV P0,#10111101B ; Isi port 0 dengan data 10111101B

183

Page 40: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

ACALL Tunda ; Panggil subrutin Tunda MOV P0,#01111110B ; Isi port 0 dengan data 01111110B ACALL Tunda ; Panggil subrutin Tunda SJMP Mulai ; Lompat ke label mulai (lakukan berulang) ; Led akan nyala jika diberi logik 0 Tunda: MOV R5,# 250 ; Isi Register 5 dengan data 250 Tunda1: MOV R6,#40 ; Isi Register 6 dengan data 40 Tunda2: MOV R7,#10 ; Isi Register 7 dengan data 10 DJNZ R7,$ ; Kurangi R7 dengan 1 sampai 0 * DJNZ R6,Tunda2 ; Kurangi R6 jika belum 0 lompat ke label tunda2

** DJNZ R5,Tunda1 ; Kurangi R7 jika belum 0 lompat ke label tunda1

*** RET ; Kembali ke program utama

End ; Waktu tunda ( siklus DJNZ = 2 µS) : ; * : 2 (R7) = 2 (10) = 20 µS ; ** : 2 (R7 x R6) = 2 (10 x 40) = 800 µS ; *** : 2 (R7 x R6 x R5) = 2 (10 x 100 x 250) = 200000 µS ; ------------- + ; 200820 µS 200 mS ≈

2. Merancang dan membuat rangkaian counter dengan menggunakan

mikrokontroler AT89C51.

a. Rangkailah up counter dengan menggunakan seven segment dan IC

mikrokontroler AT89C51 yang bekerja pada port 2 seperti gambar

dibawah.

b. Buatlah bahasa pemrograman untuk up counter yang bergerak naik

dari angka 0 ampai 9 secara berulang-ulang dengan waktu tunda

500 mili detik.

c. Tulis bahasa pemograman yang telah dibuat dikomputer dengan

menggunakan software Pinnacle. Kemudian simulasikan program

tersebut secara software sampai tidak ada kesalahan.

d. Setelah program disimulasikan dan tidak ada kesalahan kemudian

isikan program tersebut kedalam IC mikrokontroler dengan

menggunakan progrmmer Atmel.

184

Page 41: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

e. Selanjutnya pindakan IC yang telah diprogram ke Emulator untuk

disimulasikan secara hardware.

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

RST9

P3.010

P3.111

P3.212

P3.313

P3.414

P3.515

P3.616

P3.717

XTAL218

XTAL119

GND20

VCC 40

P0.0 39

P0.1 38

P0.2 37

P0.3 36

P0.4 35

P0.5 34

P0.6 33

P0.7 32

EA/VPP 31

ALE/PROG 30

PSEN 29

P2.7 28

P2.6 27

P2.5 26

P2.4 25

P2.3 24

P2.2 23

P2.1 22

P2.0 21

AT89C51

11.0592MHz

33pF 33pF

+10uF

10K

5V

5V

5V

8x150

a

bf

c

g

de

DPY

[LEDgn]

8

1234567

ab

cd

e

fg

Gambar VIII.7 Rangkaian Counter dengan display seven segment

. Bahasa Pemograman

ORG 0H ; Awal program dimulai pada alamat 0H Mulai:

MOV P2,#11000000B ; Isi port 2 dengan data 10110000B (angka 0) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#11111001B ; Isi port 2 dengan data 11110011B (angka 1) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#10100100B ; Isi port 2 dengan data 10100100B (angka 2) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#10110000B ; Isi port 2 dengan data 10110000B (angka 3) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#10011001B ; Isi port 2 dengan data 10011001B (angka 4) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#10010010B ; Isi port 2 dengan data 10010010B (angka 5) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#10000010B ; Isi port 2 dengan data 10000010B (angka 6) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#11111000B ; Isi port 2 dengan data 11111000B (angka 7) ACALL Tunda ; Panggil subrutin tunda MOV P2,#10000000B ; Isi port 2 dengan data 10000000B (angka 8) ACALL Tunda ; Panggil subrutin Tunda MOV P2,#10010000B ; Isi port 2 dengan data 10010000B (angka 9) ACALL Tunda ; Panggil subrutin Tunda SJMP Mulai ; Lompat ke label mulai (lakukan berulang)

; Seven segmen akan menyala jika diberi logik 0 Tunda:

185

Page 42: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

MOV R5,# 250 ; Isi Register 5 dengan data 250 Tunda1: MOV R6,#100 ; Isi Register 6 dengan data 100 Tunda2: MOV R7,#10 ; Isi Register 7 dengan data 10 DJNZ R7,$ ; Kurangi R7 dengan 1 sampai 0 * DJNZ R6,Tunda2 ; Kurangi R6 jika belum 0 lompat ke label tunda2

** DJNZ R5,Tunda1 ; Kurangi R7 jika belum 0 lompat ke label tunda1

*** RET ; Kembali ke program utama

End ; Waktu tunda ( siklus DJNZ = 2 µS) : ; * : 2 (R7) = 2 (10) = 20 µS ; ** : 2 (R7 x R6) = 2 (10 x 100) = 2000 µS ; *** : 2 (R7 x R6 x R5) = 2 (10 x 100 x 250) = 500000 µS ; ------------- + ; 502020 µS 500 mS ≈

3. Merancang dan membuat rangkaian penggerak motor stepper dengan

menggunakan Mikrokontroler

a. Rangkaian penggerak motor stepper dengan menggunakan IC

mikrokontroler AT89C51 yang bekerja pada port 1. Ikuti standar

rangkaian seperti gambar dibawah.

b. Buatlah bahasa pemograman untuk penggerak motor stepper yang

bergerak searah dengan jarum jam secara berulang-ulang dengan

waktu tunda 500 mili detik.

c. Tulis bahasa pemograman yang telah dibuat dikomputer dengan

menggunakan software Pinnacle. Kemudian simulasikan program

tersebut secara software sampai tidak ada kesalahan.

d. Setelah progaram disimulasikan dan tidak ada kesalahan kemudian

isikan program tersebut kedalam IC mikrokontroler dengan

menggunakan programmer Atmel.

e. Selanjutnya pindahkan IC yang telah diprogram ke Emulator untuk

disimulasikan secara hardware.

186

Page 43: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

P1.01

P1.12

P1.23

P1.34

P1.45

P1.56

P1.67

P1.78

RST9

P3.010

P3.111

P3.212

P3.313

P3.414

P3.515

P3.616

P3.717

XTAL218

XTAL119

GND20

VCC 40

P0.0 39

P0.1 38

P0.2 37

P0.3 36

P0.4 35

P0.5 34

P0.6 33

P0.7 32

EA/VPP 31

ALE/PROG 30

PSEN 29

P2.7 28

P2.6 27

P2.5 26

P2.4 25

P2.3 24

P2.2 23

P2.1 22

P2.0 21

AT89C51

11.0592MHz

33pF 33pF

+10uF 10K

5V

5V

M1

MOTOR STEPPE R

Q3BD140

Q2BD140

Q1BD140

Q4BD140

D31N4002

D21N4002

D11N4002

D41N4002

R41 K

R31 K

R21 K

R11 K

5V

5V

Gambar VIII.8 Rangkaian penggerak Stepper Motor

Bahasa Pemograman

ORG 0H Mulai: MOV P1,#11111110B ; Isi port 1 dengan data 11111110B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111101B ; Isi port 1 dengan data 11111101B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111011B ; Isi port 1 dengan data 11111011B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11110111B ; Isi port 1 dengan data 11110111B ACALL Tunda ; Panggil subrutin Tunda SJMP Mulai ; Lompat ke label mulai (lakukan berulang)

; Motor akan berputar jika diberi logik 0. Tunda: MOV R5,# 250 ; Isi Register 5 dengan data 250 Tunda1: MOV R6,#100 ; Isi Register 6 dengan data 100 Tunda2: MOV R7,#10 ; Isi Register 7 dengan data 10 DJNZ R7,$ ; Kurangi R7 dengan 1 sampai 0 *

187

Page 44: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

DJNZ R6,Tunda2 ; Kurangi R6 jika belum 0 lompat ke label tunda2 **

DJNZ R5,Tunda1 ; Kurangi R7 jika belum 0 lompat ke label tunda1 ***

RET ; Kembali ke program utama End ; Waktu tunda ( siklus DJNZ = 2 µS) : ; * : 2 (R7) = 2 (10) = 20 µS ; ** : 2 (R7 x R6) = 2 (10 x 100) = 2000 µS ; *** : 2 (R7 x R6 x R5) = 2 (10 x 100 x 250) = 500000 µS ; ------------- + ; 502020 µS 500 mS ≈

1. Potongan program yang harus diganti agar motor bergerak berlawanan arah

dengan jarum jam yaitu: Mulai: MOV P1,#11110111B ; Isi port 1 dengan data 11110111B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111011B ; Isi port 1 dengan data 11111011B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111101B ; Isi port 1 dengan data 11111101B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111110B ; Isi port 1 dengan data 11111110B ACALL Tunda ; Panggil subrutin Tunda SJMP Mulai ; Lompat ke label mulai (lakukan berulang) ; Motor akan berputar jika diberi logik 0. 2. Program untuk menggerakan motor stepper searah dengan jarum jam

sejauh 180º dengan waktu tunda 200 mili detik yaitu :

ORG 0H Mulai: MOV R0,#24 ; Isi R0 dengan data 24 ( 180o putaran) Putar: MOV P1,#11110111B ; Isi port 1 dengan data 11110111B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111011B ; Isi port 1 dengan data 11111011B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111101B ; Isi port 1 dengan data 11111101B ACALL Tunda ; Panggil subrutin Tunda MOV P1,#11111110B ; Isi port 1 dengan data 11111110B ACALL Tunda ; Panggil subrutin Tunda DJNZ R0,Putar ; Kurangi R0 dengan 1 jika belum 0 lompat ke Putar

188

Page 45: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

SJMP $ ; Lompat kedirinya sendiri (program berhenti) ; 1 putaran motor stepper terdapat 192 step, untuk menjalankan 180o terdapat 96 ; step. Dalam menjalankan motor stepper dilakukan setiap 4 step sekali. Sehingga ; untuk memutar 180o terdapat 96 : 4 = 24 kali.

; Motor akan berputar jika diberi logik 0. Tunda: MOV R5,#250 ; Isi Register 5 dengan data 250 Tunda1: MOV R6,#40 ; Isi Register 6 dengan data 40 Tunda2: MOV R7,#10 ; Isi Register 7 dengan data 10 DJNZ R7,$ ; Kurangi R7 dengan 1 sampai 0 DJNZ R6,Tunda2 ; Kurangi R6 jika belum 0 lompat ke label tunda2 DJNZ R5,Tunda1 ; Kurangi R7 jika belum 0 lompat ke label tunda1 RET ; Kembali ke program utama

End ; Waktu tunda ( siklus DJNZ = 2 µS) : ; * : 2 (R7) = 2 (10) = 20 µS ; ** : 2 (R7 x R6) = 2 (10 x 40) = 800 µS ; *** : 2 (R7 x R6 x R5) = 2 (10 x 40 x 250) = 200000 µS ; ------------- + ; 200820 µS 200 mS ≈

8.6. Ringkasan

1. Mikrokontroler adalah mikrokomputer yang dalam satu chip terdapat CPU,

RAM, ROM, dan I/O.

2. Di dalam chip mikrokontroler selain terdapat komponen utama,yaitu CPU,

RAM, ROM, dan I/O, juga ada yang dilengkapi dengan ADC/DAC, Counter,

Timer, Clock, dan lain-lain. Hal ini akan tergantung pada disain arsitektur

mikrokontroler itu sendiri, dengan pertimbangan teknologi yang digunakan.

3. Setiap mikrokontroler mempunyai keunggulan dan kekurangan tergantung

pada kelengkapan (fitur-fitur) yang dimiliki oleh mikrokontroler.

4. Instruksi dan bahasa pemograman mikrokontreoler tidak kompatibel antara

yang satu dengan yang lain.

5. Mikrokontroler AT89C51 merupakan salah satu jenis mikrokontroler CMOS

8 bit yang memiliki flash PEROM 4Kb, RAM internal dengan kapasitas 128 x

8 bit, 32 port I/O yang terbagi menjadi 4 buah port dengan 8 jalur I/O,

189

Page 46: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

kemudian terdapat pula sebuah port serial dengan control serial full duplex,

dua timer/ counter 16 bit dan rangkaian osilator

6. Mikrokontroler MCS-51 memiliki ruang alamat memori data dan program

yang terpisah.

8.7. Soal Latihan

1. a). Jelaskan perbedaan mikrokontroler 8051 dengan 89C51!

b). Gambarkan diagram blok arsitektur 89C51 dan jelaskan fungsi setiap

bloknya!

2. Jelaskan organisasi memori pada mikrokontroler 89C51!

3. Jelaskan perbedaan antara direct addressing dengan indirect addressing

dan berikan contohnya !

4. Jelaskan 6 mode penglaman pada mikrokontroler 89C51 serta dilengkapi

dengan contoh setiap modenya!

5. Bila Program Status Word berisi 18 h.yang terdapat pada RAM Internal

89C51 bank register berapa yang terpilih!

6. Dari alamat berapakah Special Function Register dapat dialamati dan pada

alamat berapa!

7. Jelaskan fungsi dari pin PSEN dan AE pada mikrokontroler 89C51!

8. Buat program untuk mengurangkan bilangan yang berada pada lokasi

memori 2000 dengan bilangan pada lokasi memori 2001!

9. Jelaskan yang dimaksud Idle Mode dan power down mode pada

mikrokontroler 89C51!

10. Buat program untuk menjumlahkan bilangan pada R0 = 137, R1 = 33, dan

R3 = 56 !

11. Buat program untuk membagi bilangan pada R 0 : R 1 : R 2. (R0 = 100; R1

= 2 ; dan R2 = 10)!

12. Jelaskan program dibawah ini : SMOD 51 MAIN CPL P1,0 CALL DELAY JMP MAIN DELAY MOV R7, # 50 DE LAY1 MOV R 6, # 100

190

Page 47: BAB VIII MIKROKONTROLER Pendahuluan Tujuan Perkuliahan

DELAY 2 MOV R 5, # 100. DJNZ R5, $ DJNZ R 6, DELAY 2 DJNZ R 7, DELAY 1 RET END.

13. Jelaskan program dibawah ini

ORG 0H Mulai: MOV P0,#11100111B

ACALL Tunda MOV P0,#11011011B ACALL Tunda MOV P0,#10111101B ACALL Tunda MOV P0,#01111110B ACALL Tunda SJMP Mulai. RET End.

191