Anda di halaman 1dari 238

BAB I

RANCANG BANGUN MIKROPROSESOR

A. Kompetensi Dasar
3.1 Menerapkan gambar arsitektur (rancang bangun)
mikroprosesor (C3)
4.1 Membuat kembali blok diagram arsitekur mikroprosesor
(P2)

B. Indikator Pencapaian Kompetensi


3.1.1 Menjelaskan pengertian mikroprosesor
3.1.2 Menjelaskan setiap bagian – bagian blok diagram
mikroprosesor
3.1.3 Menentukan susunan bagian – bagian blok diagram
mikroprosesor
3.1.4. Menghubungkan setiap Bagian – bagian blok diagram
mikroprosesor
4.1.1 Membuat kembali blok diagram arsitektur mikroprosesor

C. Tujuan Pembelajaran
1. Peserta didik dapat menjelaskan pengertian mikroprosesor
2. Peserta didik dapat menjelaskan setiap bagian – bagian blok
diagram mikroprosesor
3. Peserta didik dapat menentukan susunan bagian – bagian
blok diagram mikroprosesor
4. Peserta didik dapat menghubungkan setiap Bagian – bagian
blok diagram mikroprosesor
5. Peserta didik dapat membuat kembali blok diagram
arsitektur mikroprosesor

D. Uraian Materi
1.1. Definisi mikroprosessor
Sebelum membahas tentang rancang bangun
mikroprosessor perlu diketahui terlebih dahulu tentang pengertian
mikroprosesor.

Mikroprosesor Dan Mikrokontroller 1


Mikroprosesor adalah sebuah chip (keping) yang dapat
melaksanakan operasi-operasi hitungan, operasi nalar, dan operasi
kendali secara elektronis (digital). Biasanya mikroprosesor dikemas
dengan plastik atau keramik. Kemasannya dilengkapi dengan pin-
pin yang merupakan terminal masukan dan keluaran dari chip.
Mikroprosesor merupakan rangkaian terpadu (integrated circuit)
dalam bentuk komponen chip VLSI (very large scale integration)
yang mampu menjalankan perintah secara berurutan dalam bentuk
program sehingga dapat bekerja sesuai yang diinginkan programer.
Perintah atau instruksi yang diberikan pada suatu mikroprosesor
haruslah dapat dimengerti oleh mikroprosesor itu sendiri. Pada
umumnya instruksi yang diberikan dalam bentuk besaran-besaran
biner atau dalam bahasa mesin (machine language).

1.2. RANCANG BANGUN MIKROPROSESOR


Mikroprosesor terdiri dari bagian-bagian yang satu dengan
yang lain saling melengkapi dan mendukung dalam memproses
serta menterjemahkan berbagai macam intruksi yang diberikan
kepadanya untuk selanjutnya dikerjakan kemudian setiap menerima
instruksi selanjutnya. Susunan dari bagian-bagian tersebut dikenal
sebagai rancang bangun dari sebuah mikroprosesor (Mikroprosesor
Architectur). Untuk mikroprosesor tipe Z80 memiliki rancang
bangun seperti terlihat pada Gambar 1. Dari diagram rancang
bangun mikroprosesor Z80 pada Gambar 1, setiap bagian dapat
dijelaskan sebagai berikut:

Gambar 1.1 Architecture Mikroprosesor Z80


2 Mikroprosessor Dan Mikrokontroller
1.1.1 ALU
ALU merupakan singkatan dari Arithmetic Logic Unit yaitu bagian
yang berfungsi untuk memproses pengolahan intruksi yang
berhubungan dengan proses aritmatika dan logika. Dan juga pada
bagian ini merupakan jantung dari CPU serta didalamnya terdapat
register A yang berfungsi sebagai accumulator untuk menyimpan
hasil akhir dari proses-proses tersebut.
1.1.2 CPU Register
Pada bagian ini terdiri dari register-register yang dapat dipakai
secara umum (general purpose register) yang dapat diakses secara
langsung dan register-register yang dipakai secara khusus (special
purpose register). Pada mikroprosesor Z80 memiliki 22 buah
register yang terdiri dari tiga group.
1.1.3 Instruction Register
Pada bagian ini berfungsi untuk menterjemahkan kode-kode biner
tertentu yang masuk melalui data bus diubah menjadi intruksi-
intruksi yang dapat dimengerti dan dapat diolah pada unit pengolah
pusat (CPU) dan selanjutnya juga akan mengendalikan bagian-
bagian terkait yang terdapat dalam mikroprosesor Z80 misalnya
addres bus, data bus, control bus register-register dan lain-lainnya
melalui CPU Control Signal System.
1.1.4 CPU Control Signal System
Pada bagian ini berfungsi untuk memberikan sinyal-sinyal kendali
pada bagian-bagian yang terkait sehingga segala kendali baik
secara hardwer maupun softwer dapat dikendalikan lewat control
signal system dengan cara memberikan suatu level sinyal logika
untuk dapat mengaktifkan bagian-bagian yang terkait. Misalnya
saluran reset diberikan logik 0 (diaktifkan), maka bagian control
signal system ini akan mereset isi register PC dan isinya akan
disalurkan saluran alamat, saluran data akan difungsikan sebagai
masukan untuk dapat menerima data intruksi dari perangkat
memori, sebaliknya jika ada intruksi yang berhubungan dengan
alamat, maka isi PC akan diset sesuai dengan intruksi kemudian

Mikroprosesor Dan Mikrokontroller 3


akan disalurkan kesaluran alamat dapat digunakan oleh intruksi
selanjutnya.
1.1.5 Data Bus Control
Pada bagian ini berfungsi untuk mengendalikan saluransaluran data
sebanyak 8 bit sesuai dengan sinyal kendali dari CPU control
signal. Saluran bus data dapat berfungsi sebagai saluran masukan
(Input), saluramn keluaran (output) dan dapat juga dalam keadaan
floating (berimpedansi tinggi)
1.1.6 Address Bus Control
Pada bagian ini berfungsi untuk mengendalikan saluransaluran
alamat sebanyak 16 bit untuk digunakan dalam pengalamatan
perangkat-perangkat memori, perangkat inputoutput dan
sebagainya. Konfigurasi penyemat pada mikroprosesor Z80 Chip
mikroprosesor Z80 dikemas dalam berbagai tipe, untuk tipe DIP 40
(dual in line packed) memiliki konfigurasi penyemat seperti pada
Gambar 1.2.

Gambar 1.2 Konfigurasi pin I/O Z80


Dari konfigurasi penyemat pada Gambar 2 dapat diuraikan secara
singkat dari fungsi masing-masing kelompok saluran sebagai
berikut:

4 Mikroprosessor Dan Mikrokontroller


Address bus: Address Bus terdiri dari 16 saluran yang diberikan
notasi dari A0-A15 yang merupakan saluran keluaran untuk
pengalamatan memori dengan kasitas sebanyak 65536 bytes
atau 64 kb.
Data Bus: Data bus terdiri dari 8 saluran yang diberikan notasi D0-
D7, berfungsi untuk saluran lalu lintas data maupun data
instruksi dari mikroprosesor dan sebaliknya.
M1: Merupakan saluran sinyal kontrol keluaran yang apabila
berlogika 0 menunjukkan bahwa siklus yang sedang
berlangsung adalah siklus pengambilan kode operasi dalam
pelaksanaan suatu instruksi.
MREG: Singkatan dari memori request, merupakan saluran sinyal
kontrol keluaran yang apabila berlogika 0 menunjukkan
bahwa bus alamat berisi alamat memori untuk pembacaan
ataupun penulisan memori.
IORQ: Singkatan dari input output request, merupakan saluran
keluaran yang apabila berlogika 0 menunjukkan bahwa bus
alamat rendah (A0-A7) berisi alamat I/O untuk pembacaan
atau penulisan. Sedangkan bus alamat tinggi (A8-A15) berisi
data yang akan dikeluarkan dari akumulator (register A).
RD: Singkatan dari read (membaca) sebagai saluran sinyal keluaran
yang berfungsi untuk melakukan kendali pada pembacaan
memori ataupun perangkat I/O.
WR: Singkatan dari write (menulis) sebagai saluran sinyal keluaran
yang berfungsi untuk melakukan kendali pada penulisan
memori ataupun perangkat I/O.
RFSH: Singkatan dari refresh (penyegaran) sebagai sinyal
keluaran yang berfungsi untuk memberikan sinyal
penyegaran pada memori RAM jenis dinamik.
HALT : Merupakan sinyal kontrol keluaran yang akan memberikan
level 0 jika instruksi HALT dilaksanakan. pada saat halt CPU
akan dilaksanakan instruksi NOP (no operation). WAIT
Merupakan sinyal kontrol masukan. Jika pada saluran ini
diberikan logik 0, akan memberitahukan pada CPU bahwa

Mikroprosesor Dan Mikrokontroller 5


data dari memori ataupun perangkat I/O belum siap untuk
ditransfer ke saluran bus data.
INT: Merupakan sinyal kontrol masukan. Jika pada saluran ini
diberikan logik 0, CPU akan diberitahu bahwa peralatan luar
meminta suatu interupsi (sela). Permintaan sela akan ditahan
hingga akhir siklus instruksi yang sedang berjalan, dengan
syarat bahwa IFF (interupt flip-flop register diset) dan saluran
BUSRQ sedang tidak diaktifkan.
NMI: Merupakan saluran kontrol masukan. Jika diberi logik 0 akan
menyebabkan CPU melaksanakan routin dari NMI pada
alamat memori 0066H. Interupsi ini tidak dapat dihalangi
baik secara hardware maupun software.
RESET Merupakan sinyal kontrol masukan. Jika diberikan logik 0
akan mereset CPU untuk mengisi register PC dengan 0000H
dan semua IFF akan diseble, Register I dan R diisi 0000H.
Semua bus dalam keadaan floating. Setelah saluran ini
dinonaktifkan kembali maka berarti CPU akan melaksanakan
instruksi awal memori seperti ketika sistem dihidupkan
pertama kali.
BUSRQ Merupakan sinyal kontrol masukan. Jika diberikan logik 0,
berarti merupakan permintaan untuk saluran-saluran bus data,
bus saluran alamat dan bus saluran kontrol untuk menjadi
floating (dalam keadaan impedansi tinggi). Kondisi ini
biasanya digunakan untuk trasfer data secara langsung antara
perangkat-perangkat pendukung mikroprosesor, tanpa
melalui CPU (DMA = Direct Memori Acses).
BUSAK Merupakan sinyal kontrol keluaran yang akan memberikan
logik 0 sebagai tanda bahwa saluran bus alamat, saluran bus
data dan saluran bus kontrol dalam keadaan floating. Jadi
saluran ini dapat dijadikan indikator dari aktifitas yang
diberikan kepada saluran BUSRQ.
CLK Merupakan saluran masukan untuk clock system yang
digunakan oleh mikroprosesor dalam melaksanakan proses
pengolahan instruksi. Jadi secara total kecepatan kerja akan
ditentukan oleh frekuensi clock ini. Besaranya frekuensi

6 Mikroprosessor Dan Mikrokontroller


untuk mikroprosesor Z 80 adalah 2,5 MHz dan Z80A adalah
4 MHz.

1.3. BLOK DIAGRAM SISTEM MIKROPROSESOR

Gambar 1.3 Blok Diagram Sistem Mikroprosesor


1.2.1 Microprocessor Unit (MPU)
a. MPU tersusun dari tiga bagian pokok yaitu :
1. Control Unit (CU)
2. Arithmetic Logic Unit (ALU)
3. Register Unit (RU)
b. Sebagai CPU, MPU bekerja dan melakukan fungsi dasar
yaitu fungsi logika dan aritmetika.
c. MPU juga melakukan fungsi pengalihan data dengan
menggunakan perintah MOV, atau LOAD, EXCHANGE,
PUSH, dan POP.
d. Penyimpan program dan data memerlukan MEMORI
terutama memori program dalam ROM.

1.2.2 Sistim Bus


a. Mikroprosesor berkomunikasi dengan unit memori, unit I/O
menggunakan saluran yang disebut dengan BUS.
b. Setiap mikroprosesor dilengkapi dengan tiga bus sebagai
berikut:

Mikroprosesor Dan Mikrokontroller 7


1.2.3 Bus Data
a. Data bus terdiri dari 8, 16, 32, 64 atau lebih saluran paralel.

b. PU membaca/menulis data lokasi memori, Port. (melalui


saluran Bus Data)
c. Setiap piranti yang terhubung ke data bus harus
menggunakan tri state buffer sehingga dapat berkeadaan
floating/berimpedansi tinggi jika tidak sedang digunakan.
d. Mikroprosesor standar memiliki saluran bus data 8 bit dua
arah artinya alih data atau informasi berlangsung pada 8
saluran paralel dari MPU ke unit lain diluar MPU atau dari
unit lain di luar ke MPU.

1.2.4 Address Bus


a. Untuk menetapkan kemana data itu dikirim atau dari mana
data itu diambil digunakan bus alamat.

8 Mikroprosessor Dan Mikrokontroller


b. Bus alamat bertugas menetapkan dan memilih satu lokasi
memori atau satu lokasi I/O yang hendak diakses.
c. Bus alamat terdiri dari 16, 20, 24, atau lebih saluran sinyal
paralel.
d. Pada saluran CPU mengirim alamat lokasi memori yang
akan ditulisi atau lokasi memori yang akan dibaca.

1.2.5 Control Bus


a. CPU mengirim keluar atau menerima sinyal kendali melalui
saluran bus kendali.
b. Bentuk-bentuk bus kendali adalah: Pembacaan memori,
Penulisan ke memori, Pembacaan Port I/O, Penulisan Port
I/O, Reset, Interrupt, Memori Request, I/O Request, dan
sebagainya tergantung jenis CPU-nya.
c. Bus Kendali adalah seperangkat bit pengendali yang
berfungsi mengatur:
a) Penyerempakan memori,
b) Penyerempakan I/O,
c) Penjadwalan MPU, Interupsi, DMA,
d) Pembentuk clock, dan reset.
1.2.6 Memori
a. Bagian memori merupakan gabungan dari memori
elektronik RWM dan ROM.
b. Disamping juga magnetik floppy disk, magnetik hard disk,
atau laser optical disk/CD/DVD/BlueRay, dll.
c. Pemakaian memori memiliki dua tujuan :
a) Menyimpan kode biner untuk urutan instruksi yang
disebut dengan program,
b) Menyimpan kode biner data selama komputer bekerja.
1.2.7 Input/Output (I/O)
a. Merupakan bagian yang memungkinkan komputer untuk
mengambil data dari luar atau mengirim data ke luar.
b. Peripheral semacam keyboard, terminal: video/monitor,
printer dan modem dihubungkan ke bagian I/O.
c. Piranti yang digunakan untuk interface bus komputer ke
peralatan luar disebut Port.

Mikroprosesor Dan Mikrokontroller 9


1.2.8 Central Processing Unit (CPU)

a. CPU bekerja mengendalikan operasi komputer.


b. CPU mengambil kode biner instruksi dari memori,
kemudian mendekode instruksi tersebut dalam urutan aksi
yang sangat sederhana.
c. Sebuah CPU terdiri dari Aritmetic Logic Unit (ALU) yang
dapat membangun fungsi penjumlahan (Add), Pengurangan
(Subtract), Logika OR, AND, Invert, atau XOR.
d. CPU juga memiliki register-register. Salah satu register dari
CPU berfungsi sebagai pencacah alamat (Program Counter=
PCI yang digunakan untuk memegang alamat sebuah
instruksi atau data berikutnya yang akan diambil dari
memori, register umum, atau alamat I/O.
e. CPU juga memiliki bagian penting yang disebut dengan
Control Unit yang bekerja membangkitkan sinyal kendali.

E. RANGKUMAN

1. Susunan dari bagian-bagian blok diagram mikroprosesor dikenal


sebagai rancang bangun dari sebuah mikroprosesor
(Mikroprosesor Architectur).
2. Bagian - bagian blok diagram mikroprsesor adalah ALU, CPU
Register, Instruction Register, CPU Control Signal System, Data
Bus Control, Address Bus Control
3. Susunan blok diagram mikroprosesor
1) ALU
2) CPU Register
3) Instruction Register
4) CPU Control Signal System
5) Data Bus Control
6) Address Bus Control

4. Penjelasan dari bagian – bagian blok diagram mikroprosesor


1) ALU merupakan singkatan dari Arithmetic Logic Unit yaitu
bagian yang berfungsi untuk memproses pengolahan

10 Mikroprosessor Dan Mikrokontroller


intruksi yang berhubungan dengan proses aritmatika dan
logika.
2) CPU Register terdiri dari register-register yang dapat
dipakai secara umum (general purpose register) yang dapat
diakses secara langsung dan register-register yang dipakai
secara khusus (special purpose register).
3) Pada bagian ini berfungsi untuk menterjemahkan kode-kode
biner tertentu yang masuk melalui data bus diubah menjadi
intruksi-intruksi yang dapat dimengerti dan dapat diolah
pada unit pengolah pusat (CPU)
4) Instruction Register berfungsi untuk memberikan sinyal-
sinyal kendali pada bagian-bagian yang terkait sehingga
segala kendali baik secara hardwer maupun softwer dapat
dikendalikan lewat control signal system dengan cara
memberikan suatu level sinyal logika untuk dapat
mengaktifkan bagian-bagian yang terkait.
5) CPU Control Signal System Pada bagian ini berfungsi
untuk mengendalikan saluransaluran data sebanyak 8 bit
sesuai dengan sinyal kendali dari CPU control signal
6) Address Bus Control berfungsi untuk mengendalikan
saluransaluran alamat sebanyak 16 bit untuk digunakan
dalam pengalamatan perangkat-perangkat memori,
perangkat inputoutput dan sebagainya.

Mikroprosesor Dan Mikrokontroller 11


SOAL LATIHAN
1. Jelaskan pengertian mikroprosessror!
2. Gambarkan diagram blok diagram mikroprosesor dan jelaskan setiap
bagian blok diagram tersebut!

12 Mikroprosessor Dan Mikrokontroller


BAB II
SISTEM MIKROPROSESOR

A. Kompetensi Dasar
3.2 Menjelaskan prinsip kerja sistem minimum mikroprosesor
B. Indikator Pencapaian Kompetensi
3.2.1 menjelaskan pengertian sistem minimum mikroprosesor
3.2.3 Menjelaskan prinsip kerja sistem minimum
mikroprosesor
3.2.3 Menginterpretasikan prinsip kerja sistem minimum
mikroprosesor.

C. Tujuan Pembelajaran
1. Peserta didik dapat Menjelaskan pengertian sistem minimum
mikroprosesor
2. Peserta didik dapat Menjelaskan prinsip kerja sistem
minimum mikroprosesor
3. Peserta didik dapat Menginterpretasikan prinsip kerja sistem
minimum mikroprosesor Peserta didik dapat Membuat
kembali blok diagram arsitekur mikroprosesor
D. Uraian Materi
2.1 Sistem Minimum Mikroprosesor
Sebuah sistem minimum mikroprosesor memerlukan perangkat-
perangkat seperti mikroprosesor, unit memori, unit masukan dan
keluaran, dan rangkaian pendukung lain. Diagram blok rangkaian
sistem minimum mikroprosesor diperlihatkan dalam Gambar 2.1.

Gambar 2.1. Sistem Minimum Mikroprosesor

Mikroprosesor Dan Mikrokontroller 13


2.2 Prinsip Kerja Sistem Mikroprosesor
Dalam sistem mikroprosesor prinsip kerjanya adalah mengolah
suatu data masukan, yang kemudian hasil olahan tersebut akan
menghasilkan keluaran yang dikehendaki. Proses pengolahan
datanya dapat difungsikan sesuai dengan instruksi yang
diprogramkan . Masing-masing mikroprosesor memiliki bahasa
pemrograman yang berbeda-beda. Namun secara prinsip, dasar dari
tiap mikroprosesor adalah sama. Tiap mikroprosesor memiliki satu
bus data, satu bus alamat dan satu bus kendali. Dalam
mikroprosesor terdapat suatu unit untuk mengerjakan fungsi –
fungsi logika dan aritmetika, register – register untuk menyimpan
data sementara dan unit pengendalian .

Bus data terdiri biasanya 4, 8, 16 atau 32 jalur (bit), 64 bit,


tergantung dari jenis mikroprosesornya. Bus data berfungsi memuat
data dari dan ke mikroprosesor. Arah panah menunjukkan arah data
dikirim/diterima. Bus alamat merupakan bus yang berisi alamat-
alamat yang datanya akan dikirim/diterima oleh mikroprosesor.
Bus kendali digunakan untuk mensinkronkan kerja antara
mikroprosesor dengan dunia luar sistem. Pada beberapa aplikasi
ada yang disebut dengan istilah jabat tangan, seperti misalnya pada
penerapan hubungan dengan pencetak (printer).
Dalam sistem kerjanya mikroprosesor didukung oleh unit memori
(untuk menyimpan program tetap/sementara dan menyimpan data),
unit masukan dan keluaran yang berfungsi sebagai antar muka
dengan dunia luar. Catu daya, rangkaian pembangkit detak (clock),
rangkaian pengawas sandi (address decoder), penyangga (buffer)
dan penahan (latch) juga dierlukan mikroprosesor untuk
mendukung operasi kerja sebagai satu rangkaian yang solid.

14 Mikroprosessor Dan Mikrokontroller


E. RANGKUMAN
1. sistem minimum mikroprosesor merupakan perangkat-perangkat
yang terdiri eperti mikroprosesor, unit memori, unit masukan
dan keluaran, dan rangkaian pendukung lain.

2. sistem mikroprosesor prinsip kerjanya adalah mengolah suatu


data masukan, yang kemudian hasil olahan tersebut akan
menghasilkan keluaran yang dikehendaki. Proses pengolahan
datanya dapat difungsikan sesuai dengan instruksi yang
diprogramkan, masing-masing mikroprosesor memiliki bahasa
pemrograman yang berbeda-beda. Namun secara prinsip, dasar
dari tiap mikroprosesor adalah sama. Tiap mikroprosesor
memiliki satu bus data, satu bus alamat dan satu bus kendali.
Dalam mikroprosesor terdapat suatu unit untuk mengerjakan
fungsi – fungsi logika dan aritmetika, register – register untuk
menyimpan data sementara dan unit pengendalian .

3. Blok diagram sistem minimum mikroprosesor

Mikroprosesor Dan Mikrokontroller 15


F. Soal Latihan
1. Jelaskan pengertian sistem minimum mikroprosesor!
2. Jelaskan prinsip kerja sistem minimum mikroprosesor!

16 Mikroprosessor Dan Mikrokontroller


BAB III
KOMPONEN PENDUKUNG MIKROPROSESOR

A. Kompetensi Dasar
3.3 Menjelaskan komponen pendukung sitem minimum
mikroprosesor
B. Indikator Pencapaian Kompetensi
3.3.1 Menjelaskan pengertian komponen pendukung PPI 8255
3.3.2 Menjelaskan pengertian komponen pendukung PIC 8259
3.3.3 Menjelaskan pengertian komponen pendukung ADC
3.3.4 Menjelaskan pengertian komponen pendukung DAC

C. Tujuan Pembelajaran
1. Peserta didik dapat Menjelaskan komponen pendukung PPI
8255
2. Peserta didik dapat Menjelaskan komponen pendukung PIC
8259
3. Peserta didik dapat Menjelaskan komponen pendukung
ADC
4. Peserta didik dapat Menjelaskan komponen pendukung
DAC

D. Uraian Materi
3.1 PPI 8255
PPI 8255 adalah suatu komponen parralel input/output port dalam
satu chip yang dapat di program inpu/oututnya. PPI 8255 memiliki
24 pin I/O yang dibagi menjadi tiga port masing-masing 8 bit. Port
- port tersebut adalah port A (PA0-PA7), port B (PB0-PB7) dan
port C (PC0-PC7). Sebagai jalur untuk transfer data dari dan ke PPI
8255 disediakan saluran 8 bit bus data (D0-D7). Bus data dari PPI
ini dapat dihubungkan langsung dengan bus data dari
mikrokomputer.

Mikroprosesor Dan Mikrokontroller 17


Gambar 3.1 PPI 8255
Keterangan: 1.Bus Alamat PA-PA0 & PB7 - PB0 & PC7 - PC0
adalah Terminal I/O port. 2.Bus Data D7 - D0 adalah Data Bus
3.Bus Kontrol: /CS, /WR, /RD dan RESET CS (Chip Select) adalah
Jika CS di set "0" maka PPI akan bekerja. RD(Read) adalah Jika
RD di set "0" maka CPU Komputer sedang membaca data dari PPI
8255. WR(Write) adalah jika diset "0" maka CPU Komputer
sedang menulis data ke PPI 8255. 4.A0 - A1 adalah Kombinasi
mereka digunakan untuk memilih Port yang mana yang akan di
gunakan. 5. Vcc dan GND adalah Terminal Tegangan Suplai.
3.2 PIC 8259
PIC 8259 • PIC mampu menerima input interupt HW • PIC 8259
mempunyai 8 masukan interupsi yaitu IRQ0 sampai dengan IRQ7 •
Fungsi PIC 8259 : • Untuk menerima dan mengatur interupsi yang
muncul dan mengarahkannya pada sistem penerima interupt. •
Mempercepat respon sistem (fungsi interupt)

18 Mikroprosessor Dan Mikrokontroller


Gambar 3.2 PIC 8259
Fungsi pin - pin PIC 8259: • D7 – D0 : data bus • RD : Proses
pembacaan, Aktif low • WR : Proses penulisan, aktif low • A0 :
Pengalamatan • 0 : Address 20h • 1 : Address 21h • CS : chip
select • CAS0 - CAS2: perluasan PIC

3.3 Analog to Digital Converter (ADC)


ADC (Analog To Digital Converter) adalah perangkat elektronika
yang berfungsi untuk mengubah sinyal analog (sinyal kontinyu)
menjadi sinyal digital. Perangkat ADC (Analog To Digital
Convertion) dapat berbentuk suatu modul atau rangkaian
elektronika maupun suatu chip IC. ADC (Analog To Digital
Converter) berfungsi untuk menjembatani pemrosesan sinyal
analog oleh sistem digital. Converter Alat bantu digital yang paling
penting untuk teknologi kontrol proses adalah yang
menerjemahkan informasi digital ke bentuk analog dan juga
sebaliknya. Sebagian besar pengukuran variabel-variabel dinamik
dilakukan oleh piranti ini yang menerjemahkan informasi mengenai
vaiabel ke bentuk sinyal listrik analog. Untuk menghubungkan
sinyal ini dengan sebuah komputer atau rangkaian logika digital,
sangat perlu untuk terlebih dahulu melakukankonversi analog ke
digital (A/D). Hal-hal mengenai konversi ini harus diketahui
sehingga ada keunikan, hubungan khusus antara sinyal analog dan
digital. ADC (Analog To Digital Convertion) Analog To Digital
Converter (ADC) adalah pengubah input analog menjadi kode –
kode digital. ADC banyak digunakan sebagai Pengatur proses
industri, komunikasi digital dan rangkaian pengukuran/ pengujian.

Mikroprosesor Dan Mikrokontroller 19


Umumnya ADC digunakan sebagai perantara antara sensor yang
kebanyakan analog dengan sistim komputer seperti sensor suhu,
cahaya, tekanan/ berat, aliran dan sebagainya kemudian diukur
dengan menggunakan sistim digital (komputer). Prinsip kerja ADC
adalah mengkonversi sinyal analog ke dalam bentuk besaran yang
merupakan rasio perbandingan sinyal input dan tegangan referensi.
Sebagai contoh, bila tegangan referensi 5 volt, tegangan input 3
volt, rasio input terhadap referensi adalah 60%. Jadi, jika
menggunakan ADC 8 bit dengan skala maksimum 255, akan
didapatkan sinyal digital sebesar 60% x 255 = 153 (bentuk
decimal) atau 10011001 (bentuk biner).

signal = (sample/max_value) * reference_voltage = (153/255) * 5 =


3 Volts

Gambar 3.3 ADC

Keterangan pin : Vin (-) : masukan analog negatif Vin(+) :


masukan analog positif A-GND : analog ground Vref/2 : setengah
tegangan referensi untuk skala penuh Clk R dan Clk IN : untuk
mengatur besarnya clock eksternal WR : sinyal kontrol untuk
memulai konversi RD : sinyal kontrol untuk mengambil data CS :
sinyal untuk mengaktifkan komponen INTR : status untuk
mengetahui bahwa konversi telah selwsai DB0-DB7 : data 8 bit
VCC dan D-GND :tegangan catu daya.

20 Mikroprosessor Dan Mikrokontroller


3.4 Digital to Analog Converter (DAC)
DAC (Digital To Analog Converter) adalah perangkat elektronika
yang berfungsi untuk mengubah sinyal digital (diskrit) menjadi
sinyal analog (kontinyu). Aplikasi DAC (Digital To Analog
Converter) adalah sebagai antarmuka (interface) antara perangkat
yang bekerja dengan sistem digital dan perangkat pemroses sinyal
analog. Perangkat DAC (Digital To Analog Converter) dapat
berupa rangkaian elektronika dan chip IC DAC. Konsep Dasar
DAC (Digital To Analog Converter) Pada dasarnya rangkaian
penjumlah op-amp (summing amplifier) dapat digunakan untuk
menyusun suatu konverter D/A (DAC “Digital To Analog
Converter)” dengan memakai sejumlah hambatan masukan yang
diberi bobot dalam deret biner.

Gambar 3.4 IC Digital to Analog Converter

E. RANGKUMAN
1. Komponen pendukung mikroprosesor adalah PPI 8255, PIC
8259, ADC dan DAC
2. PPI 8255 adalah suatu komponen parralel input/output port
dalam satu chip yang dapat di program inpu/oututnya. PPI
8255 memiliki 24 pin I/O yang dibagi menjadi tiga port
masing-masing 8 bit.
3. PIC 8259 • PIC mampu menerima input interupt HW • PIC
8259 mempunyai 8 masukan interupsi yaitu IRQ0 sampai
dengan IRQ7 • Fungsi PIC 8259 : • Untuk menerima dan
mengatur interupsi yang muncul dan mengarahkannya pada
sistem penerima interupt. • Mempercepat respon sistem
(fungsi interupt)

Mikroprosesor Dan Mikrokontroller 21


4. ADC (Analog To Digital Converter) adalah perangkat
elektronika yang berfungsi untuk mengubah sinyal analog
(sinyal kontinyu) menjadi sinyal digital.
5. DAC (Digital To Analog Converter) adalah perangkat
elektronika yang berfungsi untuk mengubah sinyal digital
(diskrit) menjadi sinyal analog (kontinyu).
Soal latihan
1. Jelaskan pengertian PPI 8255
2. Jelaskan pengertian PIC 8259
3. Jelaskan pengertian Digital to Analog Converter (DAC)
4. Jelaskan pengertian Analog to Digital Converter (ADC)
5. PPI 8255 memiliki 24 pin I/O yang dibagi menjadi tiga port
masing-masing 8 bit. Tuliskan!
6. Tuliskan fungsi pin - pin PIC 8259

22 Mikroprosessor Dan Mikrokontroller


BAB IV
INSTRUKSI –INSTRUKSI (INSTRUCTIONS SET)
MIKROPROSESOR

A. Kompetensi Dasar
3.4 Menerapkan instruksi –instruksi (instructions set)
mikroprosesor
4.4 Menerapkan instruki instruksi (instruction set)
mikroprosesor
B. Indikator Pencapaian Kompetensi
3.4.1 Menjelaskan instruksi –instruksi (instructions set)
mikroprosesor secara umum
3.4.2 Menjelaskan instruksi –instruksi (instructions set)
mikroprosesor secara khusus (Z80)
3.4.3 mendemonstrasikan instruksi –instruksi (instructions set)
mikroprosesor
C. Tujuan Pembelajaran
1. Peserta didik dapat menjelaskan instruksi –instruksi
(instructions set) mikroprosesor secara umum
2. Peserta didik dapat menjelaskan instruksi –instruksi
(instructions set) mikroprosesor secara khusus (Z80)
3. Peserta didik dapat mendemonstrasikan instruksi –instruksi
(instructions set) mikroprosesor
D. Uraian Materi
4.1. Set instruksi (instruction set) secara umum
4.1.1 Pengertian set instruksi
Set instruksi (instruction set) adalah sekumpulan lengkap
instruksi yang dapat di mengerti oleh sebuah CPU, set instruksi
sering juga disebut sebagai bahasa mesin (machine code), karna
aslinya juga berbentuk biner kemudian dimengerti sebagai bahasa
assembly, untuk konsumsi manusia (programmer), biasanya
digunakan representasi yang lebih mudah dimengerti oleh manusia.
Sebuah instruksi terdiri dari sebuah opcode, biasanya bersama
dengan beberapa informasi tambahan seperti darimana asal
operand-operand dan kemana hasil-hasil akan ditempatkan. Subyek
umum untuk menspesifikasikan di mana operand-operand berada

Mikroprosesor Dan Mikrokontroller 23


(yaitu, alamat-alamatnya) disebut pengalamatan. Pada beberapa
mesin, semua instruksi memiliki panjang yang sama, pada mesin-
mesin yang lain mungkin terdapat banyak panjang berbeda.
Instruksi-instruksi mungkin lebih pendek dari, memiliki panjang
yang sama seperti, atau lebih panjang dari panjang word. Membuat
semua instruksi memiliki panjang yang sama lebih muda dilakukan
dan membuat pengkodean lebih mudah tetapi sering memboroskan
ruang, karena semua instruksi dengan demikian harus sama
panjang seperti instruksi yang paling panjang.
Di dalam sebuah instruksi terdapat beberapa elemen-elemen
instruksi:
1. Operation code (op code)
2. Source operand reference
3. Result operand reference
4. Xext instruction preference

4.1.2. Format instruksi (biner):


Missal instruksi dengan 2 alamat operand : ADD A,B A dan B
adalah suatu alamat register.
Beberapa simbolik instruksi:
ADD : Add (jumlahkan)
SUB : Subtract (Kurangkan)
MPY/MUL : Multiply (Kalikan)
DIV : Divide (Bagi)
LOAD : Load data dari
register/memory
STOR : Simpan data ke
register/memory
MOVE : pindahkan data dari
satu tempat ke tempat lain
SHR : shift kanan data
SHL : shift kiri data .dan lain-
lain

24 Mikroprosessor Dan Mikrokontroller


4.1.3 Cakupan jenis instruksi:
Data processing : Aritmetik (ADD, SUB, dsb); Logic (AND,
OR, NOT, SHR, dsb); konversidata
Data storage (memory) : Transfer data (STOR, LOAD, MOVE,
dsb)
Data movement : Input dan Output ke modul I/O
Program flow control : JUMP, HALT, dsb.

4.1.4 Bentuk instruksi:


a. Format instruksi 3 alamat
Mempunyai bentuk umum seperti : [OPCODE][AH],
[AO1], [AO2]. Terdiri dari satu alamt hasil, dan dua alamat
operand, misal SUB Y,A,B Yang mempunyai arti dalam bentuk
algoritmik : Y := A – B dan arti dalam bentuk penjelasan :
kurangkan isi reg a dengan isi reg B, kemudian simpan hasilnya di
reg Y. bentuk bentuk pada format ini tidak umum digunakan di
dalam computer, tetapi tidak dimungkinkan ada pengunaanya,
dalam peongoprasianya banyak register sekaligus dan program
lebih pendek.
Contoh:
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
SUB Y, A, B Y := A – B
MPY T, D, E T := D × E
ADD T, T, C T := T + C
DIV Y, Y, T Y:= Y / T
Memerlukan 4 operasi

b. Format instruksi 2 alamat


Mempunyai bentuk umum : [OPCODE][AH],[AO]. Terdiri dari
satu alamat hasil merangkap operand, satu alamat operand, missal :
SUB Y,B yang mempunyai arti dalam algoritmik : Y:= Y – B dan
arti dalam bentuk penjelasan : kurangkan isi reg Y dengan isi reg
B, kemudian simpan hasillnya di reg Y. bentuk bentuk format ini
masih digunakan di computer sekarang, untuk mengoprasikan lebih
sedikit register, tapi panjang program tidak bertambah terlalu
banyak.
Mikroprosesor Dan Mikrokontroller 25
Contoh :
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
MOVE Y, A Y := A
SUB Y, B Y := Y – B
MOVE T, D T := D
MPY T, E T := T × E
ADD T, C T := T + C
DIV Y, T Y:= Y / T
Memerlukan 6 operasi

c. Format instruksi 1 alamat


Mempunyai bentuk umum : [OPCODE][AO]. Terdiri dari satu
alamat operand, hasil disimpan di accumulator, missal : SUB B
yang mempunyai arti dalam algoritmik : AC:= AC – B dan arti
dalam bentuk penjelasan : kurangkan isi Acc dengan isi reg B,
kemudian simpan hasillnya di reg Acc. bentuk bentuk format ini
masih digunakan di computer jaman dahulu, untuk mengoprasikan
di perlukan satu register, tapi panjang program semakin
bertambah.
Contoh :
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
LOAD D AC := D
MPY E AC := AC × E
ADD C AC := AC + C
STOR Y Y := AC
LOAD A AC := A
SUB B AC := AC – B
DIV Y AC := AC / Y
STOR Y Y := AC
Memerlukan 8 operasi
d. Format instruksi 0 alamat
Mempunyai bentuk umum : [OPCODE]. Terdiri dari semua alamat
operand implicit, disimpan dalam bentuk stack. Operasi yang
biasanya membutuhkan 2 operand, akan mengambil isi stack paling
atas dan dibawahnya missal : SUB yang mempunyai arti dalam
26 Mikroprosessor Dan Mikrokontroller
algoritmik : S[top]:=S[top-1]-S[top] dan arti dalam bentuk
penjelasan : kurangkan isi stack no2 dari atas dengan isi stack
paling atas, kemudian simpan hasilnya di stack paling atas, untuk
mengoprasikan ada beberapa instruksi khusus stack PUSH dan
POP.

Contoh :
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
PUSH A S[top] := A
PUSH B S[top] := B
SUB S[top] := A – B
PUSH C S[top] := C
PUSH D S[top] := D
PUSH E S[top] := E
MPY S[top] := D × E
ADD S[top] := C + S[top]
DIV S[top] := (A – B) /S[top]
POP Y Out := S[top]
Memerlukan 10 operasi

4.2. Set instruksi (instruction set) Secara Khusus


4.2.1 Instruksi Z 80
Mikroprosesor Z80 mempunyai 158 jenis instruksi. Dengan adanya
berbagai mode pengalamatan pada mikroprosesor Z80, maka dapat
diperoleh total sebanyak 694 instruksi yang berbeda yang dapat
dipakai dalam pemograman mikroprosesor Z80
Instruksi-instruksi mikroprosesor Zilog Z80 dibagi ke dalam
kategori berikut ini:
1. Load 8 bit
2. Load 16 bit
3. Exchange, block transfer dan search
4. Operasi – operasi arithmetic dan logic 8 bit
5. Arithmetic serbaguna dan kontrol CPU
6. Operasi - operasi arithmetic 16 bit
7. Rotate dan shift

Mikroprosesor Dan Mikrokontroller 27


8. Bit set, reset, dan operasi – operasi test.
9. Jump
10. Call, return dan restart
11. Operasi – operasi input dan output.

Tabel 1 . Kelompok Load 8 Bit


Sumber dari Buku Guru Mikro saya (1986) Inelco dan buku
Laventhal, (1986). Z80 Assembly Language Programming

Mnemonic Operasi Keterangan


LD r, r' r, ← r' Isi Register r’ diisikan ke
register r
LD r,n r←n Data 8 bit diisikan ke Register r
LD r, (HL) r ← (HL) Isi lokasi memori (HL) diisikan
ke Register r
LD r, (IX+d) r ← (IX+d) Isi Register Index IX ditambah
dengan bilangan bulat penggeser
sebesar d diisikan ke register r
LD r, (IY+d) r ← (IY+d) Isi Register Index IY ditambah
dengan bilangan bulat penggeser
sebesar d diisikan ke register r
LD (HL), r (HL) ← r Isi Register r diisikan ke lokasi
memori yang
ditunjuk oleh isi pasangan
Register HL
LD (IX+d), r (IX+d) ← r Isi Register r diisikan ke lokasi
memori yang ditunjuk oleh
Register Index IX + d
LD (IY+d), (lY+d) ← r Isi Register r diisikan ke lokasi
memori yang
r
ditunjuk oleh Register Index IY

28 Mikroprosessor Dan Mikrokontroller


+d
LD (HL), n (HL) ← n Isi data n diisikan ke alamat
memori yang
ditunjuk oleh pasangan Register
HL
LD (IX+d), (IX+d) ← Isi data n diisikan ke alamat
n n memori yang
ditunjuk oleh Register Index IX
+d
LD (IY+d), (lY+d) ← Isi data n diisikan ke alamat
n n memori yang
ditunjuk oleh Register Index IY
+d
LD A, (BC) A ← (BC) Isi lokasi memori yang ditunjuk
oleh isi
pasangan Register BC diisikan
ke Akumulator
LD A, (DE) A ← (DE) Isi lokasi memori yang ditunjuk
oleh isi
pasangan Register DE diisikan
ke Akumulator
LD A, (nn) A ← (nn) Isi lokasi memori yang ditunjuk
oleh isi operand nn diisikan ke
Akumulator
LD (BC), A (BC) ← A Isi Akumulator diisikan ke
lokasi memori yang
ditunjuk oleh isi pasangan
Register BC

Mikroprosesor Dan Mikrokontroller 29


LD (DE), A (DE) ← A Isi Akumulator diisikan ke
lokasi memori yang ditunjuk
oleh isi pasangan Register DE
LD (nn), A (nn) ← A Isi Akumulator diisikan ke
lokasi memori yang ditunjuk
oleh operand nn
LD A, I A←I Isi Register Interupt Vector
diisikan ke Akumulator
LD A, R A, ← R Isi Register Memory Refresh
diisikan ke Akumulator
LD I,A I←A Isi Akumulator diisikan ke
Register Interupt Vector
LD R, A R←A Isi Akumulator diisikan ke
Register Register
Memory Refresh
r, r’ adalah register –register A, B, C, D, H, L,D,E,F

Instruksi load 8 bit mempunyai opcode LD dan selalu mempunyai dua


buah operand. Instruksi ini menyebabkan nilai yang dispesifikasikan oleh
operand kedua disalin ke dalam register atau tempat tujuan lain yang
dispesifikasikan oleh operand pertama, sedangkan operand kedua tidak
berubah.

Contoh :
1. Jika register H berisi bilangan BAH, dan register E berisi 11H,
instruksi LD H, E, mengakibatkan kedua register berisi 11H.
2. Tulislah program dalam bahasa assembly untuk mengeset isi register
A=A, B=1, C=4, D=3, E=4, H=8, L=6.
Jawab :
Alamat memori Bahasa Assembly
1800H LD A,A
1802H LD B,1
1804H LD C,4
1806H LD D,3
30 Mikroprosessor Dan Mikrokontroller
1808H LD E,4
180AH LD H,8
180CH LD L,6
180EH RST 38

Register 8 bit akan disebut r, sedangkan register 16 bit akan disebut


rr. Bilangan
8 bit akan disebut n, sedangkan bilangan 16 bit akan disebut nn. Isi
suatu lokasi
memori dinyatakan dengan tanda kurung, contoh :
(nn) : Menyatakan isi lokasi memori yang alamatnya nn.
(rr) : Menyatakan isi lokasi memori yang ditunjukkan oleh isi
register 16 bit (rr)
atau register pasangan.
Tabel 2. Kelompok Load 16 bit
Sumber dari Buku Guru Mikro saya (1986) Inelco dan buku
Laventhal, (1986). Z80 Assembly Language Programming

Mnemonic Operasi Keterangan


LD dd, nn dd ← nn Bilangan bulat 2 byte diisikan ke
pasangan Register dd
LD IX, nn Ix ← nn Bilangan bulat 2 byte diisikan ke
Register Index IX.
LD IY, nn IY ← nn Bilangan bulat 2 byte diisikan ke
Register Index IY.
LD HL, Isi address memory nn diisikan
H ← (nn+1), L pada byte yang berorde rendah
(nn) ← (nn) dari pasangan Register
HL(dalam hal ini ke Register L)

LD dd, ddh ← (nn+1) Isi address memory nn diisikan


ddl ← (nn) pada byte yang berorde rendah
(nn) dari pasangan Register dd, dan
isi dari address memory yang

Mikroprosesor Dan Mikrokontroller 31


lebih tinggi nn+1 diisikan pada
byte dd yang berorde tinggi.

LD IX, (nn) IXh ← (nn+1), Isi address memory nn diisikan


IXI ← (nn) pada byte yang berorde rendah
dari Register Index IX, dan isi
dari
address memory yang lebih
tinggi
nn+1 diisikan pada byte IX yang
berorde tinggi.
LD IY, (nn) IYh ← (nn+1), Isi address memory nn diisikan
IYI ← (nn) pada byte yang berorde rendah
dari Register Index IY, dan isi
dari
address memory yang lebih
tinggi
nn+1 diisikan pada byte IY yang
berorde tinggi.

LD (nn), (nn+1) ← H, Isi pasangan Register HL yang


(nn) ← L berorde rendah (Register L)
HL
diisikan ke address memory nn,
dan isi pasangan Register HL
yang berorde tinggi (Register H)
diisikan pada address memory
nn+1 berikutnya yang tinggi.

LD (nn), (nn+1) ← ddh, Isi pasangan Register dd yang


(nn) ← ddl
dd berorde rendah diisikan ke
address
memory nn, dan isi pasangan
Register dd yang berorde tinggi
diisikan pada address memory
32 Mikroprosessor Dan Mikrokontroller
nn+1 berikutnya yang tinggi.

LD (nn), IX (nn+1) ← IXh, Byte berorde rendah dari


(nn) ← IXI Register
Index IX diisikan ke address
memory nn, dan isi Register
index
IX yang berorde tinggi diisikan
pada address memory nn+1

LD (nn), IY (nn+1) ← IYh, Byte berorde rendah dari


(nn) ← IYI Register
Index IY diisikan ke address
memory nn, dan isi Register
index
IY yang berorde tinggi diisikan
pada address memory nn+1

LD SP, HL SP ← HL Isi pasangan Register HL


diisikan ke Stack Ponter SP

LD SP, IX SP ← IX Isi Register Index IX yang


terdiri dari 2 byte tersebut
diisikan ke Stack Pointer SP
LD SP, IY SP ← IY Isi Register Index IY yang
terdiri dari 2 byte tersebut
diisikan ke Stack Pointer SP

PUSH qq (SP-2) ← qqR, Isi pasangan register qq


(SP -1) ←qqT disimpan
dalam ‘eksternal memory LIFO
(last in first out/ terakhir masuk
pertama keluar) stack’. Register
SP (stack pointer) menyimpan
address 16 bit dari bagian atas
(terakhir)stack memory.

Mikroprosesor Dan Mikrokontroller 33


Instruksi ini mula-mula
menurunkan SP (mengurangi SP
dengan 1) dan menyimpan byte
berorde tinggi dari pasangan
register qq ke memori yang
sekarang addressnya ditunjuk
oleh SP. Lalu menurunkan SP
lagi dan menyimpan byte qq
yang berorde rendah ke memory
yang address-nya ditunjukkan
oleh nilai
SP yang baru. Operand qq =
pasangan register BC, DE, HL
atau AF.

PUSH IX (SP-2) ← IXR, Isi register indeks IX disimpan


(SP -1) ←IXT dalam ‘eksternal memory LIFO
(last in first out/ terakhir masuk
pertama keluar) stack’. Register
SP (stack pointer) menyimpan
address 16 bit dari bagian atas
(terakhir)stack memory.
Instruksi ini mula-mula
menurunkan SP (mengurangi SP
dengan 1) dan menyimpan byte
berorde tinggi dari register
indeks IX ke memori yang
sekarang addressnya ditunjuk
oleh SP. Lalu menurunkan SP
lagi dan menyimpan byte IX
yang berorde rendah ke memori
yang address-nya ditunjukkan
oleh nilai
SP yang baru.
PUSH IY (SP-2) ← IYR, (SP - Isi register indeks IY disimpan
1) ←IYT dalam
‘eksternal memory LIFO (last in

34 Mikroprosessor Dan Mikrokontroller


first
out/ terakhir masuk pertama
keluar)
stack’. Register SP (stack
pointer)
menyimpan address 16 bit dari
bagian atas (terakhir)stack
memory.
Instruksi ini mula-mula
menurunkanSP (mengurangi SP
dengan 1) dan menyimpan byte
berorde tinggi dari register
indeks IY ke memory yang
sekarang address-nya ditunjuk
oleh SP. Lalu menurunkan SP
lagi dan menyimpan byte IY
yang berorde rendah ke memori
yang
addressnya ditunjukkan oleh
nilai
SP yang baru.
POP qq qqT← (SP +1), qqR Dua byte teratas dari ‘eksternal
← (SP)
memory LIFO (last in first out/
terakhir masuk pertama keluar)
stack’. Dipindahkan ke register
qq.
Register SP (stack pointer)
menyimpan address 16 bit dari
bagian atas (terakhir)stack

Mikroprosesor Dan Mikrokontroller 35


memory.
Instruksi ini mula-mula
memindahkan byte yang ada
pada memory yang yang
address-nya ditunjuk oleh SP ke
byte pada qq yang berorde
rendah. Lalu SP dinaikkan(nilai
SP ditambah dengan
1). Byte qq yang berorde tinggi
lalu diisi dengan byte pada
memory yang addressnya
ditunjukkan oleh nilai SP yang
baru.
POP IX IXT← (SP +1), IXR Dua byte teratas dari ‘eksternal
← (SP)
memory LIFO (last in first out/
terakhir masuk pertama keluar)
stack’. Dipindahkan ke register
indeks IX. Register SP (stack
pointer) menyimpan address 16
bit dari bagian atas
(terakhir)stack memory.
Instruksi ini mula-mula
memindahkan byte yang ada
pada memory yang yang
address-nya ditunjuk oleh SP ke
byte pada IX yang berorde
rendah. Lalu SP dinaikkan(nilai
SP ditambah dengan 1). Byte IX
yang berorde tinggi lalu diisi
dengan byte pada memori yang
address-nya ditunjukkan oleh
nilai SP yang baru. Nilai SP

36 Mikroprosessor Dan Mikrokontroller


ditambah lagi dengan 1

POP IY IYT← (SP +1), IYR Dua byte teratas dari ‘eksternal
← (SP)
memory LIFO (last in first out/
terakhir masuk pertama keluar)
stack’. Dipindahkan ke register
indeks IY. Register SP (stack
pointer) menyimpan address 16
bit dari bagian atas
(terakhir)stack memory.
Instruksi ini mula-mula
memindahkan byte yang ada
pada memori yang address-nya
ditunjuk oleh SP ke byte pada IY
yang berorde rendah. Lalu SP
dinaikkan(nilai SP ditambah
dengan 1). Byte IY yang berorde
tinggi lalu diisi dengan byte
pada memory yang address-nya
ditunjukkan oleh nilai SP yang
baru. Nilai SP ditambah lagi
dengan 1

Seperti halnya instruksi load 8 bit, pada instruksi load 16 bit juga
mempunyai op code LD dan dua buah operand. Instruksi ini
menyebabkan nilai 16 bit yang dispesifikasikan oleh operand kedua
disalin ke tempat tujuan 16 bit yang dispesifikasikan oleh operand
pertamanya. Flag tidak dipengaruhi oleh instruksi 16 bit.
Contoh :
1. Setelah pelaksanaan instruksi LD HL, 5000H, isi pasangan
HL = 5000H.
2. Jika alamat 2130H berisi 65H dan alamat 2131H berisi
78H, setelah pelaksanaan instruksi LD BC, (2130H), isi
pasangan register BC akan berisi
Mikroprosesor Dan Mikrokontroller 37
3. 7865H.
4. Jika pasangan register AF berisi 2233H dan Stack Pointer
berisi 1007H, setelah instruksi PUSH AF, maka alamat
memori 1006H akan berisi 22H, alamat memori 1005H
akan berisi 33H, dan Stack Pointer akan berisi 1005H.
5. Jika Stack Pointer berisi 1000H, memori pada lokasi 1000H
berisi 55H dan lokasi 1001H berisi 35H, maka setelah
instruksi POP HL, pasangan register HL berisi 3355H dan
Stack Pointer berisi 1002H.
6. Tulislah program dalam bahasa assembly untuk mengeset
isi register B=12, C=34, D=56, E=78, H=9, L=A.

Jawab :
Alamat memori Bahasa Assembly
1820H LD BC,1234H
1823H LD DE,5678H
1826H LD HL,9A
1828H RST 38

Tabel 3. Kelompok Exchange, Block Transfer dan Search

Mnemonic Operasi Keterangan


EX DE, DE ↔ HL Isi pasangan register
HL DE dan HL (masing-
masing 2 byte)
dipertukarkan
EX AF, AF ↔ AF' Isi pasangan register
AF' AF dan AF’ (masing-
masing 2 byte)
dipertukarkan
EXX (BC) ↔ (BC'), Isi pasangan register
BC dan BC’ (masing-
(DE) ↔ (DE'),
masing 2 byte)
(HL) ↔ (HL')

38 Mikroprosessor Dan Mikrokontroller


dipertukarkan, dst.
EX (SP), H ↔ (SP+1), L ↔ Byte berorde rendah
yang berada pada
HL (SP)
pasangan register HL
dipertukarkan dengan
isi memori yang
address-nya ditunjuk
oleh
isi pasangan register
SP, byte yang berorde
tinggi pada HL
dipertukarkan dengan
isi
memori yang address-
nya ditunjuk oleh
SP+1
EX (SP), IXH ↔ (SP+1), Byte berorde rendah
yang berada pada
IX IXL ↔ (SP)
register index IX
dipertukarkan dengan
isi memori yang
address-nya ditunjuk
oleh isi pasangan
register SP, byte yang
berorde tinggi pada IX
dipertukarkan dengan
isi memori yang
address-nya ditunjuk
oleh SP+1

Mikroprosesor Dan Mikrokontroller 39


EX (SP), IY IYH ↔ (SP+1), Byte berorde rendah
yang berada pada
IYL ↔ (SP)
register index IY
dipertukarkan dengan
isi
memori yang address-
nya ditunjuk oleh isi
pasangan register SP,
byte yang berorde
tinggi pada IY
dipertukarkan dengan
isi
memori yang address-
nya ditunjuk oleh SP+1
LDI (DE) ← (HL), DE Satu byte data pada
← DE + 1, HL ← memori yang lokasinya
HL + 1, BC ← BC -
1 ditunjuk oleh isi
pasangan register HL
diisikan ke lokasi
memori yang lokasinya
ditunjukkan oleh isi
pasangan register DE.
Lalu kedua pasangan
register tersebut(HL
dan (DE) ditambah
dengan satu
(incremented) dan
pasangan register BC
(Byte Counter)
40 Mikroprosessor Dan Mikrokontroller
dikurangi dengan satu
(decremented)
LDIR (DE) ← (HL), DE Satu byte data pada
← DE + 1, HL ← memori yang lokasinya
HL + 1, BCF↔ BC -
1 ditunjuk oleh isi
pasangan register HL
diisikan ke lokasi
memori yang lokasinya
ditunjukkan oleh isi
pasangan register DE.
Lalu kedua pasangan
register tersebut (HL
dan (DE) ditambah
dengan satu
(incremented) dan
pasangan register BC
(Byte Counter)
dikurangi dengan satu
(decremented). Jika
penurunan tersebut
menyebabkan BC
menjadi 0, instruksi ini
dianggap selesai
(dihentikan). Jika BC
belum menjadi 0,
program counter
diturunkan dengan 2
dan instruksi tersebut

Mikroprosesor Dan Mikrokontroller 41


diulangi lagi. Perhatikan
bahwa bilamana BC
di set 0 sebelum
pelaksanaan instruksi
ini,
instruksi dilaksanakan
sebanyak 64K kali.
Interupsi akan dilayani
setiap selesai
mentransfer 1 byte data.
LDD (DE) ← (HL), DE Satu byte data pada
memori yang lokasinya
← DE -1, HL ←
ditunjuk oleh isi
HL-1, BC ← BC- pasangan register HL
1 diisikan ke lokasi
memori yang lokasinya
ditunjukkan oleh isi
pasangan register DE.
Lalu kedua pasangan
register tersebut (HL
dan (DE), juga BC
dikurangi dengan 1
(decremented)
LDDR (DE) ← (HL), DE Satu byte data pada
memory yang lokasinya
← D ← 1, HL ←
ditunjuk oleh isi
HL-1, BC ← BC- pasangan register HL
1 diisikan ke lokasi

42 Mikroprosessor Dan Mikrokontroller


memori yang lokasinya
ditunjukkan oleh isi
pasangan register DE.
Lalu kedua pasangan
register tersebut (HL
dan (DE), juga BC
dikurangi dengan 1
(decremented) Jika
penurunan tersebut
menyebabkan BC
menjadi 0, instruksi ini
dianggap selesai
(dihentikan). Jika BC
belum menjadi 0,
program counter
diturunkan dengan 2
dan instruksi tersebut
diulangi lagi. Perhatikan
bahwa bilamana BC
di set 0 sebelum
pelaksanaan instruksi
ini,
instruksi dilaksanakan
sebanyak 64K kali.
Interupsi akan dilayani
setiap selesai
mentransfer 1 byte data.
CPI A- (HL), HL ← HL Isi memori yang

Mikroprosesor Dan Mikrokontroller 43


+1, BC ← BC -1 lokasinya ditunjukkan
oleh isi pasangan
register HL
dibandingkan
dengan isi akumulator.
Jika hasilnya sama,
ada kondisi bit yang
dipengaruhi. Kemudian
isi HL akan ditambah
dengan 1 dan byte
counter (pasangan
register BC) dikurangi
dengan 1.
CPIR A-(HL), HL ← Isi memori yang
lokasinya ditunjukkan
HL+1, BC ← BC- oleh isi pasangan
1 register HL
dibandingkan dengan
isi akumulator. Jika
hasilnya sama,
ada kondisi bit yang
dipengaruhi. Kemudian
isi HL akan ditambah
dengan 1 dan byte
counter (pasangan
register BC) dikurangi
dengan 1. Jika
penurunan tersebut
menyebabkan BC

44 Mikroprosessor Dan Mikrokontroller


menjadi 0 atau jika A
=(HL), instruksi ini
dianggap selesai
(dihentikan). Jika BC
belum menjadi 0,
program counter
diturunkan dengan 2
dan
instruksi tersebut
diulangi lagi.
Perhatikan
bahwa bilamana BC di
set 0 sebelum
pelaksanaan instruksi
ini, instruksi
dilaksanakan sebanyak
64K kali. Interupsi
akan dilayani setiap
selesai mentransfer 1
byte data. Jika tidak ada
yang cocok ,
interupsi akan dilayani
setiap satu data
selesai dibandingkan.
CPD A -(HL), HL ← HL Isi memori yang
lokasinya ditunjukkan
-1, BC ← BC -1 oleh
isi pasangan register
HL dibandingkan

Mikroprosesor Dan Mikrokontroller 45


dengan isi akumulator.
Jika hasilnya sama,
ada kondisi bit yang
dipengaruhi. Kemudian
isi HL dan byte counter
(pasangan register
BC) dikurangi dengan
1. untuk BC tidak
sama dengan 0 atau A
tidak sama dengan
HL
CPDR A -(HL), HL ← HL- Isi memori yang
1, BC ← BC -1 lokasinya ditunjukkan
oleh isi pasangan
register HL
dibandingkan dengan
isi akumulator. Jika
hasilnya sama, ada
kondisi bit yang
dipengaruhi. Kemudian
isi HL dan byte counter
(pasangan register BC)
dikurangi dengan 1.
Jika penurunan tersebut
menyebabkan BC
menjadi 0 atau jika A
=(HL), instruksi ini
dianggap selesai
(dihentikan). Jika BC
belum menjadi 0,
program counter
diturunkan dengan 2

46 Mikroprosessor Dan Mikrokontroller


dan
instruksi tersebut
diulangi lagi.
Perhatikan
bahwa bilamana BC di
set 0 sebelum
pelaksanaan instruksi
ini, instruksi
dilaksanakan sebanyak
64K kali. Interupsi
akan dilayani setiap
selesai mentransfer 1
byte data. Jika tidak ada
yang cocok ,
interupsi akan dilayani
setiap satu data
selesai dibandingkan.
Sumber dari Buku Guru Mikro saya (1986) Inelco dan buku
Laventhal, (1986). Z80 Assembly Language Programming

Pada CPU Z 80, ada sekumpulan register cadangan, yaitu A’F’,


B’C’, D’E’, H’L’, yang hanya dapat dicapai dengan suatu instruksi
tukar (exchange). Suatu instruksi exchange, saling mempertukarkan
nilai-nilai pada kedua operand.
Contoh :
Jika isi pasangan BC dan DE berturut-turut adalah 445AH
dan 3DA2H. Kemudian isi pasangan register BC’ dan DE’
adalah 0988H dan 9300H, maka setelah instruksi EXX, isi
pasangan – pasangan register di atas akan menjadi : BC
0988H, DE 9300H, BC’ 445AH dan DE’ 3DA2H.

Mikroprosesor Dan Mikrokontroller 47


Tabel .4. Kelompok Arithmetik dan logik 8 bit.
Sumber dari Buku Guru Mikro saya (1986) Inelco dan buku Laventhal,
(1986). Z80 Assembly Language Programming.

Mnemonic Operasi Keterangan


ADD, A, r A A + 1 Isi register r
ditambahkan pada
isi akumulator,
hasilnya disimpan
pada
akumulator. R =
register-register
A,B,C,D,E,H dan L.
ADD A, n A A + r Bilangan bulat n
ditambahkan pada
isi
akumulator,
hasilnya disimpan
pada
akumulator.
ADD A, (HL) A A + (HL) Byte pada memori
yang lokasinya
ditunjukkan oleh isi
pasangan register
HL ditambahkan
pada isi
akumulator,
hasilnya disimpan
pada akumulator.
ADD A, (IX + d) A A + (IX + d) Isi register Indeks
(pasangan register

48 Mikroprosessor Dan Mikrokontroller


IX)
yang ditambah
dengan bilangan
penggeser sebesar d
akan menunjuk
pada suatu lokasi
pada memori. Isi
pada
lokasi inilah yang
ditambahkan pada
isi
akumulator,
hasilnya disimpan
pada
akumulator.
ADD A, (IY + d) A A + (IY + d) Isi register Indeks
(pasangan register
IY)
yang ditambah
dengan bilangan
penggeser sebesar d
akan menunjuk pada
suatu lokasi pada
memori. Isi pada
lokasi inilah yang
ditambahkan pada
isi
akumulator,
hasilnya disimpan
pada

Mikroprosesor Dan Mikrokontroller 49


akumulator.
ADC A, s A A + s + CY Operand s adalah
salah satu dari r, n,
(HL), (IX + d), (IY
+ d) seperti yang
telah diterangkan
pada instruksi ADD.
Operand
s bersama Flag
Carry ( C pada
register F)
ditambahkan pada
isi akumulator,
hasilnya disimpan
pada akumulator.
SUB s A A - s Isi akumulator
dikurangi dengan
operands, hasilnya
disimpan pada
akumulator
SBC s A A – s - CY Isi akumulator
dikurangi dengan
operand
s bersama dengan
Flag Carry (C pada
register F), hasilnya
disimpan pada
akumulator
AND s A A ^s Operasi logika
AND. Bit demi bit
dilakukan diantara
byte yang ditunjuk
50 Mikroprosessor Dan Mikrokontroller
oleh operand s dan
byte yang ada pada
akumulator,
hasilnya disimpan
pada akumulator.
OR s V Operasi logika OR.
A A s Bit demi bit
dilakukan
diantara byte yang
ditunjuk oleh
operand
s dan byte yang ada
pada akumulator,
hasilnya disimpan
pada akumulator
A A s
XOR a Operasi logika
EXOR. Bit demi bit
dilakukan diantara
byte yang ditunjuk
oleh
operand s dan byte
yang ada pada
akumulator,
hasilnya disimpan
pada
akumulator.
CP s A-s Isi operand s
dibandingkan
dengan isi
akumulator, jika

Mikroprosesor Dan Mikrokontroller 51


cocok suatu flag di-
set.
INC r r r+1 Isi register r
ditambah dengan
1(incremented) , r =
register A, B, C, D,
H
atau L.
INC (HL) (HL) (HL)+ 1 Byte pada address
(lokasi) yang
ditunjuk
oleh isi pasangan
register HL
ditambah dengan 1
(incremented).
INC (IX +d) (IX+d) (IX+d) Isi register indeks
IX ditambah dengan
+1 bilangan bulat
penggeser sebesar d
untuk
menunjuk ke suatu
lokasi pada memori.
Isi pada lokasi inilah
yang ditambah
dengan 1
(incremented)
INC (IY +d) (IY+d) (IY+d) Isi register indeks
IY ditambah dengan
+1 bilangan bulat
penggeser sebesar d
untuk menunjuk ke

52 Mikroprosessor Dan Mikrokontroller


suatu lokasi pada
memori. Isi pada
lokasi inilah yang
ditambah dengan 1
(incremented)
DEC m m m-1 Operand m adalah
salah satu dari r,
(HL), (IX + d), (IY
+ d) seperti yang
telah diterangkan
pada instruksi ADD.
Byte yang ditunjuk
oleh operand m
dikurangi dengan 1
(decremented)

Contoh :
1. Tambahan isi program pada lokasi memori 1900 dan 19001 dan
simpan hasilnya pada lokasi memori 1902
Contoh Masalah :
(1900) = 38
(1901) = 2B
Hasil (1902) = ?
Jawab:
Mnemonic
Alamat memori Isi memori
(substraksi)
(Hex) (Hex) bahasa assembly
1800 3A LD A, (1900)
1801 00
1802 19
1803 47 LD B, A

Mikroprosesor Dan Mikrokontroller 53


1804 3A LD A, (1901)
1805 01
1806 19
1807 80 ADD A, B
1808 32 LD (1902), A
1809 02
180A 19
180B 76 Halt

Tabel 5. Arithmetik serbaguna dan control CPU


Sumber dari Buku Guru Mikro saya (1986) Inelco dan buku
Laventhal, (1986). Z80 Assembly Language Programming
Operasi ini akan
menyesuaikan
akumulator (bila
syarat-syaratnya
DAA --- dipenuhi) untuk
operasi
penambahan dan
pengurangan BCD.

Isi akumulator
dibalikkan (inverted).
CPL A Â Nol menjadi
1 dan 1 menjadi 0 (1
komplemen)
Isi akumulator
NEG A 0-A dinegatifkan ( 2
komplemen) hal

54 Mikroprosessor Dan Mikrokontroller


ini sama dengan
mengurangi 0 dengan
isi
akumulator.
Flag C pada register F
CCF CY CY
dibalikkan

Flag C pada register F


SCF CY 1
di-set

CPU tidak melakukan


operasi apapun selama
NOP ---
perioda mesin
(machine cycle) ini.

Operasi HALT ini akan


menunda operasi CPU
sampai ada interrupt
atau reset yang
diterima.
HALT --- Selama dalam keadaan
HALT prosesor akan
melaksanakan NOP
untuk memelihara
kesegaran logik
memori.

DI tidak memungkinkan
(disable) maskable
interrupt dengan
DI IFF 0 mereset interrupt
enable flip
flop (IFF1 dan IFF2).
Perhatikan bahwa

Mikroprosesor Dan Mikrokontroller 55


intruksi
ini tidak
memungkinkan
maskable interrupt
selama
pelaksanaannya.
EI memungkinkan
(enable) maskable
interrupt
dengan mengeset
interrupt enable flip
flop (IFF1
EI IFF 1
dan IFF2). Perhatikan
bahwa intruksi ini tidak
memungkinkan
maskable interrupt
selama
pelaksanaannya.
Instruksi IM 0 ini
mengeset interrupt
mode 0.
pada mode ini alat
interrupt (interrupt
IM 0 --- device)
dapat menyelipkan
intruksi apa saja pada
data
bus dan memungkinkan
CPU melaksanakannya.

IM 1 --- Instruksi IM 1 ini


mengeset interrupt

56 Mikroprosessor Dan Mikrokontroller


mode 1.
pada mode ini prosesor
akan melayani
interrupt
dengan melaksanakan
start ulang pada lokasi
(address) 0038H
Instruksi IM 1 ini
mengeset interrupt
mode 2.
mode ini
memungkinkan
panggilan tidak
langsung ke lokasi
mana saja pada
memori.
Dengan mode ini, CPU
IM 2 --- membentuk suatu ’16
bit
memori address’.
Delapan bit bagian atas
adalah
isi interrupt vector
Register I dan delapan
bir
bagian bawah disuplay
oleh alat interrupt
((interrupt device)

Contoh :

Mikroprosesor Dan Mikrokontroller 57


2. Komplemenkan isi pada lokasi memori 1900 dan simpan hasilnya ke
dalam lokasi memori 1901
Contoh, Masalah
(1900) = 6A
(1901) = ?

Program menggunakan bahas assembly Z.80


LD A, (1900) : kopikan data dari adres lokasi memori 1900 ke register
A
CPL : Komplemenkan data pada register A
LD (1901), A : Simpan hasilnya pada lokasi memori 1901.
Halt : program berhenti

Jawab :
Program lengkap
Mnemonic Operasi Keterangan
(Hex) opcode bahasa assembly
1800 3A LD A, (1900)
1801 00
1802 19
1803 2F CPL
1804 32 LD (1901),A
1805 01
1806 19
1807 76 Halt

Instruksi DAA akan menyesuaikan akumulator (bila syarat-


syaratnya dipenuhi) untuk operasi penambahan dan pengurangan
BCD (Binary Coded Decimal). Untuk penambahan (ADD, ADC,
INC) atau pengurangan (SUB, SBC, DEC, NEG).

58 Mikroprosessor Dan Mikrokontroller


Contoh :
Jika operasi penambahan dilaksanakan antara 15 (BCD) dan 27
(BCD), hasilnya dalam sistem desimal adalah 15 + 27 = 42. Tetapi
angka-angka tadi diwakilkan dalam sistem biner dan dijumlahkan
dalam akumlator menurut standar aritmetik ialah :
0011 1100
+ 0000 0110
0100 0010 = 42
Pada instruksi CPL, dimana isi register A dibalikkan (inverted), 1
menjadi 0, 0 menjadi 1 (1 komplemen). Instruksi NEG menyatakan
isi register A dinegatifkan (2 komplemen)
Instruksi DAA akan menyesuaikan akumulator (bila syarat-syaratnya
dipenuhi) untuk operasi penambahan dan pengurangan BCD (Binary
Coded Decimal). Untuk penambahan (ADD, ADC, INC) atau
pengurangan (SUB, SBC, DEC, NEG).
Contoh :
Jika operasi penambahan dilaksanakan antara 15 (BCD) dan 27 (BCD),
hasilnya dalam sistem desimal adalah 15 + 27 = 42. Tetapi angka-angka
tadi diwakilkan dalam sistem biner dan dijumlahkan dalam akumlator
menurut standar aritmetik ialah :
0011 1100
+ 0000 0110
0100 0010 = 42
Pada instruksi CPL, dimana isi register A dibalikkan (inverted), 1
menjadi 0, 0 menjadi 1 (1 komplemen). Instruksi NEG menyatakan isi
register A dinegatifkan (2 komplemen).
Tabel .6. Operasi - operasi arithmetic 16 bit
Mnemonic Operasi Keterangan

ADD HL, Isi pasangan register ss


HL HL + ss (salah satu dari
ss
pasangan register BC,

Mikroprosesor Dan Mikrokontroller 59


DE, HL atau SP)
ditambahkan pada isi
pasangan register HL
dan hasilnya disimpan
pada HL.
Isi pasangan register ss
(salah satu dari
pasangan register BC,
DE, HL atau SP)
bersama
ADC HL, dengan flag carry (flag
HL HL + ss + CY
ss C dalam regsiter F)
ditambahkan pada isi
pasangan register HL
dan
hasilnya disimpan pada
HL.
Isi pasangan register HL
dikurangi dengan isi

SBC HL, pasangan register ss


HL HL - ss dikurang dengan Flag
ss Carry
hasilnya disimpan pada
HL.

Isi pasangan register pp


(salah satu dari isi

ADD IX, pp IX IX + pp pasangan register BC,


DE, IX atau SP)
ditambahkan pada isi
register indeks IX,

60 Mikroprosessor Dan Mikrokontroller


hasilnya
disimpan pada IX.

Isi pasangan register rr


(salah satu dari isi
pasangan register BC,
DE, IY atau SP)
ADD IY, rr IY IY + rr
ditambahkan pada isi
register indeks IY,
hasilnya
disimpan pada IY.
Isi pasangan register ss
(salah satu dari
INC ss ss ss + 1 pasangan register BC,
DE, HL atau SP)
ditambahkan dengan 1.

Isi register indeks IX


INC IX IX IX + 1
ditambahkan dengan 1
Isi register indeks IY
INC Y IY IY + 1
ditambahkan dengan 1
Isi pasangan register ss
(salah satu dari register
DEC ss ss ss - 1
BC, DE, HL atau SP)
dikurangi dengan 1.
Isi register indeks IX
DEC IX IX IX - 1
dikurangi dengan 1

Isi register indeks IY


DEC IY IY IY - 1
dikurangi dengan 1

Mikroprosesor Dan Mikrokontroller 61


Contoh :
1. Jika pasangan register HL berisi bilangan bulat (integer)
4242H dan pasangan register DE berisi 1111H, setelah
pelaksanaan ADD HL, DE, maka pasangan register HL
berisi 5353H
2. Jika pasangan register HL berisi 1000H, setelah
pelaksanaan INC HL, maka HL akan berisi 1001H.
3. Jika register indeks IX berisi 2006H, setelah pelaksanaan
DEC IX, maka IX akan berisi 2005H.

Tabel 7. Rotate dan shift

Mnemonic Operasi Keterangan


RLCA Isi akumulator dirotasi
ke kiri; isi bit 0
dipindahkan ke bit 1;
isi bit 1 yang terdahulu
dipindahkan ke bit 2
dan seterusnya. Isi bit
7 dicopy pada flag
carry dan juga ke bit 0.
(bit 0 adalah bit
berorde paling rendah)
RLA Isi akumulator dirotasi
ke kiri; isi bit 0
dipindahkan ke bit 1;
isi bit 1 yang terdahulu
dipindahkan ke bit 2
dan seterusnya. Isi bit
7 dicopy pada flag
carry dan isi flag carry
yang terdahulu dicopy
ke bit 0.
RRCA Isi akumulator dirotasi

62 Mikroprosessor Dan Mikrokontroller


ke kanan; isi bit 7
dipindah ke bit 6; isi bit
6 terdahulu dipindah
ke
bit 5; dan seterusnya.
Isi bit 0 dicopy ke bit 7
dan juga ke flag carry.
RRA Isi akumulator dirotasi
ke kanan; isi bit 7
dipindah ke bit 6; isi bit
6 terdahulu dipindah
ke
bit 5; dan seterusnya.
Isi bit 0 dicopy ke flag
carry dan isi flag carry
yang terdahulu dicopy
ke bit 7.
RLC r Isi register r (8 bit)
dirotasi ke kiri; isi bit 0
dipindahkan ke 1; isi
bit 1 terdahulu
dipindahkan
ke bit 2; dan
seterusnya. Isi bit 7
dicopy ke flag
carry dan juga ke bit 0.
RLC (HL) Isi memori pada lokasi
yang ditunjuk oleh
pasangan register HL
dirotasi ke kiri; isi bit 0
dipindah ke bit 1; isi bit
1 terdahulu dipindah
ke
bit 2; dan seterusnya.
Isi bit 7 dicopy ke flag
carry dan juga ke bit 0.

Mikroprosesor Dan Mikrokontroller 63


RLC Isi memori pada lokasi
(IX+d) yang ditunjuk oleh
jumlah
isi register indeks IX
dan bilangan bulat
penggeser dua
komplemen d dirotasi
ke kiri; isi
bit 0 dipindah ke bit 1;
isi bit 1 terdahulu
dipindah ke bit 2; dan
seterusnya. Isi bit 7
dicopy
ke flag carry dan juga
ke bit 0.
RLC Isi memori pada lokasi
(IY+d) yang ditunjuk oleh
jumlah
isi register indeks IY
dan bilangan bulat
penggeser dua
komplemen d dirotasi
ke kiri; isi
bit 0 dipindah ke bit 1;
isi bit 1 terdahulu
dipindah ke bit 2; dan
seterusnya. Isi bit 7
dicopy
ke flag carry dan juga
ke bit 0.
RL m Operand m adalah
salah satu dari r, (HL),
(IX+d), (IY+d) seperti
yang telah dijelaskan
pada
instruksi RLC. Isi

64 Mikroprosessor Dan Mikrokontroller


operand m dirotasi ke
kiri; isi bit 0 dipindah
ke bit 1; isi bit 1
terdahulu dipindah ke
bit 2; dan seterusnya.
Isi bit 7 dicopy ke flag
dan isi flag carry yang
terdahulu dicopy
ke bit 0.
RRC m Isi dari operand m
dirotasi ke kanan; isi
bit 7
dipindahkan ke bit 6;
isi bit 6 terdahulu
dipindahkan ke bit 5;
dan seterusnya. Isi bit
0 dicopy ke flag carry
dan juga ke bit 7.
RR m Isi dari operand m
dirotasi ke kanan; isi
bit 7 dipindahkan ke bit
6; isi bit 6 terdahulu
dipindahkan ke bit 5;
dan seterusnya. Isi bit
0 dicopy ke flag carry
dan isi flag carry yang
terdahulu dicopy ke bit
7.
SLA m Pergeseran aritmetik
ke kiri dilaksanakan
pada
isi operand m; bit 0
direset, isi bit 0
terdahulu dipindahkan
ke bit 1; isi bit 1
terdahulu

Mikroprosesor Dan Mikrokontroller 65


dipindahkan ke bit 2;
dan seterusnya. Isi bit
7 dicopy ke flag carry.
SRA m Pergeseran aritmetik
ke kanan dilaksanakan
pada isi operand m; isi
bit 7 terdahulu
dipindahkan ke bit 6;
isi bit 6 terdahulu
dipindahkan ke bit 6;
dan seterusnya. Isi bit
0
dicopy ke flag carry. Isi
flag 7 yang terdahulu
tidak berubah.
SRL m Pergeseran aritmetik
ke kanan dilaksanakan
pada isi operand m; isi
bit 7 terdahulu
dipindahkan ke bit 6;
isi bit 6 terdahulu
dipindahkan ke bit 6;
dan seterusnya. Isi bit
0 dicopy ke flag carry.
Isi flag 7 di reset
RLD Isi 4 bit berorde
rendah (bit 3, 2, 1, 0)
dari memori yang
lokasinya ditunjukkan
oleh isi pasangan
register HL dicopy ke 4
bit berorde tinggi (bit 7,
6, 5, 4) dari lokasi
memori yang sama; isi
ke 4 bit berorde tinggi
terdahulu di copy ke 4

66 Mikroprosessor Dan Mikrokontroller


bit akumulator berorde
rendah; dan isi
4 bit akumulator
berorde rendah yang
terdahulu dicopy ke 4
bit berorde rendah dari
memori pada lokasi
yang ditunjukkan oleh
HL. Isi bit-bit
akumulator berorde
tinggi tidak
terpengaruh.
RRD Isi 4 bit berorde
rendah (bit 3, 2, 1, 0)
dari memori yang
lokasinya ditunjukkan
oleh isi pasangan
register HL dicopy ke 4
bit berorde tinggi (bit 7,
6, 5, 4) pada memori
yang lokasinya
ditunjukkan oleh
pasangan register HL;
dan isi 4 bit berorde
tinggi dari (HL) dicopy
ke 4 bit (HL)
yang rendah. Isi 4 bit
akumulator berorde
tinggi tidak
terpengaruh. Catatan:
(HL) berarti memori
yang lokasinya
ditunjukkan oleh isi
pasangan
register HL.

Mikroprosesor Dan Mikrokontroller 67


Contoh :
1. Jika isi akumulator adalah
7 6 5 4 3 2 1 0 (format flag)
10001000
Setelah pelaksanaan RLCA, isi akumulator dan flag carry akan
menjadi
C 7 6 5 4 3 2 1 0 ( format flag)
100010001
2. Jika isi akumulator dan flag carry adalah
C76543210
101110110
Setelah pelaksanaan RLA, isi akumulator dan flag carry akan
menjadi
C76543210
011101101

Tabel 8. Bit set, reset, dan operasi – operasi test

Mnemonic Operasi Keterangan


BIT b, r z r Setelah
b
pelaksanaan
instruksi ini, flag
z pada register F
akan berisi
komplemen
(lawan) dari bit
yang dimaksud
dalam register
yang dimaksud.
BIT b, (HL) z ( HL) Setelah
b
pelaksanaan
instruksi ini, flag
z pada register F
akan berisi
komplemen
(lawan) dari bit
68 Mikroprosessor Dan Mikrokontroller
yang dimaksud
dalam pasangan
register HL.
BIT b, (IX+d) z ( IX d) Setelah
b
pelaksanaan
instruksi ini, flag
z pada register F
akan berisi
komplemen
(lawan) dari bit
yang dimaksud
dalam isi
memori pada
lokasi yang
ditunjukkan
oleh jumlah isi
register indeks IX
dan bilangan
bulat penggeser
2 komplemen d.
BIT b, (IY+d) z ( IY d) Setelah
b
pelaksanaan
instruksi ini, flag
z pada register F
akan berisi
komplemen
(lawan) dari bit
yang dimaksud
dalam isi memori
pada lokasi yang
ditunjukkan
oleh jumlah isi
register indeks IY
dan bilangan
bulat penggeser
2 komplemen d.

Mikroprosesor Dan Mikrokontroller 69


SET b, r Rb 1 Bit b (bit yang
mana saja dari
bit 7 sampai 0) di
register r
(register B, C, D,
E, H, L atau A)
di-set.
SET b, (HL) (HL)b 1 Bit b (bit yang
mana saja dari
bit 7 sampai 0)
pada lokasi yang
memorinya
ditunjukkan oleh
pasangan
register HL
di-set.
SET b, (IX+d) (IX+d)b Bit b (bit yang
1 mana saja dari
bit 7
sampai 0) pada
lokasi memori
yang
ditunjukkan oleh
jumlah register
indeks
IX bilangan
bulat penggeser
2
komplemen d, di
– set.
SET b, (IY+d) (IY+d)b Bit b (bit yang
1 mana saja dari
bit 7
sampai 0) pada
lokasi memori
yang

70 Mikroprosessor Dan Mikrokontroller


ditunjukkan oleh
jumlah register
indeks
IY bilangan
bulat penggeser
2
komplemen d, di
– set.
RES b, m Sb 0 Bit b (bit yang
mana saja dari
bit 7
sampai 0) dari isi
operand m (salah
satu
dari r, (HL),
(IX+d), (IY+d)
seperti yang
telah diterangkan
pada instruksi
SET.
Bit b pada
operand m
direset.
Contoh :

1. Jika bit 2 pada register B berisi 0, setelah pelaksanaan BIT


2, B, maka Flag Z pada register F berisi 1, bit 2 dalam
register B tetap 0. bit 0 adalah bit berorde paling rendah.

2. Jika pasangan register HL berisi 4444H, dan bit 4 pada


lokasi memori 4444H berisi 1, setelah pelaksanaan BIT 2,
B. maka Flag Z pada register F berisi 0, bit 4 pada memori
di lokasi 4444H tetap berisi 1.

Mikroprosesor Dan Mikrokontroller 71


Tabel 9. Kelompok Jump
Mnemonic Operasi Keterangan
JP nn PC nn Operand nn
diisikan ke
pasangan
register PC
(program counter)
dan menunjuk ke
address instruksi
program
berikutnya yang
akan dilaksanakan.
JR e PC PC + e Instruksi ini
memungkinkan
percabagang
(loncatan) tak
bersyarat
ke segmen lain
dari suatu
program.
Nilai dari bilangan
e ditambahkan ke
program counter
(PC) dan instruksi
berikutnya diambil
dari lokasi yang
ditunjukkan oleh
PC yang baru.
Loncatan ini
dihitung dari
address opcode
instruksi tersebut
dan berada
diantara -126
sampai +129 byte.
Assembler
72 Mikroprosessor Dan Mikrokontroller
secara otomatis
menyesuaikan
dengan cara
mengurangi PC
dengan 2.
JR C, e Jika C= 1, Instruksi ini
PC PC + memungkinkan
e percabagang
(loncatan) tak
bersyarat
ke segmen lain
dari suatu program
tergantung dari
hasil test Flag
Carry.
Jika Flag = 1, nilai
dari bilangan e
ditambahkan ke
program counter
(PC) dan instruksi
berikutnya diambil
dari lokasi yang
ditunjukkan oleh
PC yang baru.
Loncatan ini
dihitung dari
address opcode
instruksi tersebut
dan berada
diantara -126
sampai +129
byte. Assembler
secara otomatis
menyesuaikan
dengan cara
mengurangi PC

Mikroprosesor Dan Mikrokontroller 73


dengan 2.
JR NC, e Jika C= 0, Instruksi ini
PC PC + memungkinkan
e percabagang
(loncatan) tak
bersyarat
ke segmen lain
dari suatu program
tergantung dari
hasil test Flag
Carry. Jika Flag =
0, nilai dari
bilangan e
ditambahkan ke
program counter
(PC)
dan instruksi
berikutnya diambil
dari
lokasi yang
ditunjukkan oleh
PC yang
baru. Loncatan ini
dihitung dari
address opcode
instruksi tersebut
dan
berada diantara -
126 sampai +129
byte. Assembler
secara otomatis
menyesuaikan
dengan cara
mengurangi PC
dengan 2.
JR Z, e Jika Z=1 PC Instruksi ini

74 Mikroprosessor Dan Mikrokontroller


 PC + e memungkinkan
percabagang
(loncatan) tak
bersyarat
ke segmen lain
dari suatu program
tergantung dari
hasil test Flag
Zero. Jika Flag = 1,
nilai dari bilangan e
ditambahkan ke
program counter
(PC)
dan instruksi
berikutnya diambil
dari lokasi yang
ditunjukkan oleh
PC yang baru.
Loncatan ini
dihitung dari
address opcode
instruksi tersebut
dan berada
diantara -126
sampai +129
byte. Assembler
secara otomatis
menyesuaikan
dengan cara
mengurangi PC
dengan 2.
JR NZ, e Jika Z=0 PC Instruksi ini
 PC + e memungkinkan
percabagang
(loncatan) tak
bersyarat ke

Mikroprosesor Dan Mikrokontroller 75


segmen lain dari
suatu program
tergantung dari
hasil test Flag
Zero. Jika Flag =
0, nilai dari
bilangan e
ditambahkan ke
program counter
(PC)
dan instruksi
berikutnya diambil
dari lokasi yang
ditunjukkan oleh
PC yang baru.
Loncatan ini
dihitung dari
address opcode
instruksi tersebut
dan berada
diantara -126
sampai +129
byte. Assembler
secara otomatis
menyesuaikan
dengan cara
mengurangi PC
dengan 2.
JP (HL) PC HL Program counter
(pasangan register
PC) diisi dengan isi
pasangan register
HL. Instruksi
berikutnya diambil
dari lokasi yang
ditunjuk oleh isi PC

76 Mikroprosessor Dan Mikrokontroller


yang baru.
JP (IX) PC IX Program counter
(pasangan register
PC) diisi dengan isi
pasangan register
indeks IX. Instruksi
berikutnya diambil
dari lokasi yang
ditunjuk oleh isi PC
yang baru.
JP (IY) PC IY Program counter
(pasangan register
PC) diisi dengan isi
pasangan register
indeks IY. Instruksi
berikutnya diambil
dari lokasi yang
ditunjuk oleh isi PC
yang baru.
DJNZ e --- Instruksi ini hampir
sama dengan
instruksi
percabangan
(loncatan)
bersyarat kecuali
suatu nilai register
digunakan untuk
menentukan
percabangannya.
Register B
dikurangi dengan 1
(decremented) dan
apabila nilainya
tidak sama dengan
0, nilai bilangan e
ditambahkan ke

Mikroprosesor Dan Mikrokontroller 77


PC dan instruksi
berikutnya diambil
dari lokasi yang
ditunjukkan oleh
PC yang baru.
Contoh :
1. Jika Flag Carry (Flag C pada register F) di-set dan isi
alamat 1520H adalah 03H, setelah pelaksanaan JP C,
1520H Program counter akan berisi 1520H, pada perioda
mesin berikutnya CPU akan mengambil byte 03H dari
alamat 1520H

Tabel 10. Kelompok Call, return dan restart

Mnemonic Operasi Keterangan


RETI Instruksi ini
digunakan pada
suatu akhir
‚interrupt service
routine’ untuk :
1. menyiapkan isi
PC (analog
dengan
instruksi RET)
2. untuk memberi
sinyal peralatan
I/O bahwa routine
interrupt telah
selesai.
Instruksi RETI
memberikan
fasilitas
kepada peralatan
dengan prioritas
lebih tinggi untuk
78 Mikroprosessor Dan Mikrokontroller
menunda service
routine peralatan
yang mempunyai
prioritas lebih
rendah. Instruksi
ini juga mereset
flip-flop IFF1 dan
IFF2.
RETN Digunakan pada
akhir suatu
‘service
routine’ untuk non
maskable
interrupt
ini melaksanakan
return tak
bersyarat
yang fungsinya
identik dengan
instruksi RET.
Yaitu : isi program
counter (PC) yang
telah disimpan
diambil kembali
dari bagian atas
stack memori luar
; byte PC berorde
rendah diisi
dengan isi memori
yang lokasinya
ditunjukkan oleh
stack pointer
(SP), SP
ditambah dengan
1, byte PC
berorde tinggi diisi

Mikroprosesor Dan Mikrokontroller 79


dengan isi memori
yang lokasinya
ditunjukkan oleh
Stack pointer
(SP), SP
ditambah lagi
dengan
1. kontrol
sekarang
dikembalikan
pada flow
program asal ;
pada perioda
mesin berikutnya
CPU akan
mengambil
opcode berikutnya
dari memori yang
lokasinya
ditunjukkan
oleh PC. Keadaan
IFF2 dicopy
kembali ke IFF1
pada keadaan
sebelum
diterimanya NMI.
RST p (SP-1) Isi PC yang ada
PCT, (SP-2) disimpan pada
 PCR, PCT stack
 0, PCR memori luar, dan
P pada lokasi
halaman
nol yang diberikan
oleh operand p
yang diisikan ke
PC. Pelaksanaan

80 Mikroprosessor Dan Mikrokontroller


program dimulai
dengan opcode
pada
address yang
sekarang ditunjuk
oleh PC.
Penyimpanan ini
dimulai dengan
cara ; pertama
mengurangi
dengan
satu isi SP,
mengisikan byte
PC berorde tinggi
ke memori yang
addressnya
ditunjuk SP, SP
dikurangi
lagi dengan 1,
dan byte PC yang
berorde rendah
diisi dengan
memori yang
addressnya
ditunjuk oleh SP
yang sekarang.

Contoh :

1. Jika SP adalah 1000H dan isi PC adalah 1A45H, ketika


sinyal non maskable interrupt (NMI) diterima, CPU akan
mengabaikan instruksi berikutnya dan akan kembali ke
memori pada alamat 0066H. isi PC sekarang (1A45H) akan
disimpan ke stack alamat luar 0FFFH dan 0FFEH, byte
berode tinggi dahulu dan 0066H akan diisikan ke PC.

Mikroprosesor Dan Mikrokontroller 81


Alamat tersebut dimulai dengan ‘interrupt service routine’
yang berakhir dengan instruksi RETN.

2. Jika isi PC adalah 15B3H, setelah pelaksanaan RST 18 H


PC akan berisi 0018H, sebagai alamat opcode berikutnya
yang akan diambil.

Tabel 11. Operasi – operasi input dan output


Mnemonic Operasi Keterangan
IN A, (n) A (n) Operand n ditempatkan
pada 8 bit yang berorde
rendah (A0 sampai A7)
dari address bus yang
memilih peralatan I/O
pada salah satu dari
256 port yang
dimungkinkan. Isi
akumulator juga
tampak pada 8 bit
yang berorde tinggi
(A8 sampai A15)
dari address bus pada
saat yang bersamaan.
Kemudian satu byte
dari port yang terpilih
ditempatkan pada
data bus dan
dimasukan pada
akumulator (register
A) dalam CPU.
IN r, (c ) A (c) Operand c ditempatkan
pada 8 bit yang berorde
rendah (A0 sampai A7)
dari address bus yang
memilih peralatan I/O
pada salah satu dari
82 Mikroprosessor Dan Mikrokontroller
256 port yang
dimungkinkan. Isi
register B ditempatkan
pada 8 bit yang berorde
tinggi (A8 sampai
A15) dari address
bus pada saat yang
bersamaan.
Kemudian satu byte
dari port yang
terpilih ditempatkan
pada data bus
dan dimasukan pada
register r dalam CPU.
INI (HL) (c), Isi register C
B B-1, HL ditempatkan pada 8 bit
 HL+1 yang berorde rendah
(A0 sampai A7)
dari address bus untuk
memilih peralatan I/O
pada salah satu dari
256 port yang
dimungkinkan.
Register B dapat
digunakan sebagai
byte counter, dan
isinya ditempatkan
pada 8 bit yang berorde
tinggi (A8 sampai
A15) dari address bus
pada saat bersamaan.
Kemudian satu byte
dari port yang terpilih
ditempatkan pada
data bus dan
dimasukan dalam CPU.

Mikroprosesor Dan Mikrokontroller 83


Isi pasangan register
HL kemudian
ditempatkan pada
address bus dan
byte input dimasukan
pada memori
yang lokasinya
ditunjukkan oleh isi
HL. Akhirnya byte
counter dkurangi
dengan satu dan
pasangan register
HL ditambah dengan
satu.
INIR (HL) (c), Isi register C
B B-1, HL ditempatkan pada 8 bit
 HL+1 yang berorde rendah
(A0 sampai A7) dari
address bus untuk
memilih peralatan I/O
pada salah satu dari
256 port yang
dimungkinkan.
Register B dapat
digunakan sebagai
byte counter, dan
isinya ditempatkan
pada 8 bit yang berorde
tinggi (A8 sampai
A15) dari address bus
pada saat bersamaan.
Kemudian satu byte
dari port yang terpilih
ditempatkan pada
data bus dan
dimasukan dalam CPU.

84 Mikroprosessor Dan Mikrokontroller


Isi pasangan register
HL kemudian
ditempatkan pada
address bus dan
byte input dimasukan
pada memori
yang lokasinya
ditunjukkan oleh isi
HL. Lalu pasangan
register HL
ditambah dengan satu
dan byte
counter dikurangi
dengan satu,
instruksi dianggap
selesai jika B
belum sama dengan
nol. PC dikurangi
dengan dua dan
instruksi diulangi.
Catatan : jika B diset
nol sebelum
pelaksanaan instruksi
ini, maka instruksi ini
akan dilaksanakan
sebanyak 256 kali.
Interupsi akan dilayani
setiap kali selesai
mentranfer satu data.
IND (HL) (c), Isi register C
B B-1, HL ditempatkan pada 8 bit
 HL-1 yang berorde rendah
(A0 sampai A7)
dari address bus untuk
memilih peralatan I/O
pada salah satu dari

Mikroprosesor Dan Mikrokontroller 85


256 port yang
dimungkinkan.
Register B dapat
digunakan sebagai
byte counter, dan
isinya ditempatkan
pada 8 bit yang berorde
tinggi (A8 sampai
A15) dari address bus
pada saat bersamaan.
Kemudian satu byte
dari port yang terpilih
ditempatkan pada
data bus dan byte input
dari port yang terpilih
ditempatkan pada data
bus dan byte input
dimasukan memori
yang lokasinya
ditunjukkan oleh HL.
Akhirnya pasangan
byte counter dan
pasangan register HL
dikurangi dengan satu.
INDR (HL) (c), Isi register C
B B-1, HL ditempatkan pada 8 bit
 HL-1 yang berorde rendah
(A0 sampai A7)
dari address bus untuk
memilih peralatan I/O
pada salah satu dari
256 port yang
dimungkinkan.
Register B dapat
digunakan sebagai
byte counter, dan

86 Mikroprosessor Dan Mikrokontroller


isinya ditempatkan
pada 8 bit yang berorde
tinggi (A8 sampai
A15) dari address bus
pada saat bersamaan.
Kemudian satu byte
dari port yang terpilih
ditempatkan pada
data bus dan
dimasukan dalam CPU.
Isi pasangan register
HL kemudian
ditempatkan pada
address bus dan
byte input dimasukan
pada memori
yang lokasinya
ditunjukkan oleh isi
HL. Lalu pasangan
register HL byte
counter dikurangi
dengan satu jika
pengurangan itu
menyebabkan B
menjadi 0, instruksi
dianggap selesai.
Jika B belum sama
dengan 0, PC
dikurangi dengan dua
dan instruksi
diulangi. Catatan : jika
B diset 0 sebelum
pelaksanaan instruksi
ini, maka instruksi ini
akan dilaksanakan
sebanyak 256 kali.

Mikroprosesor Dan Mikrokontroller 87


Interupsi akan
dilayani setiap kali
selesai mentransfer
data.
OUT (n), A (n) A Operand n
ditempatkan pada 8 bit
yang berorde rendah
dari address bus
untuk memilih
peralatan I/O pada
salah satu dari 256 port
yang dimungkinkan. Isi
akumulator juga
tampak pada 8 bit yang
berorde tinggi address
bus pada saat yang
bersamaan. Kemudian
byte yang terdapat
pada akumulator
ditempatkan pada data
bus dan dimasukan
pada peralatan
periperal yang terpilih
OUT (c), r (c) r Isi register C
ditempatkan pada 8 bit
yang berorde rendah
dari address bus untuk
memilih peralatan I/O
pada salah satu dari
256 port yang
dimungkinkan. Isi
akumulator juga
tampak pada 8 bit yang
berorde tinggi address
bus pada saat yang
bersamaan. Kemudian

88 Mikroprosessor Dan Mikrokontroller


byte yang terdapat
pada register r
ditempatkan pada data
bus dan dimasukan
pada peralatan
periperal yang terpilih.
OUTI (c) (HL), Isi pasangan register
B B-1, HL HL ditempatkan pada
 HL+1 address bus untuk
memilih suatu lokasi
pada memori. Byte
yang berada lokasi ini
disimpan sementara
dalam CPU, lalu
setelah byte counter
(penghitung jumlah
byte = register B)
dikurangi dengan satu.
Isi register c
ditempatkan pada 8 bit
berorde rendah dari
address bus yang
memilih peralatan I/O
pada salah satu 256
port yang
dimungkinkan.
Register B dapat
digunakan sebagai byte
counter dan isinya
yang telah dikurangi
dengan satu
ditempatkan pada 8 bit
berorde tinggi dari
address bus. Byte
untuk output
ditempatkan pada data

Mikroprosesor Dan Mikrokontroller 89


bus dan dituliskan pada
peralatan periperal
yang terpilih. Akhirnya
pasangan register HL
ditambah dengan satu.

OTIR (c) (HL), Isi pasangan register


B B-1, HL HL ditempatkan pada
 HL+1 address bus untuk
memilih suatu lokasi
pada memori. Byte
yang berada lokasi ini
disimpan sementara
dalam CPU, lalu
setelah byte counter
(penghitung jumlah
byte = register B)
dikurangi dengan satu.
Isi register c
ditempatkan pada 8 bit
berorde rendah dari
address bus yang
memilih peralatan I/O
pada salah satu 256
port yang
dimungkinkan.
Register B dapat
digunakan sebagai byte
counter dan
isinya yang telah
dikurangi dengan
satu ditempatkan pada
8 bit berorde
tinggi dari address bus.
Byte untuk output
ditempatkan pada data

90 Mikroprosessor Dan Mikrokontroller


bus dan dituliskan pada
peralatan periperal
yang terpilih. Akhirnya
pasangan register HL
ditambah dengan satu.
Jika pengurangan B
dengan satu tersebut
menyebabkan B
menjadi 0, PC
dikurangi dengan 2 dan
instruksi diulangi.
Catatan : jika B diset
nol sebelum
pelaksanaan instruksi
ini, maka instruksi ini
akan dilaksanakan
sebanyak 256 kali.
Interupsi akan dilayani
setiap kali selesai
mentransfer satu data.
OUTD (c) (HL), Isi pasangan register
B B-1, HL HL ditempatkan pada
 HL-1 address bus untuk
memilih suatu lokasi
pada memori. Byte
yang berada lokasi ini
disimpan sementara
dalam CPU, lalu
setelah byte counter
(penghitung jumlah
byte = register B)
dikurangi dengan satu. Isi
register c ditempatkan
pada 8 bit berorde rendah
dari address bus yang
memilih peralatan I/O

Mikroprosesor Dan Mikrokontroller 91


pada salah satu 256 port
yang dimungkinkan.
Register B dapat
digunakan sebagai byte
counter dan isinya yang
telah dikurangi dengan
satu ditempatkan pada 8
bit berorde tinggi dari
address bus. Byte untuk
output ditempatkan pada
data bus dan dituliskan
pada peralatan periperal
yang terpilih. Akhirnya
pasangan register HL
dikurangi dengan satu.

OTDR (c) (HL), Isi pasangan register


B B-1, HL HL ditempatkan pada
 HL-1 address bus untuk
memilih
suatu lokasi pada memori.
Byte yang berada lokasi ini
disimpan sementara
dalam CPU, lalu setelah
byte counter
(penghitung jumlah byte
= register B)
dikurangi dengan satu.
Isi register c
ditempatkan pada 8 bit
berorde rendah dari
address bus yang
memilih peralatan I/O
pada salah satu 256 port
92 Mikroprosessor Dan Mikrokontroller
yang dimungkinkan.
Register B dapat
digunakan sebagai byte
counter dan isinya yang
telah dikurangi dengan
satu ditempatkan pada 8
bit berorde tinggi dari
address bus. Byte untuk
output ditempatkan pada
data bus dan dituliskan
pada peralatan periperal

yang terpilih. Akhirnya


pasangan register HL
dikurangi dengan satu.
Jika pengurangan B
dengan satu ini
menyebabkan B menjadi
0, maka instruksi dianggap
selesai . jika B
belum sama dengan 0 PC
dikurangi dengan 2 dan
instruksi diulangi.
Catatan : jika B diset nol
sebelum pelaksanaan
instruksi ini, maka

instruksi ini akan


dilaksanakan sebanyak
256 kali. Interupsi akan
dilayani setiap kali
selesai mentransfer
satu data.

Mikroprosesor Dan Mikrokontroller 93


E. RANGKUMAN
Set instruksi (instruction set) adalah sekumpulan lengkap
instruksi yang dapat di mengerti oleh sebuah CPU, set instruksi
sering juga disebut sebagai bahasa mesin (machine code), karna
aslinya juga berbentuk biner kemudian dimengerti sebagai bahasa
assembly, untuk konsumsi manusia (programmer), biasanya
digunakan representasi yang lebih mudah dimengerti oleh manusia.

Di dalam sebuah instruksi terdapat beberapa elemen-elemen


instruksi: (1).Operation code (op code), (2)Source operand
reference, (3)Result operand reference, (4) Xext instruction
preference
Mikroprosesor Z80 mempunyai 158 jenis instruksi. Dengan
adanya berbagai mode pengalamatan pada mikroprosesor Z80,
maka dapat diperoleh total sebanyak 694 instruksi yang berbeda
yang dapat dipakai dalam pemograman mikroprosesor Z80
Instruksi-instruksi mikroprosesor Zilog Z80 dibagi ke dalam
kategori berikut ini:
1. Load 8 bit
2. Load 16 bit
3. Exchange, block transfer dan search
4. Operasi – operasi arithmetic dan logic 8 bit
5. Arithmetic serbaguna dan kontrol CPU
6. Operasi - operasi arithmetic 16 bit
7. Rotate dan shift
8. Bit set, reset, dan operasi – operasi test.
9. Jump
10. Call, return dan restart
11. Operasi – operasi input dan output.

F. Soal Latihan
1. Tuliskan pengertian Set instruksi secara umum!
2. Tuliskan beberapa simbolik pada instruksi biner!
3. Tuliskan dan jelaskan Instruksi-instruksi mikroprosesor
Zilog Z80

94 Mikroprosessor Dan Mikrokontroller


BAB V
OPERASI INSTRUKSI BAHASA ASSEMBLY
MIKROPROSESOR Z80

A. Kompetensi Dasar
3.5 Menerapkan bahasa pemograman mikroprosesor
4.5 Menggunakan bahasa pemograman mikroprosesor

B. Indikator Pencapaian Kompetensi


3.5.1 Menjelaskan sistem dan cara pengalamatan
mikroprosessor Z80
3.5.2 Menjelaskan perintah percabangan bersyarat dan tidak
bersyarat
3.5.3 Menggunakan daftar instruksi Z80 pada sistem
mikroprosessor
4.5.1 Menggunakan sistem dan cara pengalamatan
mikroprosessor Z80
3.5.2 Menggunakan perintah percabangan bersyarat dan tidak
bersyarat
3.5.3 Menggunakan daftar instruksi Z80 pada sistem
mikroprosessor

C. Tujuan
Setelah melakukan proses pembelajaran, peserta didik
diharapkan mampu:
1. Menjelaskan sistem dan cara pengalamatan mikroprosessor
Z80
2. Menjelaskan perintah percabangan bersyarat dan tidak
bersyarat
3. Menggunakan daftar instruksi Z80 pada sistem
mikroprosessor
4. Menggunakan sistem dan cara pengalamatan
mikroprosessor Z80
5. Menggunakan perintah percabangan bersyarat dan tidak
bersyarat
6. Menggunakan daftar instruksi Z80 pada sistem
mikroprosessor
Mikroprosesor Dan Mikrokontroller 95
D. Materi
5.1 Sistem/cara Pengalamatan
Kejelasan yang sistimatik tentang cara pengalamatan sangat
penting pada pengolahan data dalam jenis Prosesor, sebab
program yang disusun tanpa penggunaan pengalamatan yang
pasti, maka program tersebut menjadi kurang efektif dalam
penganalisaannya. Terdapat 3 macam cara pengalamatan yang
sering digunakan dalam program, yaitu meliputi:
Tabel 5.1 Sistem/cara Pengalamatan
Cara Arti
Pengalamatan
Immediate kode mesin mengandung konstanta untuk
(Segera) segera /langsung di akses (dibuat tabel )
Direct (Langsung) kode mesin mengandung Register, alamat
penyimpan atau alamat masukan / keluaran
dari operan untuk diakses
Indirect (Tidak kode mesin mengandung hanya satu
Langsung) petunjuk, dimana untuk mendapatkan alamat
dari operan yang akan diakses.
Sumber: (Sugiono.Djoko.2016)

5.1.1 Pengalamatan Immediate


Disini operan yang akan diakses langsung terkandung pada
kode mesin, ini adalah cara yang sangat sederhana, untuk
mengisi konstanta ke Register atau lokasi penyimpanan.
Tabel 5.2 Contoh Pengalamat Immediate
Contoh alamat Pengalamatan Immediate
LD HL, 1234H LD HL, 1234H
ADD A, 12H ADD A, 12H
LD (HL), 12H LD (HL), 12H
JP 0916H JP 0916H
Sumber: (Sugiono.Djoko.2016)

96 Mikroprosessor Dan Mikrokontroller


5.1.2 Pengalamatan Langsung (Direct)
Disini kode mesin mengandung sebuah atau lebih alamat-
alamat yang kemudian isi dari alamat-alamat ini akan diakses
lebih lanjut. Panjang alamat-alamat ini dapat berbeda menurut
keadaan apakah itu mengenai sebuah Register, alamat
penyimpan atau alamat masukan/keluaran, perintah dapat
mengandung sebuah petunjuk, apakah bagian pertama
diberikan sebagai alamat tujuan atau sumber.
Tabel 5.3 Contoh Pengalamatan Langsung (Direct)
Contoh Pengalamatan Langsung (Direct)
LD A, (1234H) LD A, (1234H)
INC L INC L
LD E, C LD E, C
OUT (20H), A OUT (20H), A
JP (IX) JP (IX)
Sumber: (Sugiono.Djoko.2016)
5.1.3 Pengalamatan tidak Langsung (Indirect)
Pengalamatan tidak langsung dapat dilakukan melalui
sebuah register atau dapat juga dilakukan dengan penujuk
alamat memori, kode mesin hanya mengandung sebuah
petunjuk alamat, dimana alamat merupakan operan yang akan
diakses. Petunjuk alamat dapat dilakukan melalui sebuah
register CPU atau pada sebuah lokasi penyimpan, sehingga
secara efektif akan didapatkan pengalamatan secara tidak
langsung dengan register dan kode mesin menjadi lebih pendek.
Sebagai contoh sebuah penunjuk alamat dengan alamat 16 BIT
dapat diganikan hanya 3 BIT alamat Register.

Perintah dengan penunjuk alamat tidak langsung pada Z 80


dapat di bagi seperti gambar berikut :

Mikroprosesor Dan Mikrokontroller 97


Gambar 5.1 Pengalamatan tidak langsung
Sumber: (Sugiono.Djoko.2016)
Tabel 5.4 Contoh Pengalamatan tidak Langsung
Contoh Arti
PUSH dan POP Menaikkan atau menurunkan Register alamat
yang dipakai
secara otomatis dan terjadi apakah pada
sebelum atau sesudah pelaksanaan
perintahnya
RRC (HL), Pengalamatan Indirect (Tidak Langsung)
RRC (HL)
PUSH DE, Pengalamatan Indirect (Tidak Langsung)
PUSH DE, pengalamatan langsung dari
Register DE, isi dari Register SP dipakai
sebagai alamat.
Sumber: (Sugiono.Djoko.2016)

5.1.4 Perintah Transfer dengan Pengalamatan Langsung


Pada pengalamatan langsung, alamat sumber dan tujuan,
berada pada kode mesin. Alamat register atau memori dapat
ditulis langsung. Perintah transfer pengalamatan langsung dapat
dibagi menjadi :
1. Pengalamatan Register - Register
2. Pengalamatan Register – Memori

98 Mikroprosessor Dan Mikrokontroller


5.1.5 Pengalamatan Register - Register
Perintah ini mengakibatkan transfer data dari sebuah
Register CPU ke Register CPU yang lain.
Mnemonik
LD r,r’
Operasi
R  r’
Register CPU tujuan r diisi dengan isi Register CPU
sumber r’
Flag
Tidak terpengaruh
5.1.6 Pengalamatan Register – Memori
Jenis pengalamatan ini, melaksanakan transfer antara Register
CPU dan lokasi Memori yang dituliskan di belakang kode
mesin. Sebuah Register CPU diisi dengan isi dari lokasi
memori yang dihasilkan di belakang mesin.
Mnemonik
Register CPU  Memori Memori  Register CPU
LD A, (nn) LD (nn), A
LD rr, (nn) LD (nn), rr
rr = Register CPU 16 bit ( BC, DE, HL, SP )
(nn) = Isi dari tanda ini selalu diisi oleh alamat Memori dan
tanda ini berarti isi dari alamat memori yang ditunjuk oleh nn.
OUT (C), r
r = Register 8 bit A,B,C,D,E,H,L
C = Register C yang isinya sebagai penunjuk penghantar
alamat A7 - A0
Operasi
tujuan r diisi dengan isi Register C yang merupakan
pengalamatan port I/O
Register C pengalamatan dari port I/O diisi dengan isi dari
Register CPU r.
Flag :
Pada perintah input (IN)
Flag S = 1, bila bit tertinggi = 1
Flag Z = 1, bila data yang dibaca = 0
Flag P = 1, pada parity genap dari data yang di baca
Mikroprosesor Dan Mikrokontroller 99
5.2 Perintah Percabangan Bersyarat dan Tidak Bersyarat
Pada sebuah loncatan tidak bersyarat, pelaksanaan program
pada setiap saat dimulai pada alamat tujuan loncat pada perintah
percabangan. Pada perintah percabangan bersyarat, syarat loncat
yang diaplikasikan pada operasi instruksi loncat digunakan untuk
men-set flag. Berdasarkan kondisi atau status register flag inilah
yang digunakan untuk menentukan apakah syara sudah terpenuhi
atau syarat belum terpenuhi, jika terpenuhi maka pelaksanaan
program dipindahkan ke alamat yang ditunjuk oleh PC dan jika
belum terpenuhi maka program akan dijalankan terus.
5.2.1 Penggunaan Perintah Percabangan Bersyarat
Dalam penggunaan perintah percabangan bersyarat ini, ada
2 hal yang harus jelas yaitu :
1. Bagaimana syarat loncat dapat diberikan pada loncatan
bersyarat.
2. Jika ternyata ada maka diberikan alamat tujuan loncat
(pengalamatan).

Tabel 5.5 Penggunaan perintah percabangan bersyarat


Syarat loncat Tanpa Flag Flag Flag Flag
syarat Zero Carry P/V S
Pengalamatan
Langsung JP adr JP Z, JP C, JP M, JP M,
adr adr adr adr
JP JPNC, JP JP P,
NZ, adr PO, adr
adr adr
Relatif JR e JR Z, JR C, e - -
e JR NC,
JR e
NZ, e
Tidak langsung JP - - - -
(melalui (HL)
register) JP (IX)
JP (IY)
Sumber: (Sugiono.Djoko.2016)

100 Mikroprosessor Dan Mikrokontroller


5.2.2 Perintah Loncat dengan Pengalamatan Langsung
Mnemonik :
JP adr
JP cc, adr
adr = alamat tujuan loncat
cc = syarat loncat (kode kondisi flag)
Sebagai syarat loncat hanya dapat dipakai kondisi flag tertentu,
seperti ditunjukkan oleh tabel dibawah ini.
Tabel 5.5. Syarat pada operasi instruksi loncat
Flag ccc Mnemonik Arti
000 JP NZ, adr Loncat ke alamat tujuan bila
hasil <> 0 (Z=0)
zero
001 JP Z, adr Loncat ke alamat tujuan bila
hasil = 0 (Z=1)
010 JP NC, adr Loncat ke alamat tujuan bila
carry = 0 (C=0)
Carry
011 JP C, adr Loncat ke alamat tujuan bila
carry = 1 (C=1)
100 JP PO, adr Loncat ke alamat tujuan bila
parity ganjil (P/V-0)
P/V
101 JP PE, adr Loncat ke alamat tujuan bila
parity genap (P/V-1)
110 JP P, adr Loncat ke alamat tujuan bila
hasil positif (S-0)
Sign
111 JP M, adr Loncat ke alamat tujuan bila
hasil negatif (S-1)
Sumber: (Sugiono.Djoko.2016)

5.2.3 Program Bagian (Sub Routine)


Dalam program sering mempergunakan sebuah kelompok
program yang diakses secara berulang-ulang, maka kelompok
program ini dapat ditulis sekali saja, dan dapat dipanggil
dimana saja dalam program utama. Kelompok program ini
disebut Program Bagian atau Sub Routine Pemanggilan
program bagian melalui perintah CALL ( . . .. ) atau RST
(Restart), alamat perintah setelah panggil subrutin selalu

Mikroprosesor Dan Mikrokontroller 101


disimpan pada Stack, alamat yang disimpan ini menjadi tujuan
saat kembali ke program utama. Perintah terakhir sebuah
program bagian selalu sebuah perintah return/kembali (RET),
yang fungsinya mengisi program counter (PC), dengan alamat
kembali yang tersimpan di stack. Artinya pelaksanaan perintah
berikutnya pada program utama setelah kembali dari program
bagian adalah perintah yang alamatnya tersimpan pada Stack.

5.2.4 Penyimpan Alamat Loncat Balik pada STACK


Alamat loncat pada dasarnya diletakkan pada RAM.
Penyimpanan di RAM adalah lebih cepat, walaupun demikian
kapasitas penyimpannya terbatas. Untuk penanganan daerah
stack, penunjukkan dipergunakan perintah PUSH dan POP serta
register penunjuk STACK (SP). Pada setiap pemanggilan
program bagian , pertama-tama isi Stack Pointer (SP) dikurangi
satu (SP - 1) kemudian (SP - 1) diisi dengan MSB (bit tertinggi)
dari alamat loncat balik, kemudian isi (SP - 2) diisi dengan LSB
(bit terendah) dari alamat loncat balik. Pada setiap loncat balik
dari sebuah program bagian, bagian pertama LSB dari PC akan
diisi oleh isi SP ( alamat penyimpan stack saat itu ) dan bagian
MSB dari PC diisi oleh isi (SP + 1) dan kemudian (SP + 2)
menunjukkan alamat awal dari pemakaian stack berikutnya.

102 Mikroprosessor Dan Mikrokontroller


5.3 Daftar Instruksi Z80

Mikroprosesor Dan Mikrokontroller 103


Sumber: (Sugiono.Djoko.2016)

E. Rangkuman
Mikroprosesor Z80 memiliki serangkaian instruksi input dan
output, pengalamatan dari perangkat input atau outputd apat berupa
absolut atau langsung, menggunakan register C. Dalam register
mode pengalamatan tidak langsung, data dapat ditransfer antara
perangkat I /O dan salah satu register internal. Selain itu delapan
blok instruksi transfer telah dilaksanakan, instruksi-instruksi ini
mirip dengan transfer blok memori. Beberapa tujuan secara umum
instruksi kontrol CPU , meliputi instruksi NOP merupakan
instruksi yang tidak melakukan apa-apa, Instruksi HALT
menghentikan CPU sementara, DI dan EI adalah operasi interupsi
yang diterima digunakan untuk mengunci atau mengaktifkan
interupsi.

104 Mikroprosessor Dan Mikrokontroller


Terdapat 3 macam cara pengalamatan yang sering digunakan
dalam program, yaitu meliputi:

Immediate : kode mesin mengandung konstanta untuk


(Segera) segera /langsung di akses (dibuat tabel )
Direct : kode mesin mengandung Register, alamat
(Langsung) penyimpan atau alamat masukan / keluaran
dari operan untuk diakses
Indirect (Tidak : kode mesin mengandung hanya satu
Langsung) petunjuk, dimana untuk mendapatkan alamat
dari operan yang akan diakses.

Pengalamatan tidak langsung dapat dilakukan melalui sebuah


register atau dapat juga dilakukan dengan penujuk alamat memori,
kode mesin hanya mengandung sebuah petunjuk alamat, dimana
alamat merupakan operan yang akan diakses. Petunjuk alamat
dapat dilakukan melalui sebuah register CPU atau pada sebuah
lokasi penyimpan, sehingga secara efektif akan didapatkan
pengalamatan secara tidak langsung dengan register dan kode
mesin menjadi lebih pendek. Sebagai contoh sebuah penunjuk
alamat dengan alamat 16 BIT dapat diganikan hanya 3 BIT alamat
Register

Mikroprosesor Dan Mikrokontroller 105


F. Latihan Soal
1. Jelaskan cara pengalamatan mikroprosessor Z80?
2. Jelaskan perbedaan pengalamatan langsung dan tidak
langsung pada mikroprosessor Z80?
3. Berikan contoh pengalamatan immediate?
4. Bagaimana penggunaan perintah percabangan bersyarat?
5. Sebutkan daftar instruksi yang ada pada mikroprosessor
Z80?

106 Mikroprosessor Dan Mikrokontroller


BAB VI
PENGENALAN Z80 SIMULATOR IDE

A. Kompetensi Dasar
3.6 Menerapkan proses debugging pemograman mikroprosesor
4.6 Melaksanakan proses debugging pemograman
mikroprosesor

B. Indikator Pencapaian Kompetensi


3.6.1 Menjelaskan pengenalan penggunaan program
mikroprosessor Z80
3.6.2 Menggunakan program mikroprosessor Z80 yang
berkaitan dengan main window, assembler editor,
simulating log viewer dan memory editor
3.6.1 Melakukan penggunaan program mikroprosessor Z80
3.6.2 Melakukan program mikroprosessor Z80 yang berkaitan
dengan main window, assembler editor, simulating log
viewer dan memory editor

C. Tujuan
Setelah melakukan proses pembelajaran, peserta didik
diharapkan mampu:
1. Menjelaskan pengenalan penggunaan program
mikroprosessor Z80
2. Menggunakan program mikroprosessor Z80 yang berkaitan
dengan main window, assembler editor, simulating log
viewer dan memory editor
3. Melakukan penggunaan program mikroprosessor Z80
4. Melakukan program mikroprosessor Z80 yang berkaitan
dengan main window, assembler editor, simulating log
viewer dan memory editor

Mikroprosesor Dan Mikrokontroller 107


D. Materi
6.1 Pengenalan Z80 Simulator
Z80 Simulator IDE adalah applikasi simulator
mikroprosesor Z80 yang memudahkan mahasiswa mempelajari
mikroprosesor Z80. Simulator ini berbasis grafis yang terintegrasi
dengan kompiler BASIC dan Assembler serta dilengkapi fasilitas
debugger dan disassembler untuk mikroprosesor Z80. Aplikasi
simulator ini mampu menunjukkan isi dari register internal
termasuk status flagnya, mnemonic yang telah dieksekusi dan yang
akan dieksekusi,
nilai clock, instruction counter dan interupt interface.

Secara umum tampilan Z80 Simulator IDE dapat dilihat dalam


gambar berikut:

Gambar 6.1 Tampilan Z80 simulator IDE

Sedangkan tampilan lengkap dengan memory editor dan assembler


sebagai berikut :

108 Mikroprosessor Dan Mikrokontroller


Gambar 6.2 Tampilan lengkap dengan memory editor dan
assembler
Hasil eksekusi juga bisa dilihat dalam resume dalam file
berekstensi .txt yang akan menjelaskan urutan proses dan
perubahan nilai register yang terlibat dalam suatu program aplikasi
Z80 yang telah dieksekusi.

Gambar 6.3 Hasil file berekstensi .txt

Penjelasan masing-masing fungsi tombol menu Z80


Simulator IDE dapat dijelaskan sebagai berikut :
a) Menu File

Mikroprosesor Dan Mikrokontroller 109


Tabel 6.1 Fungsi dari Menu File
Menu File Fungsi/Arti
Clear Memory Memerintahkan simulator untuk
mengembalikan isi memori 64K dari alamat
0000H-FFFFH ke nilai awal (00H).
Load Program Memuat program ke memori CPU. Program
file harus dalam format HEX atau binary
image (OBJ extension) yang termuat dalam
memori dimulai dari alamat 0000H sampai
alamat maksimal 64K
Save Memory Perintah ini untuk menyimpan isi dari memori
ke sebuah file.
Sumber: (https://mrmerdeka.wordpress.com/2010/08/16/z80-
simulator-tutorial/)

b) Menu Simulation
Tabel 6.2 Fungsi dari Menu Simulation
Menu
Fungsi/Arti
Simulation
Membuat Z80 Simulator IDE dalam mode
simulasi dan memulai mengeksekusi perintah
yang dimulai dari alamat 0000H atau alamat
Start
awal program lain yang bisa disesuaikan
dengan cara mengubah isi perintah Change
Starting Address dari menu Option
Perintah ini dapat digunakan jika rate
simulasi dipilih dengan mode Step By Step.
Step
Instruksi berikutnya akan dieksekusi tiap
penekanan tombol F2 pada keyboard
Mengakhiri mode simulasi dan menyajikan
Stop informasi tentang jumlah total instruksi yang
telah dieksekusi dan lama simulasi
Sumber: (https://mrmerdeka.wordpress.com/2010/08/16/z80-
simulator-tutorial/)

110 Mikroprosessor Dan Mikrokontroller


c) Menu Rate
Memungkinkan pengguna untuk mengubah laju simulasi.
Ada beberapa pilihan yaitu : Step By Step, Slow, Normal,
Fast, Extremely Fast, dan Ultimate.

d) Menu Tools
Tabel 6.3 Fungsi dari Menu Tools
Menu Tools Fungsi/Arti
Memory untuk mengakses interface grafis ke 64K
Editor memori. Untuk mengganti isi memori
dilakukan dengan mengklik lokasi memori
yang diinginkan kemudian memasukkan
nilai bilangan hexadesimal dan diakhiri
dengan menekan tombol ENTER pada
keyboard, kursor akan otomatis pindah ke
lokasi memori satu alamat berikutnya
Disassembler digunakan untuk memunculkan perintah
mnemonic Z80 dari suatu file berektensi
HEX atau OBJ. Hasil list perintah berupa
file berekstensi LST
Peripheral digunakan untuk memonitor perintah IN
Devices dan OUT. Jumlah I/O yang bisa diatur
sampai 4 buah dan satu termina output
untuk melihat karakter ASCII yang
dikirimkan ke salah satu port
I/O Port Editor untuk mengatur isi dari port I/O. Nilai dari
port I/O dapat diganti dengan mengklik
port yang diinginkan dan setelah nilai
dimasukkan diakhiri dengan menekan
tombol ENTER keyboard
External digunakan untuk memantapkan interface
Modules otomasi sampai lima modul eksternal
client/server
Assembler file program assembler Z80 dapat
langsung diketik, dikompile dan dimuat ke
Mikroprosesor Dan Mikrokontroller 111
memori simulator dalam satu lingkungan
tampilan grafis. Ekstensi file berupa
.ASM, ketika proses assembly berhasil
dilakukan akan dibangkitkan dua file yaitu
file OBJ yang dapat dimuat ke memori
CPU dan file LST hasil proses debugger,
Sebuah file HEX juga bisa dibangkitkan
jika memilih Generate HEX File Also
dalam tag Option.
Sumber:
(https://mrmerdeka.wordpress.com/2010/08/16/z80-
simulator-tutorial/)

e) Menu Option
Tabel 6.4 Fungsi dari Menu Option
Menu Fungsi/Arti
Option
Enable memungkinkan simulator untuk
Logging menampilkan isi dari file LOG.TXT yang
menunjukkan perubahan isi register dan
status flag Z80 setelah program dieksekusi
HALT Stops memungkinkan menghentikan simulasi
Simulation secara otomatis jika menemui perintah
HALT
FF Power On mengganti nilai awal register Z80 dari nilai
Defaults 00H ke FFH
Refresh memperbaharui isi memori setiap kali
Memory perintah simulasi diaktifkan untuk semua
Editor nilai laju simulasi
Refresh jika pilihan ini diaktifkan dan Breakpoint
Breakpoint Manager dimulai, akan memperbaharui
Manager breakpoint tiap instruksi simulasi dimulai
Save Position menetapkan posisi masing-masing jendela
tampilan simulator
Auto Start mengatur tampilan dan bagian menu apa
Option saja yang akan ditampilkan saat

112 Mikroprosessor Dan Mikrokontroller


menjalankan pertama kali Z80 Simulator
IDE ini juga file yang akan dihasilkan
Change Clock mengganti nilai parameter frekuensi untuk
Frequency menghitung durasi real-time simulasi,
nilainya dalam MHz
Change mengganti alamat awal program yang akan
Starting disimulasikan, nilai default adalah 0000H
Address
Sumber:
(https://mrmerdeka.wordpress.com/2010/08/16/z80-
simulator-tutorial/)

6.2 Main Window


Main Window dari Z80 adalah jendela utama pada program
simulasi z80. Memulai program, kemudian memanggil Assembler
Editor, Simulation Log Viewer, Memory Editor dll. Untuk mengisi
program gunakan menu File > load program. Untuk Melakukan
simulasi gunakan menu Simulation > Start (memulai) atau Stop
(menghentikan) Untuk menghapus memori gunakan FILE > clear
memory. Untuk memanggil Assembler gunakan menu Tools >
Assembler. Untuk memanggil Simulation Log Viewer gunakan
menu Tools > Simulation Log Viewer.

Gambar 6.4 Simulation Log Viewer

Mikroprosesor Dan Mikrokontroller 113


6.3 Assembler Editor
Assembeler Editor adalah editor yang digunakan untuk
menuliskan program. Setelah program ditulis dan disimpan, maka
pada toolbar Tools > Assemble > compile untuk mengetahui
apakah terdapat error atau esalahan sintaks pada program yang
telah dibuat, jika tidak, maka program yang telah dibuat
diterjemahkan ke dalam bentuk Object atau ekstensi .obj. bentuk
objek inilah yang akan digunakan simulator untuk melakukan
simulasi. Simpan hasil program anda agar dapat digunakan kembali
suatu saat. Jendela assembler juga menampilkan terjemahan
program ke dalam bentuk heksadesimal. Untuk lebih jelasnya lihat
gambar berikut ini.

Gambar 6.5 Tampilan assembler editor

114 Mikroprosessor Dan Mikrokontroller


6.4 Simulating Log Viewer
Simulation Log Viewer adalah layar yang menampilkan apa
yang terjadi pada register dan program counter setiap baris program
yang dieksekusi. Dengan melihat jendela ini seolah-olah dapat
“melihat” bagaimana prosesor bekerja.

Gambar 6.6 Tampilan simulating log viewer


6.5 Memory Editor
Memory Editor menampilkan isi dari tiap-tiap alamat pada
memori.

Gambar 6.7 Tampilan memory editor


Mikroprosesor Dan Mikrokontroller 115
E. Rangkuman
Z80 Simulator IDE adalah applikasi simulator mikroprosesor
Z80 yang memudahkan mahasiswa mempelajari mikroprosesor
Z80. Simulator ini berbasis grafis yang terintegrasi dengan
kompiler BASIC dan Assembler serta dilengkapi fasilitas
debugger dan disassembler untuk mikroprosesor Z80. Adapun
tombol-tombol yang terdapat pada menu File Z80 simulator
IDE yaitu: clear memory, load program, save memory. Pada
menu simulation yaitu: start, step, stop. Pada menu Rate ada
beberapa menu pilihan yaitu: step by step, slow, normal, fast,
extremely, fast, ultimate. Pada menu tools terdapat memory
editor, disassembler, periperal device, I/O port editor, extrenal
modules, assembler. Pada menu option terdapat enable logging,
HALT stop simulation, FF Power on default, refersh memory
editor, refresh breakpoint manager, save position, auto start
option, change clock frekuency dan change starting address.

F. Soal Latihan
1. Jelaskan apa yang anda ketahui tentang software
mikroprosessor Z80 IDE simulation?
2. Jelakan fungsi dari load program pada menu file Z80
IDE simulator?
3. Jelaskan fungsi dari memory editor pada menu tools?
4. Jelaskan kegunaan dari HALT stop simulation pada
menu option?
5. Jelaskan apa yang dimakasud dengan assembler editor?

116 Mikroprosessor Dan Mikrokontroller


BAB VII
PROGRAM APLIKASI SEDERHANA MIKROPROSESSOR
Z80 dan MIKROSIMULATOR

A. Kompetensi Dasar
3.7 Menerapkan program aplikasi sederhana sistem minimum
mikroprosesor
3.8 Menerapkan program aplikasi sederhana sistem pengendali
dengan mikroprosessor
4.7 Membuat program aplikasi sederhana sistem minimum
mikroprosesor
4.8 Membuat program aplikasi sederhana sistem pengendali
dengan mikroprosessor

B. Indikator Pencapaian Kompetensi


3.7.1 Menjelaskan langkah menjalankan program Z80
3.7.2 Menggunakan program aplikasi pemindah register 8 bit
dan 16 bit pada simulator Z80
3.8.1 Menjelaskan langkah menjalankan program pengendali
trafict light
3.8.2 Menjelaskan langkah menjalankan program pengendali
seven segmen
3.8.3 Menjelaskan langkah menjalankan program pengendali
motor stepper
3.8.4 Menjelaskan langkah menjalankan program pengendali
snake maze
4.7.1 Melakukan langkah menjalankan program Z80
4.7.2 Membuat kembali program aplikasi pemindah register 8
bit dan 16 bit pada simulator Z80
4.8.1 Membuat kembali menjalankan program pengendali
trafict light
4.8.2 Membuat kembali menjalankan program pengendali seven
segmen
4.8.3 Membuat kembali menjalankan program pengendali motor
stepper

Mikroprosesor Dan Mikrokontroller 117


4.8.4 Membuat kembali menjalankan program pengendali snake
maze
C. Tujuan
Setelah melakukan proses pembelajaran, peserta didik
diharapkan mampu:
1. Menjelaskan langkah menjalankan program Z80
2. Menggunakan program aplikasi pemindah register 8 bit dan 16
bit pada simulator Z80
3. Menjelaskan langkah menjalankan program pengendali trafict
light
4. Menjelaskan langkah menjalankan program pengendali seven
segmen
5. Menjelaskan langkah menjalankan program pengendali motor
stepper
6. Menjelaskan langkah menjalankan program pengendali snake
maze
7. Melakukan langkah menjalankan program Z80
8. Membuat kembali program aplikasi pemindah register 8 bit dan
16 bit pada simulator Z80
9. Membuat kembali menjalankan program pengendali trafict light
10. Membuat kembali menjalankan program pengendali seven
segmen
11. Membuat kembali menjalankan program pengendali motor
stepper
12. Membuat kembali menjalankan program pengendali snake maze

118 Mikroprosessor Dan Mikrokontroller


D. Materi
7.1 Langkah-langkah Menjalankan Program Aplikasi Z80
Sebagai latihan lakukan beberapa langkah kegiatan sebagai berikut
:
1. Jalankan Z80 Simulator IDE

Gambar 7.1 Tampilan utama mikroprosessor Z80

2. Klik Tools / Assembler dan ketik program coba sebagai


berikut, dengan ketentuan setiap mengetik perintah harus
didahului dengan menekan tombol
Tab pada keyboard untuk menghindari kesalahan tempat
penulisan Label :

Gambar 7.2 Tampilan Assembler


Mikroprosesor Dan Mikrokontroller 119
3. Pada jendela Assembler, klik Tools / Assemble untuk
mengkompile program dan mengetahui apakah ada
kesalahan yang terjadi.

Gambar 7.3 Tampilan edit assembler

Dapat dilihat dalam tampilan jendela assembler, jendela atas


menampilkan mnemonik Z80 yang diketik dan jendela bawah
menampilkan hasil kompile yang menunjukkan opcode dari
perintah yang ada di atas ( bisa dibandingkan dengan tabel
mnemonik Z80) dan jumlah kesalahan yang ditemukan.

4. Pada jendela Assembler klik Tools / Assemble & Load untuk


memuat program ke simulator, hasilnya dilihat pada jendela
Z80 Simulator IDE nampak ada perubahan pada bagian
program location

120 Mikroprosessor Dan Mikrokontroller


Gambar 7.4 Tampilan Location pada Jendela Z80 Simulator
IDE

5. Pada jendela Z80 Simulator IDE klik Tools / Memory


Editor, scroll ke bawah sampai tampil lokasi memori
1920H. Klik lokasi tersebut, masukkan data AA dan
diakhiri menekan ENTER.

Gambar 7.5 Tampilan Momory Editor

6. Cek pilihan Rate adalah Fast dan Enable Logging pada


menu Option telah dipilih
7. Jalankan simulasi dengan mengklik Simulation / Start atau
menekan F1
8. Amati perubahan di alamat 1910H dari bernilai 00H
menjadi 04H dan akan tampil jendela baru log.txt yang
menampilkan resume semua langkah dan hasil simulasi
berupa perubahan nilai register dan status flag.

Mikroprosesor Dan Mikrokontroller 121


Gambar 7.6 Tampilan jendela log.txt

Gambar 7.7 Tampilan Jendela .txt

7.2 Program Aplikasi Pemindahan Register


Mikroprosesor Z80 memiliki sekumpulan instruksi yang
sangat berdaya guna dan dan serba guna yang tersedia di beberapa
mikroprosesor 8-bit. Itu termasuk operasi yang khas (unik) seperti
pemindahan blok untuk transfer data yang cepat dan efisien dalam
memori atau antara memori dan I/O. Itu juga mengijinkan operasi
beberapa bit di dalam beberapa lokasi di memori. Dibawah
beberapa contoh program mikroprosesor Z80:

7.2.1 Program mengisi register 8 bit


;=========Program Mengisi Register 8 Bit =======;
LD A, 001H
LD B, 005H
HALT
.END

122 Mikroprosessor Dan Mikrokontroller


7.2.2 Program mengisi register 16 bit
;========Program Mengisi Register 16 Bit =======;
LD BC, 11FAH
HALT
.END

7.2.3 Program menggunakan port I/O keyboard


;========PROGRAM I/O KEYBOARD ==========;
JP 0100H ; lompat ke main routine
.ORG 0038H ; interrupt routine
IN A, (01H) ; mendapatkan nilai dari
port 01H
OUT (02H),A ; nilaike port 02h
EI ; enable interrupt
RETI ; kembali interrupt

.ORG 0100H ; main routine


JR L1 ; kelebihan lompat data
area
L2 : .DB 0AH ; data bit 1
.DB 0BH ; data bit 2
.DB 0CH ; data bit 3
.DB 0DH ; data bit 4
.DB 0EH ; data bit 5
L1 : LD D, 05H ; load counter register D
LD BC, L2 ; load pointer register pair
BC
L3 : LD A, (BC) ; dapatkan bit data
OUT (02H),A ; kirim ke port 02h
INC BC ; increament pointer BC
DEC D ; decrement pointer D
JP NZ,L3 ; loop sampai semua data
IM 1 ; set interrupts mode 1
EI ; enable interrupt
L4 : JP L4 ; loop seterusnya
.END

Mikroprosesor Dan Mikrokontroller 123


7.2.4 Program menggunakan port I/O LED
;============PROGRAM I/O LED ============;
Dim a As Single
Dim b As Single
Dim c As Single

a = 9.876543 ‘nomor awal


b = 2.345678 ‘nomor kedua
c = a*b

print 1, “Nomer ”, a, CrLf


print 1, “multiplied by ”, b, CrLf
print 1, “jumah ”, c, “!”, CrLf

7.3 Program Aplikasi Sistem Pengendali I/O

7.3.1 Program Aplikasi Trafict Light


;========CONTROL THE TRAFFIC LIGHTS=====;
CLO ; tutup jendela windows.
; matikan semua traffic light
Mov AL,0 ; copy 00000000 kedalam register AL
OUT 01 ; kirim AL ke port 1 (trafict lights)
Start : ; nyalakan semua traffic lights
MOV AL,84 ;copy 11111100 ke register AL
OUT 01 ; kirim AL ke port 1 (traffic lights)
;CALL delay,44
MOV AL,44
OUT 01
MOV AL,30
OUT 01
MOV AL,28
OUT 01
JMP Start ; lompat kembali ke start
END ; Program berakhir
===========PROGRAM SELESAI===========

124 Mikroprosessor Dan Mikrokontroller


7.3.2 Program Aplikasi Trafict Ligt menggunakan
Delay
;======CONTROL THE TRAFFIC LIGHTS=======;
CLO ; tutup jendela windows.
; matikan semua traffic light
MOV AL,0 ; copy 00000000 ke register AL
OUT 01 ; kirim AL ke port 1 (traffic light)
Start : ; nyalakan semua traffic light
MOV AL 84 ; copy 11111100 ke register AL
OUT 01 ; kirim AL ke port 1 (traffic light)
CALL 30
MOV AL,44
OUT 01
CALL,30
MOV AL,30
OUT 01
CALL,30
MOV AL,28
OUT 01
JMP Start ; lompat kembali ke start
END ; program selesai
- Tahapan waktu (delay) yang disimpan dialamat [30]-
ORG 30 ; generate kode dari alamat [30]
PUSH AL ; simpan AL ke Stack
PUSHF ; simpan CPU flags ke stack
MOV AL,10 ;
Rep:
DEC AL ; subtract 1 dari AL
JNZ REP ; lompat kembali ke Rep jika AL
mencapai angka 0
POPF ; kembalikan CPU flags dari stack
POP AL ; kembalikan AL dari Stack
RET ; kembai ke langkah
=============program selesai=============

Mikroprosesor Dan Mikrokontroller 125


7.3.3 Program Aplikasi Seven Segment

;======== PROGRAM SEVEN SEGMEN=======;


Start :
MOV AL,FD ; 1111 1010
OUT 02 ; kirim data AL ke port 2
MOV AL, DC ; 0000 0000
OUT 02 ; kirim data AL ke port 2
MOV 9F ; 1111 1011
OUT 02 ; kirim data AL ke port 2
MOV AL,1 ; 0000 0001
OUT 02 ; kirim data AL ke port 2
MOV AL, 1 ; 0000 0001
OUT 02 ; kirim data AL ke port 2

JMP Start

END
;=======================================
7.3.4 Program Aplikasi Snake

;============Snake and Maze============;


Start :
MOV AL,FF ; kode spesial untuk reset snake
OUT 04 ; kirim AL ke port 4 untuk
mengkontrol snake
MOV AL,4F ; artinya turun
OUT 04 ; kirim 4F Ke snake
OUT 04 ; kirim 4F Ke snake
OUT 04 ; kirim 4F Ke snake
OUT 04 ; kirim 4F Ke snake
JMP Start
END
;=====================================

126 Mikroprosessor Dan Mikrokontroller


7.3.5 Program Aplikasi Motor Stepper

;==========STEPPER MOTOR==============;
MOV a1,1 out 05
MOV a1,2 out 05
MOV a1,4 out 05
MOV a1,8 out 05
MOV a1,9 out 05
MOV a1,1 out 05
MOV a1,3 out 05
MOV a1,2 out 05
MOV a1,6 out 05
MOV a1,4 out 05
MOV a1,c out 05
MOV a1,8 out 05
MOV a1,9 out 05
MOV a1,1 out 05
END
;=======================================

E. Rangkuman
Mikroprosesor Z80 memiliki sekumpulan instruksi yang sangat
berdaya guna dan dan serba guna yang tersedia di beberapa
mikroprosesor 8-bit. Itu termasuk operasi yang khas (unik)
seperti pemindahan blok untuk transfer data yang cepat dan
efisien dalam memori atau antara memori dan I/O. I/O yang
digunakan berupa LED, motor, seven segment dengan aplikasi
traffic light, snake maze dan lain sebagainya.

Mikroprosesor Dan Mikrokontroller 127


F. Soal Latihan
1. Tulislah program memasukkan register 8 bit pada
mikroprosessor z80?
2. Tulislah program memasukkan register 16 bit pada
mikroprosessor z80?
3. Berilah keterangan program aplikasi dibawah ini:
JP 0100H ;
.ORG 0038H ;
IN A, (01H) ;
OUT (02H),A ;
EI ;
RETI ;
4. Buatlah program aplikasi pengendali pada motor stepper
di mikroprosessor?
5. Tuliskan program aplikasi maze snake secara lengkap
disimulasi mikrosimulation?

128 Mikroprosessor Dan Mikrokontroller


BAB VIII
ARSITEKTUR MIKROKONTROLER

A. Kompetensi Dasar
3.8 Menjelaskan arsitektur (rancang bangun) mikrokontroler (C2)

B. Indikator Pencapaian Kompetensi


3.9.1 Menjelaskan pengertian mikrokontroler
3.9.2 Menyebutkan bagian-bagian arsitektur mikrokontroler
3.9.3 Menjelaskan bagian-bagian arsitektur mikrokontroler
3.9.4 Menjelaskan prinsip kerja mikrokontroler

C. Tujuan Pembelajaran
Setelah melakukan pembelajaran mikroprosesor dan
mikrokontroler diharapkan peserta didik mampu
1. Menjelaskan pengertian mikrokontroler
2. Menyebutkan bagian-bagian arsitektur mikrokontroler
3. Menjelaskan bagian-bagian arsitektur mikrokontroler
4. Menjelaskan prinsip kerja mikrokontroler

D. Uraian Materi
8.1 Pengertian Mikrokontroler
Istilah mikrokontroler berasal dari microcontroller yang
berarti pengendali mikro. Disebut sebagai pengendali mikro karena
mikrokontroler secara fisik adalah sebuah keping kecil (microchip)
yang merupakan komponen elektronika terintegrasi, dan dalam
aplikasinya mikrokontroler berfungsi untuk mengendalikan sebuah
pekerjaan tertentu secara terprogram.
Mikrokontroler adalah single chip komputer yang memiliki
kemampuan untuk diprogram dan digunakan untuk tugas-tugas
yang berorientasi kendali (control). Mikrokontroler muncul dengan
dua alasan utama, yaitu kebutuhan pasar (market need) dan
perkembangan teknologi baru (expansion of technology). Yang
dimaksud dengan kebutuhan pasar adalah kebutuhan yang luas dari
produk-produk elektronik akan perangkat pintar sebagai pengendali

Mikroprosesor Dan Mikrokontroller 129


dan pemroses data. Sedangkan yang dimaksud dengan
perkembangan teknologi baru adalah perkembangan teknologi
semikonduktor yang memungkinkan pembuatan chip dengan
kemampuan komputasi yang sangat cepat, bentuk yang semakin
kecil, dan harga yang semakin murah (smart, small,and cheap).
8.2 Arsitektur Mikrokontroler
Pada dasarnya, mikrokontroler adalah suatu perangkat yang
mengintegrasikan sejumlah komponen dari sistem mikroprosesor
ke dalam sebuah microchip tunggal. Ada tiga komponen utama dari
mikrokontroler, yaitu: processor CPU, memory dan input/output
(I/O)

CPU MEMORI I/O

BUS
Gambar 8.1 Komponen utama Mikrokontroler

Selain itu, kebanyakan mikrokontroler pada umumnya juga


dilengkapi oleh fitur-fitur lain, seperti:
1. Modul Timer berfungsi untuk melakukan proses dari fungsi-
fungsi yang berhubungan dengan “jangka waktu atau range
waktu”.
2. Sebuah “Serial Port” yang berfungsi untuk melakukan
komunikasi data dengan mikrokontroler yang lainnya atau PC
computer.
3. Modul ADC berfungsi untuk menerima input data analog

130 Mikroprosessor Dan Mikrokontroller


Konsep dasar dari tiga komponen utama mikrokontroler adalah
sebagai berikut:
a. Memory Mikrokontroler

Gambar 8.2 Struktur Memori Mikrokontroler

 ROM (Read-Only Memory)


Read Only Memory (ROM) adalah jenis memori yang
digunakan untuk menyimpan program secara permanen yang
sedang dieksekusi. Ukuran program yang dapat ditulis
tergantung pada ukuran memori. Memory ROM ini berjenis
non-volatile momory, yang berarti data yang tersimpan tidak
akan menguap (hilang) ketika catu daya nya dimatikan. Oleh
sebab itu, memory ini digunakan untuk menympan program
utama dari suatu sistem. ROM ini bisa terletak di dalam unit
mikrokontroler atau juga bisa ditambahkan sebagai memory
eksternal. Ukuran ROM berkisar dari 512 Bytes hingga 64 KB.
Memory Room ini dibagi lagi menjadi beberapa jenis, yaitu:
EPROM (Erasable Programmable Read Only Memory) dan
EEPROM (Electrically Erasable Programmable Read Only
Memory). Memory EEPROM dapat menyimpan data secara
permanen, tetapi isinya masih bisa dihapus secara elektris
memlaui program. Salah satu jenis EEPROM ini adalah Flash
Memory.

Mikroprosesor Dan Mikrokontroller 131


 RAM (Random-Access Memory)
Random Access Memory (RAM) adalah jenis memory yang
digunakan untuk menyimpan data sementara dan hasil
antara yang diciptakan dan digunakan selama
mikrokontroler bekerja. Isi memory ini akan terhapus secara
otomatis jika catu daya dimatikan. Oleh sebab itu, program
utama tidak pernah disimpan di dalam RAM. Memory
RAM ini memproses data yang tersimpan secara acak atau
random.

b. Input Dan Output (I/O) Mikrokontroler

Gambar 8.3 Input dan Output (I/O) Mikrokontroler

Unit input output I/O bekerja sebagai penghubung antara


CPU dengan alat-alat input seperti sensor atau tranducer dan juga
sebagai penghubung dengan alat output seperti actuator. Unit I/O
ini juga bekerja sebagai saluran komunikasi antara sistem CPU

132 Mikroprosessor Dan Mikrokontroller


dengan sistem di luar. Biasanya untuk berkomunikasi keluar, unit
I/O yang digunakan adalah I/O serial
c. Central Processing Unit (CPU)

Gambar 8.4 Organisasi CPU Mikrokontroler

CPU merupakan otak dari mikrokontroler. CPU ini


memiliki beberapa fungsi, yaitu: mengoordiansikan seluruh operasi
komputasi, melakukan operasi aritmatika, melakukan operasi
logika dan mengendalikan kerja system tersebut secara
keseluruhan.
CPU terdiri atas dua bagian, yaitu: unit pengendali (control
unit) dan unit aritmatika dan logika (ALU). Fungsi utama unit
pengendali adalah mengambil, mengkodekan dan melaksanakan
urutan instruksi dari sebuah program yang tersimpan di dalam
memory. Sedangkan, unit aritmatika dan logika (ALU) berfungsi
untuk melakukan proses perhitungan matematis yang diperlukan
selama program dijalankan serta mempertimbangkan suatu kondisi
untuk pengambilan keputusan yang dibutuhkan pada instruksi-
instruksi berikutnya.
Untuk mikrokontroler AVR sudah menggunakan konsep
arsitektur Harvard yang memisahkan memori dan bus untuk data
dan program, serta sudah menerapkan single level pipelining.
Selain itu mikrokontroler AVR juga mengimplementasikan RISC
Mikroprosesor Dan Mikrokontroller 133
(Reduced Instruction Set Computing) sehingga eksekusi instruksi
dapat berlangsung sangat cepat dan efisien.

Gambar 8.5 Arsitektur Mikrokontroler AVR

8.3 Bagian-Bagian Arsitektur Mikrokontroler


Penjelasan dari bagian/komponen dalam struktur
mikrokontroler adalah sebagai berikut :
1. ALU (Arithmetic and Logic Unit)
ALU berfungsi untuk menangani operasi aritmatika
(penjumlahan, pengurangan, perkalian dan pembagian) dan
juga operasi logika (and, or, exor, not, dan lain-lain)
2. Accumulator Register
Register akumulator merupakan register serbaguna yang
berfungsi sebagai tempat penyimpanan sementara hasil suatu
operasi aritmatika atau logika.
3. Internal RAM (Random Access Memory)

134 Mikroprosessor Dan Mikrokontroller


Merupakan memori penyimpan data yang isinya dapat diubah
atau dihapus. RAM biasanya berisi data-data variabel dan
register. Data yang tersimpan di RAM akan hilang jika catu
daya yang diberikan kepadanya dimatikan.
4. Internal ROM (Read Only Memory)
Merupakan memori penyimpan program/instruksi yang isinya
tidak dapat diubah atau dihapus. Program tersimpan di ROM
dalam format biner (0 atau 1). Untuk memasukan
program/instruksi ke dalam chip mikrokontroler digunakan
perangkat lunak khusus sesuai dengan tipe/jenis
mikrokontrolernya.
5. I/O Port
Untuk berkomunikasi dengan dunia luar, maka mikrokontroler
menggunakan terminal I/O (Input-Output). Port tersebut disebut
Input/Output karena port tersebut dapat digunakan sebagai
masukan atau sebagai keluaran. Sebagai masukan misalnya jika
sebuah sensor atau switch dihubungkan dengan mikrokontroler
, dan sebagai keluaran misalnya jika sebuah perangkat output
(LED, relay atau motor) dihubungkan ke mikrokontroler.

Gambar 8.6 Port I/O pada Mikrokontroler

Mikroprosesor Dan Mikrokontroller 135


6. Program Counter
Merupakan register khusus yang berfungsi sebagai
pencacah/penghitung eksekusi program mikrokontroler.
7. Stack Pointer
Merupakan bagian dari RAM yang memiliki metode
penyimpanan dan pengambilan data secara khusus. Data yang
disimpan dan dibaca tidak dapat dilakukan dengan metode acak
(random). Data yang masuk ke stack pada urutan terakhir
adalah data yang pertama dibaca kembali atau biasa disebut
dengan LIFO (Last In First Out).
8. Timer/Counter
Timer/conter digunakan untuk melakukan salah satu dari 3
(tiga) fungsi berikut, yaitu: penghitungan suatu interval waktu
(interval timing), penghitungan banyaknya kejadian (event
counting) dan pembangkit baud rate (baud rate generation)
untuk komunikasi serial
9. Interrupt Circuit
Rangkaian interupsi adalah rangkaian yang memiliki fungsi
untuk mengendalikan sinyal-sinyal interupsi baik internal
maupun eksternal. Adanya sinyal interupsi akan menghentikan
eksekusi normal program mikrokontroler untuk selanjutnya
menjalankan sub program dari interupsi tersebut.
10. Clock Circuit
Oleh karena mikrokontroler merupakan rangkaian logika
sekuensial, di mana proses bekerjanya melalui sinkronisasi
clock maka diperlukan rangkaian clock yang menyediakan
clock untuk seluruh bagian sistem mikrokontroler.

8.4 Prinsip Kerja Mikrokontroler


Pada dasarnya unjuk kerja mikrokontroler tergantung pada
urutan program/instruksi yang dijalankannya, yaitu program yang
ditulis di ROM.
Prinsip kerja mikrokontroler adalah sebagai berikut :
1. Mikrokontroler memulai bekerja dengan mengambil data pada
ROM dengan address yang ada pada progam counter (PC).
Selanjutnya PC ditambah nilainya dengan 1 (increment) secara
otomatis.
136 Mikroprosessor Dan Mikrokontroller
2. Selanjutnya instruksi tersebut dijalankan tergantung dari jenis
istruksinya yakni : membaca, mengubah nilai register,
mengaktifkan port, dan sebagainya.
3. Mikrokontroler akan terus mengulang kembali langkah 1 dan 2,
sampai power dari sistem mikrokontroler dimatikan.

Untuk dapat membuat mikrokontroler bekerja maka ada beberapa


hal yang harus dikerjakan yaitu :
1. Membuat program di mana program yang dibuat harus sesuai
dengan mikrokontroler yang digunakan, karena tiap
mikrokontroler memiliki Bahasa pemrograman sendiri.
2. Pembuatan program tersebut biasanya dilakukan menggunakan
teks editor yang mana setelah selesai dibuat maka program
tersebut harus dikompilasi. Tujuan kompilasi adalah untuk
mengubah program yang ditulis (op code) menjadi bahasa
mikrokontroler.
3. Selesai proses kompilasi (biasanya dalam format .hex),
selanjutnya program tersebut dimasukkan ke dalam
mikrokontroler menggunakan perangkat lunak downloader
yang disesuiakan dengan jenis mikrokontrolernya.

E. Rangkuman
1. Mikrokontroler adalah single chip komputer yang memiliki
kemampuan untuk diprogram dan digunakan untuk tugas-
tugas yang berorientasi kendali (control). Mikrokontroler
muncul dengan dua alasan utama, yaitu kebutuhan pasar
(market need) dan perkembangan teknologi baru (expansion
of technology).
2. Bagian-bagian dari arsitektur mikrokontroler adalah ALU
(Arithmetic and Logic Unit), Accumulator Register,
Internal RAM (Random Access Memory), Internal ROM
(Read Only Memory), I/O Port, Program Counter, Stack
Pointer, Timer/Counter, Interrupt Circuit, dan Clock Circuit
3. Prinsip kerja mikrokontroler adalah sebagai berikut :
mikrokontroler memulai bekerja dengan mengambil data
pada ROM dengan address yang ada pada progam counter
(PC). Selanjutnya PC ditambah nilainya dengan 1
Mikroprosesor Dan Mikrokontroller 137
(increment) secara otomatis, selanjutnya instruksi tersebut
dijalankan tergantung dari jenis istruksinya yakni :
membaca, mengubah nilai register, mengaktifkan port, dan
sebagainya, mikrokontroler akan terus mengulang kembali
langkah 1 dan 2, sampai power dari sistem mikrokontroler
dimatikan.

F. Soal Latihan
1. Jelaskan pengertian mikrokontroler!
2. Sebutkan 5 bagian arsitektur mikrokontroler!
3. Jelaskan fungsi 5 bagian arsitektur mikrokontroler!
4. Jelaskan prinsip kerja mikrokontroler!

138 Mikroprosessor Dan Mikrokontroller


BAB IX
SISTEM MINIMUM AVR ATMEGA 8535

A. Kompetensi Dasar
3.10 Menjelaskan prinsip kerja sistem minimum mikrokontroler

B. Indikator Pencapaian Kompetensi


3.10.1 Menjelaskan arsitektur AVR ATMega 8535
3.10.2 Menyebutkan konfigurasi pin AVR ATMega 8535
3.10.3 Menjelaskan prinsip kerja rangkaian sistem minimum AVR
ATMega 8535

C. Tujuan Pembelajaran
Setelah melakukan pembelajaran mikroprosesor dan
mikrokontroler diharapkan Peserta didik mampu
5. Menjelaskan arsitektur AVR ATMega 8535
6. Menyebutkan konfigurasi pin AVR ATMega 8535
7. Menjelaskan prinsip kerja rangkaian sistem minimum

D. Uraian Materi
9.1 Arsitektur AVR ATMega 8535
Secara umum, AVR dapat dikelompokkan menjadi 4 kelas,
yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATmega dan
AT86RFxx. Pada dasarnya yang membedakan masing–masing
kelas AVR adalah memori, peripheral, dan fungsinya sedangkan
dari segi arsitektur dan instruksinya hampir sama. Gambar 9.1
menunjukkan blok diagram mikrokontroler ATMega8535.

Mikroprosesor Dan Mikrokontroller 139


Gambar 9.1 Blok Diagram ATMega8535
140 Mikroprosessor Dan Mikrokontroller
ATmega 8535 memiliki teknologi RISC dengan kecepatan
maksimal 16 MHz yang membuat ATMega8535 lebih cepat bila
dibandingkan dengan varian MCS 51. Dengan fasilitas yang
lengkap tersebut menjadikan ATMega8535 sebagai mikrokontroler
yang powerfull. Dari gambar 9.1 dapat dilihat bahwa ATMega8535
memiliki bagian sebagai berikut:
1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan
Port D
2. ADC 10 bit sebanyak 8 saluran
3. Tiga buah Timer/Counter dengan kemampuan pembandingan
4. CPU yang terdiri atas 32 buah register
5. Watchdog Timer dengan osilator internal
6. SRAM sebesar 53 byte
7. Memori Flash sebesar 8 kb dengan kemampuan Read While
Write
8. Unit interupsi internal dan eksternal
9. Port antarmuka SPI
10. EEPROM sebesar 53 byte yang dapat diprogram saat operasi
11. Antarmuka komparator analog
12. Port USART untuk komunikasi serial
Fitur ATMega8535 sebagai kapabilitas detail dari ATMega8535
adalah sebagai berikut:
1. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan
maksimal 16 Mhz.
2. Kapabilitas memory flash 8KB, SRAM sebesar 53 byte, dan
EEPROM (Electrically Erasable Programmable Read Only
Memory) sebesar 53 byte
3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel
4. Portal komunikasi serial (USART) dengan kecepatan maksimal
2,5 Mbps
5. Enam pilihan mode sleep menghemat penggunaan daya listrik

9.2 Konfigurasi Pin ATMega8535


Mikrokontroler AVR ATMega memiliki 40 pin dengan 32
pin diantaranya digunakan sebagai port paralel. Satu port
paralel terdiri dari 8 pin, sehingga jumlah port pada mikrokontroler
adalah 4 port, yaitu port A, port B, port C dan port D. Sebagai
Mikroprosesor Dan Mikrokontroller 141
contoh adalah port A memiliki pin antara port A.0 sampai dengan
port A.7, demikian selanjutnya untuk port B, port C, port D.
Diagram pin mikrokontroler dapat dilihat pada gambar berikut:

Gambar 9.2 Konfigurasi Pin AVR ATMega8535

Dari gambar 3.2 dapat dijelaskan secara fungsional konfigurasi pin


ATMega8535 sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai pin masukan catu
daya
2. GND merupakan pin ground
3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin
masukan ADC.
4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi
khusus, yaitu Timer/Counter,komparator analog,dan SPI
5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi
khusus, yaitu TWI,komparator analog dan Timer Oscillator
6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi
khusus, yaitu komparator analog,interupsi eksternal,dan
komunikasi serial
7. RESET merupakan pin yang digunakan untuk me-reset
mikrokontroler
8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal.
142 Mikroprosessor Dan Mikrokontroller
9. AVCC merupakan pin masukan tegangan untuk ADC.
10. AREF merupakan pin masukan tegangan referensi ADC.
9.3 Prinsip Kerja Sistem Minimum AVR ATMega 8535
Rangkaian sistem minimum adalah rangkaian minimal
dimana chip mikrokontroler dapat bekerja (running). Chip AVR
Atmega dilengkapi dengan osilator internal sehingga, untuk
menghemat biaya (cost), tidak perlu menggunakan kristal/resonator
eksternal untuk sumber clock CPU.
Untuk membuat rangkaian sistem minimum diperlukan
beberapa komponen yaitu :
1. IC mikrokontroler ATMega 8535
2. 3 kapasitor kertas yaitu 22 pF (C2 dan C3) serta 100 nF(C4)
3. 1 kapasitor eletrolit 4.7 uF (cl2) 2 resistor yaitu 100 ohm (R1)
dan 10 Kohm (R3)
4. 1 tombol reset pushbutton (PB1)

Rangkaian sistem minimum ATMeaga 8535 dapat dilihat pada


gambar 9.3 berikut :

Gambar 9.3 Rangkaian Sistem Minimum ATMega16

Mikroprosesor Dan Mikrokontroller 143


E. Rangkuman
1. ATmega 8535 memiliki teknologi RISC dengan kecepatan
maksimal 16 MHz yang membuat ATMega8535 lebih cepat
bila dibandingkan dengan varian MCS 51. Dengan fasilitas
yang lengkap tersebut menjadikan ATMega8535 sebagai
mikrokontroler yang powerfull.
2. Mikrokontroler AVR ATMega memiliki 40 pin dengan 32
pin diantaranya digunakan sebagai port paralel. Satu port
paralel terdiri dari 8 pin, sehingga jumlah port pada
mikrokontroler adalah 4 port, yaitu port A, port B, port C
dan port D. Sebagai contoh adalah port A memiliki pin
antara port A.0 sampai dengan port A.7, demikian
selanjutnya untuk port B, port C, port D.
3. Rangkaian sistem minimum adalah rangkaian minimal
dimana chip mikrokontroler dapat bekerja (running). Chip
AVR Atmega dilengkapi dengan osilator internal sehingga,
untuk menghemat biaya (cost), tidak perlu menggunakan
kristal/resonator eksternal untuk sumber clock CPU.

F. Soal Latihan
1. Jelaskan arsitektur mikrokontroler AVR ATMega8535!
2. Sebutkan konfigurasi pin mikrokontroler AVR
ATMega8535!
3. Jalaskan prinsip kerja rangkaian sistem minimum!

144 Mikroprosessor Dan Mikrokontroller


BAB X
KOMPONEN PENDUKUNG SISTEM MINIMUM
ATMEGA 8535

A. Kompetensi Dasar
3.11 Menjelaskan komponen pendukung sistem minimum
mikrokontroler

B. Indikator Pencapaian Kompetensi


3.11.1 Menyebutkan komponen pundukung sistem minimum
mikrokontroler AVR ATMega 8535
3.11.2 Menjelaskan fungsi komponen pendukung sistem
mikrokonroler AVR ATMega 8535

C. Tujuan Pembelajaran
Setelah melakukan pembelajaran mikroprosesor dan
mikrokontroler diharapkan peserta didik mampu
8. Menyebutkan komponen pundukung sistem minimum
mikrokontroler AVR ATMega 8535
9. Menjelaskan fungsi komponen pendukung sistem
mikrokonroler AVR ATMega 8535

D. Uraian Materi
10.1 Komponen Pendukung Sistem Minimum
Sistem minimum mikrokontroler adalah sebuah rangkaian
yang paling penting dalam membuat alat yang berbasis
mirokontroler. Rangkaian ini di anggap penting karena untuk dapat
menjalankan dan memrogram IC mikrokontroler di butuhkan
sebuah rangkaian yang dinamakan sistem minimum. Untuk
membuat rangkaian sistem minimum, selain IC juga diperlukan
beberapa komponen pendukung seperti regulator, osilator, ISP,
kapasitor, dan juga push button.
10.2 Fungsi Komponen Pendukung Sistem Minimum
1. Power Supply
Semua komponen elektronika membutuhkan power supply atau
sering juga disebut catu daya. Mikrokontroler beroperasi pada

Mikroprosesor Dan Mikrokontroller 145


tegangan 5 volt. Biasanya pembuatan catu daya mikrokontroler
menggunakan IC regulator 7805 agar tegangannya bisa stabil.

Gambar 10.1 Bentuk Fisik IC Regulator 7805

Tabel 10.1 Tabel Konfigurasi IC Regulator 7805


Pin No Function Name
1 Input voltage (5V-18V) Input
2 Ground (0V) Ground
3 Regulated output; 5V (4.8V-5.2V) Output

Regulator ini menghasilkan tegangan output stabil 5 Volt


dengan syarat tegangan input yang diberikan minimal 7-8 Volt
(lebih besar dari tegangan output) sedangkan batas maksimal
tegangan input yang diperbolehkan dapat dilihat pada datasheet IC
78XX karena jika tidak maka tegangan output yang dihasilkan
tidak akan stabil atau kurang dari 5 Volt.
Keunggulan
Jika dibandingkan dengan regulator tegangan lain, seri
78XX ini mempunyai keunggulan di antaranya:
1. Untuk regulasi tegangan DC, tidak memerlukan komponen
elektronik tambahan.
2. Aplikasi mudah dan hemat ruang
3. Memiliki proteksi terhadap overload (beban lebih), overheat
(panas lebih), dan hubungsingkat
4. Dalam keadaan tertentu, kemampuan pembatasan arus
peranti 78XX tidak hanya melindunginya sendiri, tetapi

146 Mikroprosessor Dan Mikrokontroller


juga melindungi rangkaian yang ditopangnya. (Wikipedia)
Kekurangan
1. Tegangan input harus lebih tinggi 2-3 Volt dari tegangan
output sehingga IC 7805 kurang tepat jika digunakan untuk
menstabilkan tegangan battery 6 Volt menjadi 5 Volt.
2. Seperti halnya regulator linier lain, arus input sama dengan
arus output. Karena tegangan input harus lebih tinggi dari
tegangan output maka akan terjadi terjadi panas pada IC
regulator 7805 sehingga diperlukan heatsink (pendingin)
yang cukup.

2. Oscilator (Kristal)
Fungsi Kristal pada Sistem Minimum (Sismin) adalah
sebagai pembangkit/ pemompa data yaitu bersifat timer (semacam
clock)/pulsa digital oleh karena itu kristal memiliki sebuah
frekuesi, untuk standart pemakaian kali ini saya memakai yang tipe
kristal berfrekuensi 12 mhz, atau bisa lebih detail 11.0592 mhz.

Gambar 10.2 Bentuk Fisik Kristal

Mikrokontroler sendiri sudah memiliki oscilator internal


yaitu sebesar 8 Mhz tetapi kadang kala agar kinerja mikrokontroler
lebih cepat oscilator internal tidak bisa menangani kasus tersebut.
Oleh karena itu dibutuhkan osilator eksternal (kristal) yang nilainya
lebih dari 8 Mhz. perlu diperhatikan mikrokontroler hanya bisa
beroperasi sampai 16 Mhz, jadi kalau memilih kristal untuk AVR
tidak boleh lebih dari 16 Mhz.

Mikroprosesor Dan Mikrokontroller 147


3. ISP (In System Programable)
Sistem minimum mikrokontroler dibuat untuk di program.
Prinsipnya mikrokontroler bisa diprogram secara parallel atau
secara serii. Pemrograman mikrokontroler secara seri atau lebih
dikenal dengan ISP tidak memerlukan banyak jalur data. ISP
memiliki kelemahan, jika salah setting fuse bit yang memiliki fugsi
fital misal pin reset di disable maka alamat DEH sudah tidak bisa
digunakan lagi. Untuk menembalikan setingan fuse bit tadi harus
menggunakan pemrograman tipe parallel (high voltage
programming).

Gambar 10.3 ISP pada Sistem Minimum

4. Push Button
Push button pada rangkaian sistem minimum berfungsi
sebagai tombol reset, tombol ini digunakan untuk merestart
program pada mikrokontroler, sehingga ketika tombol reset ini
ditekan, mikrokontroler akan membaca program mulai dari awal
lagi. Untuk penggunaan tombol ini dapat di idi ataupun tidak,
tergantung pada keinginan pengguna.

Gambar 10.4 Bentuk Fisik Push Button

148 Mikroprosessor Dan Mikrokontroller


5. Resistor
Resistor adalah komponen yang berfungsi untuk
penghambat arus listrik. Pada rangkaian sistem minimum ini,
resistor yang digunakan adalah resistor linier. Besarnya nilai
tahanan pada resistor linier ditentukan oleh warna yang tertera pada
badan resistor. Untuk nilai resistor yang digunakan adalah 4k7 dan
2k2.

Gambar 10.5 Bantuk Fisik Resistor

6. Kapasitor
Kapasitor adalah komponen yang berfungsi menyimpan dan
melepaskan muatan listri. Pada rangkaian sistem minimum ini
kapasitir juga berfungsi sebagai penyaring (filter) yang digunakan
pada bagian power suply. Komponen ini digunakan untuk
menghasilkan tegangan output yang lebih halus sehingga tegangan
DC yang dihasilkan menjadi lebih konstan.

Gambar 10.6 Bentuk Fisik Kapasitor

7. LED
LED indikator adalah komponen elektronika jenis dioda
yang dapat memancarkan cahaya. Fungsi LED pada rangkaian

Mikroprosesor Dan Mikrokontroller 149


sistem minimum kali ini adalah berfungsi sebgai indikator bahwa
rangkaian telah menerima arus listrik dari power suppy.

Gambar 10.7 Bentuk Fisik Dioda

E. Rangkuman
1. Sistem minimum mikrokontroler adalah sebuah rangkaian
yang paling penting dalam membuat alat yang berbasis
mirokontroler. Rangkaian ini di anggap penting karena
untuk dapat menjalankan dan memrogram IC
mikrokontroler di butuhkan sebuah rangkaian yang
dinamakan sistem minimum. Untuk membuat rangkaian
sistem minimum, selain IC juga diperlukan beberapa
komponen pendukung seperti regulator, osilator, ISP,
kapasitor, dan juga push button.
2. Fungsi dari komponen pendukung sistem adalah sebagai
berikut: power suppy digunakan untuk memberikan
tegangan agar sistem minimum dapat bekerja, osilator
berfungsi sebagai pembangkit sinyal, ISP prinsipnya
mikrokontroler dapat diprogram secara seri dan paralel,
push button berfungsi sebagai tombol reset, resistor
digunakan sebagai penghambat arus, kapasitor digunakan
sebagai filter dari rangkaian power supply, dan LED
digunakan sebagai indikator.
F. Soal Latihan
1. Sebutkan komponen pendukung sistem minimum AVR
ATMega 8535!
2. Jelaskan fungsi komponen pendukung sistem minimum
AVR ATMega 8535!

150 Mikroprosessor Dan Mikrokontroller


BAB XI
INSTRUKSI-INSTRUKSI AVR ATMEGA 8535

Sekolah : SMK NEGERI 1 SULSEL


Program Keahlian : Teknik Elektronika
Kompetensi Keahlian : Teknik Elektronika Industri
Mata Pelajaran : Mikroprosesor dan Mikrokontroler
Kelas/Semester : XI / 1

A. Kompetensi Dasar
3.12 Menganalisis instruksi-instruksi (instructions set)
mikrokontroler

B. Indikator Pencapaian Kompetensi


3.12.1 Mengklasifikasi macam-macam instruksi AVR ATMega
8535
3.12.2 Menjelaskan fungsi instruksi-instruksi AVR ATMega 8535
3.12.3 Menentukan penggunaan instruksi-instruksi AVR ATMega
8535

C. Tujuan Pembelajaran
Setelah melakukan pembelajaran mikroprosesor dan
mikrokontroler diharapkan peserta didik mampu:
10. Mengklasifikasi macam-macam instruksi AVR ATMega 8535
11. Menjelaskan fungsi instruksi-instruksi AVR ATMega 8535
12. Menentukan penggunaan instruksi-instruksi AVR ATMega
8535

D. Uraian Materi
11.1 Macam-Macam Instruksi pada AVR ATMega8535
Mikrokontroler AVR Atmel memiliki 28 macam instruksi
asembler utama yang harus dipelajari, namun demikian terdapat
beberapa instruksi yang bila dieksekusi menghasilkan kode yang
sama. Sehingga instruksi assembler yang sebenarnya hanya 79
macam instruksi. Beberapa tipe AVR memiliki beberapa tambahan
instruksi yang tidak terdapat pada tipe AVR yang lain. Misalnya,
instruksi PUSH dan POP yang tidak dikenal dalam keluarga AVR

Mikroprosesor Dan Mikrokontroller 151


tipe ATtiny dan instruksi MUL, MULS, FMUL, atau EIJMP yang
dikenal dalam ATmega.
AVR memiliki register keperluan umum (GPR, General
Purpose Register) sebanyak 32 register. Semua operasi aritmatika
dan logika dilakukan pada GPR. Memori data yang tersedia pada
AVR ada yang mencapai 64KB dan dapat dialamati baik secara
langsung maupun tidak langsung menggunakan istruksi
Load/Store. Pada pengalamatan tidak langsung, bagian lain GPR
digunakan sebagai pointer (penunjuk) pengalamatan tidak
langsung. GPR dan register I/O juga dipetakan pada bagian bawah
memori data dan dapat diakses menggunakan instruksi-instruksi
Load/Store.
Dalam pemrograman assembly ATMega8535 terdapat dua
macam instruksi, yang pertama adalah instruksi set, yaitu instruksi
yang digunakan untuk memprogram
mikrokontroler dengan bahasa rakitan (assembly) dan yang kedua
adalah Assembler Directives yaitu instruksi-instruksi untuk
mengarahkan program assembler. Instruksi-instruksi pada AVR
adalah instruksi set dan assembler directive.

11.2 Fungsi Instruksi-Instruksi pada AVR ATMega8535


1. Instruksi Set
Instruksi-instruksi bahasa assembler AVR dapat dibagi
menurut jenisnya menjadi lima kelompok, yaitu :
a. Instruksi Transfer Data

Tabel 11.1 Instruksi transfer data


Instruksi Arti Contoh
LDI Rd,K RD = K .d=16- Artinya copy data LDI R16, 0xf
31. K = 0-255 8 bit ke GPR LDI R31,8 //desimal 8
(hanya R16~R31).
ADD Rd,Rr Rd = Rd + Rr
LDS Rd,K(LoaD direct to data Copy isi alamat K LDS R20,0x1.copy alamat
Space)Rd = isi alamat K ke RD 0x0001 (R1) ke R20.
, d =0~31 K = 0~FFFF
STS K, Rr(Store direct To Mengcopy isi 1) STS 0x1 ,R10copy isi
data Space) register Rr ke R10 ke alamat 0x0001
lokasi memory K (R1).2) LDI R16,0x55
152 Mikroprosessor Dan Mikrokontroller
STS 0x38,R16 //
0x38(PortB) = 0x55
IN Rd,A isi GPR dgn IN R20,0x16 (PINB=mem
memori relatif adress 0x36, relatif adress
SFR 0x16) artinya isi R20 =
PINB untuk instruksi IN
lebih baik ganti “A” dgn
nama jadi IN R20,0x16
sama dengan IN R20
,PINB
OUT A,Rr isi reg i/o dengan Out PORTD,R10
Rr
JMP spt goto bahasa C lagi : IN R16, PINB
OUT PORTC,R16
JMP lagi
MOV Mengcopy data di MOV R10, R20
antara register
GPR

b. Instruksi Operasi Aritmatika


Tabel 11.2 Instruksi Operasi Aritmatika
Instruksi Fungsi Contoh
ADD Menambahkan isi dua add r15,r14 ;
register. r15=r15+r14
ADC Menambahkan isi dua adc r15,r14 ;
register dan isi carry flag r15=r15+r14+C
SUB Mengurangi isi dua sub r19,r14 ; r19=r19-r14
register.
MUL Mengalikan dua register. mul r21,r20 ;
Perkalian 8 bit dengan 8 r1:r0=r21*r20
bit menghasilkan bilangan
16 bit yang disimpan di
r0untuk byte rendah dan
di r1 untuk byte tinggi.
Untuk memindahkan
bilangan 16 bit antar
register registerdigunakan
instruksi movw (copy
register word)

Mikroprosesor Dan Mikrokontroller 153


c. Instruksi Logika
Tabel 11.3 Instruksi Logika
Instruksi Arti Contoh
AND Rm,Rn Rm=Rm & Rn AND Rr23,R27
ANDI Rn,kontanta Rn=Rn & konstanta ANDI R25,0b11110000
OR R18 = R18 OR R17 OR R18, R17
ORI Rn = Rn OR konstanta ori r15,0xfe
INC Rn = Rn + 1 INC R16
DEC Rn = Rn – 1 DEC R16
CLR Rn = 0 CLR R15 ; R15=0x00
SER Rn=0xFFh SER R16 ; r16=0xff

d. Instruksi I/O
Tabel 11.4 Instruksi Input/Output
Instruksi Arti Contoh
IN membaca data I/O port IN R16,PinA
ke dalam register
OUT menulis data register ke OUT PortA,R16
I/O port
LDI(load immediate) menulis konstanta ke LDI R16,0xFF
register sebelum
konstanta tersebut
SBI(set bit in I/O) membuat logika high SBI PortB,7
pada sebuah bit I/O port
CBI(clear bit in I/O) membuat logika low CBI PortB,5
pada sebuah bit I/O port
SBIC(skip if bit in I/O is lompati satu instruksi SBIC PortA,3
clear) jika bit I/O port dalam
kondisi clear/low
SBIS(skip if bit in I/O is lompati satu instruksi SBIS PortB,3
set) jika bit I/O port dalam
kondisi set/high

154 Mikroprosessor Dan Mikrokontroller


e. Instruksi Percabangan
Tabel 11.5 Instruksi Percabangan
Instruksi Arti Contoh
Sbic (skip if bit in I/O is Skip jika bit I/O yang SBIC PINB,0; Skip if
leared) diuji clear Bit 0 on port B is 0
RJMP ATarget ; Jump
to the label ATarget
Sbis (skip if bit in I/O is Skip jika bit I/O yang
set) diuji set
sbrc (skip if bit in register Skip jika bit dalam
is lear) register yang diuji
clear
cp (compare) Membandingkan isi cp r16,r18 ;brne
dua register lompat ;(menuju
lompat jika r16=r18)
cpi (compare with Membandingakan isi cpi r16,5 ; r16=5 ?breq
immediate) register dengan lagi ;(menuju lagi jika
konstanta tertentu r16 = 5
breq (branch if equal) Lompat ke label
tertentu jika suatu
hasil perbandingan
adalah sama
brne (branch if not equal) Lompat ke label
tertentu jika suatu
hasil perbandingan
adalah tidaksama
rjmp (relative jump) Lompat ke label
tertentu
rcall (relative call) Memanggil subrutin.
ret (return) Keluar dari sub rutin.
CPSE(ComPare Skip if Compare R1 and R2, CPSE R1,R2
Equal) skip if equal

2. Assembler Directive
Assembler directive adalah istruksi-instruksi yang berguna
untuk mengubah penunjuk kode assembly, contoh kita dapat
mengubah lokasi kode .asm pada memori program, memberi label

Mikroprosesor Dan Mikrokontroller 155


pada SRAM atau mendefinisikan suatu konstanta menggunakan
sintaks pengarah assembler. Berikut ini beberapa sintaks pengarah
assembler pada mikrokontroler AVR ATMega8535 :
a. .org digunakan untuk menset program counter pada alamat
tertentu
b. .byte digunakan untuk inisialisasi besar byte yang digunakan
paa SRAM untuk label tertentu
c. .def (define) pengarah ini memungkinkan suatu register dapat
didefinisikan
d. .equ berguna untuk memberi nama suatu konstanta yang
nilainya tidak berubah dan beberapa instruksi Assembler
Directive lainnya.

E. Rangkuman
1. Dalam pemrograman assembly ATMega8535 terdapat dua
macam instruksi, yang pertama adalah instruksi set dan
Assembler Directive.
2. Fungsi instruksi set yaitu instruksi yang digunakan untuk
memprogram mikrokontroler dengan bahasa rakitan
(assembly) dan fungsi Assembler Directives yaitu instruksi-
instruksi untuk mengarahkan program assembler. Instruksi-
instruksi pada AVR adalah instruksi set dan assembler
directive.

F. Soal Latihan
1. Klasifikasikan macam-macam instruksi AVR ATMega
8535
2. Jelaskan fungsi 2 instruksi AVR ATMega 8535

156 Mikroprosessor Dan Mikrokontroller


BAB XII
BAHASA PEMROGRAMAN AVR

Sekolah : SMK NEGERI 1 SULSEL


Program Keahlian : Teknik Elektronika
Kompetensi Keahlian : Teknik Elektronika Industri
Mata Pelajaran : Mikroprosesor dan Mikrokontroler
Kelas/Semester : XI / 2

A. Kompetensi Dasar
3.13 Menganalisis bahasa pemrograman mikrokontroler

B. Indikator Pencapaian Kompetensi


3.13.1 Menjelaskan struktur penulisan bahasa pemrograman
3.13.2 Membedakan macam-macam tipe data bahasa
pemrograman
3.13.3 Menjelaskan cara mendeklarasikan variabel bahasa
pemrograman
3.13.4 Menjelaskan cara mendeklarasikan konstanta bahasa
pemrograman
3.13.5 Menentukan cara mendeklarasikan pernyataan bahasa
pemrograman
3.13.6 Mengklasifikasi macam-macam operator bahasa
pemrograman
3.13.7 Menentukan cara mendeklarasikan operasi percabangan
bahasa pemrograman
3.13.8 Mencontohkan cara mendeklarasikan operasi perulangan
bahasa pemrograman
3.13.9 Mengkonsepkan cara mendeklarasikan fungsi bahasa
pemrograman
3.13.10 Menganalisis program bahasa pemrograman
mikrokontroler

C. Tujuan Pembelajaran
Setelah melakukan pembelajaran mikroprosesor dan
mikrokontroler diharapkan Peserta didik mampu
13. Menjelaskan struktur penulisan bahasa pemrograman
Mikroprosesor Dan Mikrokontroller 157
14. Membedakan macam-macam tipe data bahasa pemrograman
15. Menjelaskan cara mendeklarasikan variabel bahasa
pemrograman
16. Menjelaskan cara mendeklarasikan konstanta bahasa
pemrograman
17. Menentukan cara mendeklarasikan pernyataan bahasa
pemrograman
18. Mengklasifikasi macam-macam operator bahasa pemrograman
19. Menentukan cara mendeklarasikan operasi
percabanganpemrograman
20. Mencontohkan cara mendeklarasikan operasi pengulangan
bahasa pemrograman
21. Mengkonsepkan cara mendeklarasikan operasi fungsi bahasa
pemrograman
22. Menganalisis program bahasa pemrograman mikrokontroler

D. Uraian Materi
Bahasa C luas digunakan untuk pemrograman berbagai
jenis perangkat, termasuk mikrokontroler, khususnya seri AVR dari
Atmel. Ada yang menyebutkan bahwa bahasa ini merupakan High
Level Language sisanya menyebut sebagai Midle Level Language.
Dengan demikian seorang programmer dapat menuangkan
(menuliskan) algoritmanya dengan mudah.
12.1 Struktur Penulisan Bahasa C
Perhatikan struktur penulisan dalam Bahasa C sebagai berikut.
#include < [library1.h] > // Opsional
#define [nama1] [nilai]; // Opsional
[global variables] // Opsional
[functions] // Opsional
int main(void) // Program Utama
{
[Deklarasi local variable/constant]
[Isi Program Utama]
}

158 Mikroprosessor Dan Mikrokontroller


Keterangan:
 Opsional artinya boleh ditulis boleh tidak, menyesuaikan
kebutuhan – tuliskan pustaka apa saja yang digunakan dan
lain sebagainya
 Penulisan variabel dilakukan di awal agar aman bisa
digunakan sepanjang program, demikian juga dengan
deklarasi fungsi-fungsi yang terlibat
 Silahkan ikuti (baca) terus tutorial ini untuk melihat contoh-
contoh program di bagian lain tutorial ini.

12.2 Tipe-tipe data dalam Bahasa C


Dalam pemrograman mikrokontroler ATMega8535
digunakan software untuk compiler CodeVisionAVR, adapun tipe
data yang dapat dikenali oleh compiler CodeVisionAVR terlihat
pada tabel 12.1.
Tabel 12.1. Tipe Data
Tipe Data Ukuran Jangkauan Nilai
Bit 1 bit 0 atau 1
Char 1 bit -128 s/d 127
Unsigned Char 1 bit 0 s/d 255
Signed Char 1 bit -128 s/d 127
Int 2 bit -32.768 s/d 32.767
Short Int 2 bit -32.768 s/d 32.767
Unsigned Int 2 bit 0 s/d 65.535
Signed Ind 2 bit -32.768 s/d 32.767
Long Int 4 bit -2.147.483.648 s/d 2.147.483.647
Unsigned Long Int 4 bit 0 s/d 4.294.967.295
Signed Long Int 4 bit -2.147.483.648 s/d 2.147.483.647
Float 4 bit 1.2*10-38 s/d 3.4*10+38
Double 4 bit -38 +38

Mikroprosesor Dan Mikrokontroller 159


12.3 Variabel
Variabel merupakan sebuah tempat untuk menyimpan data di
dalam memori yang isinya dapat diubah-ubah. Pendeklarasian
konstanta :
Tipe_data nama_variabel = nilai;

Contoh :
char pinA=0x20;

Variabel dibagi menjadi dua bagian, yaitu:


a. Variabel Global
Variabel Global adalah variabel yang dapat dikenali oleh semua
fungsi yang ada di dalam program. Variabel global selalu
dideklarasikan di luar fungsi.
Contoh:
char DDA;
b. Variabel Lokal
Variabel Lokal adalah variabel yang hanya dapat dikenali oleh
fungsi tertentu. Untuk pendeklarasian variabel lokal
dideklarasikan hanya di dalam fungsi tertentu.
Contoh:
void main(void)
{
Char PORTB=0xFF;
}

12.4 Konstanta
Konstanta merupakan sebuah tempat untuk menyimpan data di
dalam memori dimana data dari konstanta tidak dapat diubah.
Pendeklarasi konstanta :
Const tipe_data nama_konstanta = nilai
Contoh :
Const char PINB=0xFF;

12.5 Pernyataan/Statement
Pernyataan adalah satu buah atau satu blok intruksi lengkap yang
berdiri sendiri. Contoh pernyataan:
160 Mikroprosessor Dan Mikrokontroller
PORTA=0xF0;
Contoh blok pernyataan:
{
PORTB=0x00;
PORTC=0xFF; }
12.6 Operator
a. Operator Aritmatika
Operator merupakan simbol khusus yang merepresentasikan
perhitungan sederhana seperti penambahan dan perkalian. Nilai
yang digunakan oleh operator disebut operand. Ekspresi merupakan
kombinasi dari operand dan operator. Dalam sebuah eksekusi
program, suatu ekspresi akan dievaluasi sehingga menghasilkan
suatu nilai tunggal. Operator aritmatika adalah operator yang
digunakan untuk melakukan perhitungan aritmatika. Operator
aritmatika tersebut dapat dilihat pada tabel 12.2.

Tabel 12.2. Operator aritmatika


Operator Keterangan
+ Operator untuk operasi penjumlahan
- Operator untuk operasi pengurangan
* Operator untuk operasi perkalian
I Operator untuk operasi pembagian
% Operator untuk operasi sisa pembagian

b. Operator Logika
Operator logika digunakan untuk membentuk suatu logika atau dua
buah kondisi atau lebih. Yang termasuk operator logika terlihat
pada tabel 12.3.

Tabel 12.3 Operator Logika


Operator Keterangan
&& Operator untuk logika AND
| Operator untuk logika OR
! Operator untuk logika NOT

Mikroprosesor Dan Mikrokontroller 161


12.7 Percabangan
a. Pernyataan If
Pernyataan if digunakan untuk melakukan pengambilan
keputusan terhadap dua buah kemungkinan yaitu mengerjakan
suatu blok pernyataan atau tidak, jika dan hanya jika
persyaratannya terpenuhi. Bentuk pernyataan if adalah sebagai
berikut:
If (kondisi)
{
// blok pernyataan yang dieksekusi jika kondisi
benar
}
b. Pernyataan If ... Else
Pernyataan If ... else digunakan untuk meakukan
pengambilan keputusan terhadap dua buah kemungkinan, kedua
kemungkinan tersebt adalah mengerjakan pernyataan satu atau
mengerjakan pernyataan yang lain. Bentuk umum pernyataan If ...
Else adalah sebagai berikut:
If (kondisi
{
//blok pernyataan 1
}
else
{
// blok pernyataan 2
}

c. Pernyataan If Bersarang
Pernyataan if bersarang (nested If) adalah pernyataan if
maupun if ... else dimana di dalam blok pernyataan yang akan
dikerjakan terdapat pernyataan if atau if ... else lagi.
Bentuk umum pernyataan if bersarang:
If (kondisi_1)
{
If (kondisi_2)
{
//blok pernyataan
}

162 Mikroprosessor Dan Mikrokontroller


} else
{
If (kondisi_3)
{
// pernyataan
}
}

d. Pernyataan Switch
Pernyataan switch digunakan untuk melakukan
pengambilan keputusan terhadap banyak kemungkinan. Bentuk
umumdari pernyataan switch adalah sebagai berikut:
switch (ekspresi)
{
case nilai_1:pernyataan_1; break; case
nilai_2:pernyataan_2; break; .....
default : pernyataan_default; break;
}

12.8 Perulangan
a. Pernyataan While
Pernyataan while digunakan untuk pengulangan sebuah
pernyataan atau blok pernyataan secara terus menerus selama
kondisi tertentu masih terpenuhi. Bentuk umum pernyataan while
adalah sebagai berikut:
while (kondisi)
{
//pernyataan atau blok pernyataan
}

b. Pernyataan Do ... While


Pernyataan Do ... While digunakan sama seperti pengunaan
pernyataan dari while. Bentuk umum dari pernyataan Do ... While
adalah sebagai berikut:
do {
//pernyataan atau blok pernyataan
} while (kondisi)

Mikroprosesor Dan Mikrokontroller 163


Yang membedakan peryataan while dengan do ... while
adalah bahwa pada pernyataan while pengetesan kondisi dilakukan
terlebih dahulu, jika kondisi terpenuhi maka akan dilaksanakan
tetapi apabila tidak terpenuhi maka tidak akan pernah ada
pelaksanaan dari pernyataan. Sedangkan pernyataan do ... while,
blok pernyataan dikerjakan terlebih dahulu setelah itu baru
dilakukan pengetesan kondisi jadi pernyataan yang ada minimal
akan dikerjakan sekali walaupun kondisinya salah.
c. Pernyataan For
Pernyataan for digunakan juga untuk melakukan
pngulangan sebuah pernyataan atau blok pernyataan, tetapi
beberapa kali jumlah pengulangannya dapat ditentukan secara lebih
spesifik. Bentuk pernyataan for adalh sebagai berikut:
for (nilai_awal ; kondisi ; perubahan)
{
// pernyataan atau blok pernyataan
}
nilai_awal adalah nilai inisial awal sebuah variabel yang
didefinisikan terlebih dahulu untuk menetukan nilai variabel
pertama kali sebelum pengulangan. Kondisi merupakan pernyataan
pengetesan untuk mengontrol pengulangan, jika pernyataan kondisi
terpenuhi maka pernyataan akan diulang terus sampai pernyataan
kondisi tidak terpenuhi. Perubahan adalah pernyataan yang
digunakan untuk melakukan perubahan nilai variabel baik naik
maupun turun setiap kali perulangan dilakukan.

12.9 Fungsi
Fungsi adalah kumpulan pernyataan-pernyataan yang
dikemas dalam satu wadah kemudian diberi nama dan selanjutnya
dapat dipangil beberapa kali dalam sebuah program. Fungsi dapat
digunakan untuk memecah logika program menjadi lebih kecil
sehingga akan lebih memudahkan untuk mengelola dan memahami
alur logika program pada saat menulis ataupun mengoreksi
program. Fungsi dapat dibedakan berdasarkan hasil fungsi tersebut
menjadi dua, yaitu:
a. Fungsi dengan nilai balik

164 Mikroprosessor Dan Mikrokontroller


Fungsi ini akan menghasilkan data keluaran baru setelah
fungsi ini dipanggil/ dieksekusi oleh program. Bentuk umum dari
fungsi ini adalah sebagai berikut:
tipe_data nama_fungsi (tipe_data_1 parameter_1,
...)
{
Pernyaaan_1; Pernyataan_2; ......
}
Contoh :
int jarak (int data_1, int data_2)
{
hasil = data_1 / data_2; return hasil;
}
b. Fungsi tanpa nilai balik
Fungsi dapat di sebut dengan fungsi tanpa nilai balik jika
fungsi tersebut apabila dipangil tidak menghasilkan nilai. Bentuk
umum dari fungsi ini adalah sebagai berikut:
tipe_data nama_fungsi (tipe_data_1 parameter_1,
....)
{
Pernyaaan_1; Pernyataan_2; ......
}
Contoh : void port (char A, char B, char C, char
D)
{
DDRA=A; DDRB=B; DDRC=C; DDRD=D;
}

12.10 Menyusun Progam dengan Code Vision AVR


Software CodeVisionAVR adalah salah satu software yang
dapat gunakan untuk belajar memprogram mikrokontroler AVR.
CodeVisionAVR adalah merupakan software IDE (integrated
development environment), karena dalam software tersebut telah
dilengkapi dengan text (source code) editor dan compiler. Untuk
dapat mengikuti tutorial ini, pastikan software CodeVisionVAR
telah ter-install di komputer anda.
Berikut ini adalah langkah-langkah menyusun program dengan
software Code Vision AVR:

Mikroprosesor Dan Mikrokontroller 165


Langkah 1: Buka software CodeVisionAVR
Start>>All Program>>CodeVisionAVR>> CodeVisionAVR C
Compiler. Atau dapat juga dengan double click icon software
CodeVisionAVR yang tersedia di desktop.

Gambar 12.1 Icon shortcut software CodeVisionAVR

Gambar 12.2 Tampilan awal software CodeVisionAVR

Langkah 2: Membuat “Project”


Pilih opsi toolbar File>>New kemudian pada File Type pilih
“Project”.

Gambar 12.3 Jendela “Creat New File”

166 Mikroprosessor Dan Mikrokontroller


Selanjutnya akan muncul jendela konfirmasi, apakah kita akan
menggunakan CodeWizardAVR ataukah tidak. Kita pilih “Yes”
karena kita akan menggunakannya dalam tutorial ini.

Gambar 12.4 Jendela “Confirm”


Berikutnya akan muncul jendela pengaturan fitur-
fitur/konfigurasi project dalam mikrokontroler AVR, seperti Ports,
Chip, USART, I2C, Analog Comparator, dan sebagainya. Perlu
diketahui bahwa konfigurasi fitur-fitur yang tersedia, tidaklah harus
kesemuanya diatur ulang, namun cukup lakukan pengaturan untuk
fitur-fitur yang dibutuhkan saja. Berikut ini adalah beberapa
tampilan jendela pengaturan fitur-fitur mikrokontroler AVR dengan
tool CodeWizardAVR dalam software CodeVisionAVR.

Gambar 12.5 Jendela pengaturan fitur “port” dan “chip”

Mikroprosesor Dan Mikrokontroller 167


Gambar 12.6 Jendela pengaturan fitur “timer” dan “LCD”

Gambar 12.7 Jendela pengaturan fitur “ADC” dan “SPI”


168 Mikroprosessor Dan Mikrokontroller
Gambar 12.8 Jendela pengaturan fitur “I2C”

Jika telah selesai maka klik File>>Generate, Save and Exit.

Gambar 12.9 Tampilan File>>Generate, Save and Exit

Mikroprosesor Dan Mikrokontroller 169


Pada proses penyimpanan (save) file akan diminta
menyimpan tiga jenis file dengan ektensi yang berbeda. Beri nama
file source(*.c), file project (*.prj), dan file codewizard (*cwp)
dengan nama yang anda senangi. Penulis sarankan, beri nama
ketiga file tersebut dengan nama yang sama, hal ini untuk
memudahkan dalam mencari file dalam folder tempat kita
menyimpan file tersebut apabila kita sudah banyak menyimpan
file-file project menggunakan software codeVisionAAVR.

Gambar 12.10 Jendela ‘save’ file source(*.c)

Gambar 12.11 Jendela ‘save’ file project (*.prj)

170 Mikroprosessor Dan Mikrokontroller


Gambar 12.12 Jendela ‘save’ file codewizard (*cwp)

Setelah selesai maka akan muncul jendela text-editor program


seperti gambar berikut ini.

Gambar 12.13 Jendela text-editor program lengkap dengan hasil


pengaturan CodeWizardAVR

Mikroprosesor Dan Mikrokontroller 171


Langkah 3: Melengkapi kode/program.
Dengan mengkofigurasi project pada langkah sebelumnya, maka
kita tinggal melengkapi dengan kode-kode (syntax) program yang
akan kita perlukan.

Gambar 12.14 Program yang telah dilengkapi atau di-edit

Langkah 4: Compile dan assembly


Jika program sudah selesai dibuat maka langkah selanjutnya adalah
mengkompilasi (compile) program tersebut sehingga didapatkan
file-file baru yang kita butuhkan. Langkahnya adalah pilih
Project>>compile atau cukup tekan tombol shortcut F9. Jika dalam
program masih ada kesalahan, maka akan muncul pesan dan
peringatan error. Jika itu terjadi, perbaiki terlebih dahulu keselahan
yang terjadi kemudian lakukan kompilasi kembali. Jika sudah tidak

172 Mikroprosessor Dan Mikrokontroller


ada kesalahan lagi selanjutnya pilih Project>>Make atau tekan
shortcut Shift+F9.

Gambar 12.15 Jendela Kompilasi program *.c ke *.hex

Gambar 12.16 Jendela informasi kompilasi (compile) program dan


assembly program

Jika langkah ini berhasil maka akan diperoleh beberapa file baru,
salah satunya adalah file berekstensi *hex (heksa) yang akan kita

Mikroprosesor Dan Mikrokontroller 173


download kedalam IC mikrokontroler AVR. Berikut ini hasil
kompilasi program dalam file *.hex.

Gambar 12.17 File hexadecimal (*.hex) hasil kompilasi program

E. Rangkuman
1. Struktur penulisan bahasa pemrograman bahasa C dapat
terusun dari sebuah tubuh program yang dapat terdiri dari
sebuah induk program dan satu atau lebih anak program.
Anak program memiliki fungsi untuk mengerjakan satu
blok program yang sering digunakan secara berulang-ulang.
174 Mikroprosessor Dan Mikrokontroller
Anak program akan diakses oleh induk program sesuai
dengan kebutuhan akan sub bagian program tersebut.
2. Dalam pemrograman mikrokontroler ATMega8535
digunakan software untuk compiler CodeVisionAVR,
adapun tipe data yang dapat dikenali oleh compiler
CodeVisionAVR adalah bit,char, unsigned char, signed
char, int, short int, unsigned int, signed int, long int,
unsigned long int, signed long int, float, dan double.
3. Variabel meupakan sebuah tempat untuk menyimpan
data di dalam memori yang isinya dapat diubah-ubah.
Pendeklarasian konstanta :
Tipe_data nama_variabel = nilai
4. Konstanta merupakan sebuah tempat untuk menyimpan data
di dalam memori dimana data dari konstanta tidak dapat
diubah. Pendeklarasi konstanta :
Const tipe_data nama_konstanta = nilai
5. Pernyataan adalah satu buah atau satu blok intruksi lengkap
yang berdiri sendiri. Contoh pernyataan:
PORTA=0xF0;
6. Operator merupakan simbol khusus yang merepresentasikan
perhitungan sederhana seperti penambahan dan perkalian.
Nilai yang digunakan oleh operator disebut operand.
Ekspresi merupakan kombinasi dari operand dan operator.
Dalam sebuah eksekusi program, suatu ekspresi akan
dievaluasi sehingga menghasilkan suatu nilai tunggal.
7. Operator logika digunakan untuk membentuk suatu logika
atau dua buah kondisi atau lebih.
8. Struktur perulangan digunakan untuk mengeksekusi barisan
perintah secara berulang sesuai dengan kondisi atau jumlah
perulangan yang dipersyaratkan.
9. Fungsi adalah kumpulan pernyataan-pernyataan yang
dikemas dalam satu wadah kemudian diberi nama dan
selanjutnya dapat dipangil beberapa kali dalam sebuah
program. Fungsi dapat digunakan untuk memecah logika
program menjadi lebih kecil sehingga akan lebih

Mikroprosesor Dan Mikrokontroller 175


memudahkan untuk mengelola dan memahami alur logika
program pada saat menulis ataupun mengoreksi program.
10. Cara untuk membuat program pada code vision AVR
adalah sebagai berikut: (a) pilih file/new/project/ok/yes/at
90 at tiny at mega, fpslic/ok, (b) tentukan chip dengan
atmega 8535, (c) clock: 11.059000, (d) set port yang
dijadikan output, (e) pilih file/generate save exit, (f) tulis
nama compiler/project file/code wizard avr/save* *nama
harus sama

F. Soal Latihan
1. Jelaskan struktur penulisan bahasa pemrograman yang
benar!
2. Bagaimana perbedaan tipe data integer dan float?
3. Jelaskan cara mendeklarasikan variabel bahasa
pemrograman!
4. Jelaskan cara mendeklarasikan konstanta bahasa
pemrograman!
5. Tentukan cara mendeklarasikan pernyataan bahasa
pemrograman!
6. Klasifikasikan macam-macam operator bahasa
pemrograman!
7. Tentukan cara mendeklarasikan opersi percabangan If Else
!
8. Bagaimana contoh pendeklarasian operasi perulangan
bahasa pemrograman!
9. Bagaimana konsep pendeklarasian fungsi bahasa
pemrograman!
10. Perhatikan gambar output led dari sebuah program yang
dibuat ada software Code Vision AVR, buatlah program
dengan output seperti gambar di bawah ini dengan PORTC
sebagai output!

176 Mikroprosessor Dan Mikrokontroller


BAB XIII
PROSES DEBUGGING PADA PEMROGRAMAN
MIKROKONTROLER

A. KOMPETENSI DASAR
3.14 Menerapkan proses debugging pemrograman
mikrokontroler.
4.14 Melaksanakan proses debugging pemrograman
mikrokontroler.

B. INDIKATOR PENCAPAIAN KOMPETENSI


Indikator –KI 3 (Pengetahuan)
3.14.1 Menjelaskan debugging.
3.14.2 Mengidentifikasi proses debugging.
3.14.3 Menjelaskan debugger.
3.14.4 Mengidentifikasi tools dalam debugging
pemrograman mikrokontroler.
Indikator –KI 4 (Keterampilan)
4.14.1 Melakukan proses debugging pemrograman
mikrokontroler.

C. TUJUAN
1. Setelah pembelajaran, peserta didik dapat menjelaskan
debugging dengan baik dan benar.
2. Setelah pembelajaran, peserta didik dapat
mengidentifikasi proses debugging pemrograman
mikrokontroler dengan baik dan benar.
3. Setelah pembelajaran, peserta didik dapat menjelaskan
debugger dengan baik dan benar
4. Setelah pembelajaran, peserta didik dapat
mengidentifikasi tools dalam debugging pemrograman
mikrokontroler dengan baik dan benar.
5. Setelah pembelajaran, peserta didik dapat melaksanakan
proses debugging dengan baik dan benar.

Mikroprosesor Dan Mikrokontroller 177


D. MATERI
13.1 Debugging
Bug dengan terjemahan langsung ke bahasa Indonesia
adalah serangga atau kutu. Bug merupakan suatu kesalahan desain
pada suatu perangkat keras komputer atau perangkat lunak
komputer yang menyebabkan peralatan atau program itu tidak
berfungsi semestinya. Bug umumnya lebih umum dalam dunia
perangkat lunak dibandingkan dengan perangkat keras.Bug adalah
segala macam cacat dalam program. Bisa saja cacatnya hanya
berupa tampilan yang sedikit salah, bisa crash, bisa berupa bug
security (harusnya hanya bisa diakses user X, bisa diakses user Y),
kadang bug tertentu tidak muncul sampai kasus ekstreem (misalnya
jika jumlah user banyak maka akan out of memory karena ada
memory leak).Sumber bug bisa banyak, dari mulai salah design,
salah implementasi, salah konfigurasi, dsb. Sebagai programmer,
bug yang akan saya bahas adalah dari sisi implementasi (coding).
Biasanya seorang programmer akan belajar sedikit demi sedkit
jenis bug dari pengalaman. Semakin banyak coding, semakin
banyak salah, semakin banyak belajar.
Kenapa dinamakan bug?
Tahun 1945 sewaktu ukuran komputer masih sebesar
kamar, pihak militer Amerika Serikat menggunakan komputer yang
bernama “Mark 1”. Suatu hari komputer ini tidak berfungsi dengan
semestinya, setelah komputer itu diperiksa ternyata ada suatu
bagian perangkat keras di mana terdapat serangga yang tersangkut.
Setelah serangga itu diangkat dari perangkat keras, komputer dapat
berfungsi dengan baik. Maka sejak saat itu kata bug lekat dengan
masalah-masalah pada komputer. Debugging adalah proses
menghilangkan bug dari suatu program.
Pengujian perangkat lunak adalah proses yang dapat
direncanakan dan ditentukan secara sistematis. Desain test case
dapat dilakukan, strategi dapat ditentukan, dan hasil dapat
dievaluasi berdasarkan harapan-harapan yang ditentukan
sebelumnya.
Debugging terjadi sebagai akibat dari pengujian yang
berhasil. Jika test case mengungkap kesalahan, maka debugging
178 Mikroprosessor Dan Mikrokontroller
adalah proses yang menghasilkan penghilangan kesalahan.
Perekayasa perangkat lunak yang mengevaluasi hasil suatu
pengujian sering dihadapkan pada indikasi “simtomatis” dari suatu
masalah pernagkat lunak, yaitu bahwa manisfestasi eksternaldari
kesalahan dan penyebab internal kesalahan dapat tidak memiliki
hubungan yang jelas satu dengan lainnya. Proses mental yang
dipahami secara buruk yang menghubungkan sebuah symptom
dengan suatu penyebab disebut debugging.
Debugging adalah sebuah metode yang dilakukan oleh para
pemrogram dan pengembang perangkat lunak untuk mencari dan
mengurangi bug, atau kerusakan di dalam sebuah program
komputer atau perangkat keras sehingga perangkat tersebut bekerja
sesuai dengan harapan. Debugging cenderung lebih rumit ketika
beberapa subsistem lainnya terikat dengan ketat dengannya,
mengingat sebuah perubahan di satu sisi, mungkin dapat
menyebabkan munculnya bug lain di dalam subsistem lainnya.
Beberapa jenis bug sangat umum di semua bahasa
(kesalahan logika, kesalahan aritmatika, dsb), tapi bug tertentu
hanya muncul di bahasa tertentu atau jika menggunakan framework
tertentu. Jadi pengalaman coding tetap merupakan guru yang
utama.
Contoh bug yang sederhana adalah lupa menginisialisasi
atau mereset variabel. Biasanya jika program berjalan benar
pertama kali, lalu ketika diulangi tidak benar hasilnya (dan benar
lagi ketika aplikasi direstart) maka penyebabnya adalah lupa
mereset variabel. Contoh lain adalah menggunakan try catch secara
malas, misalnya dengan membungkus seluruh fungsi dalam satu try
except. Dengan cara ini, maka tidak jelas apa sumber error di
sesungguhnya. Contoh bug yang spesifik terhadap bahasa adalah
bug manajemen memori di C. Kesalahan mengakses memori di C
sangat mudah terjadi dan biasanya akan menyebabkan crash.

Mikroprosesor Dan Mikrokontroller 179


13.1.1 Source Control
Jangan heran juga kalau kadang bug baru muncul karena
hal sepele, misalnya source code berubah karena keyboard
tersenggol. Msalnya sebuah konstanta 1000 terdelete angka nol
terakhirnya (atau bertambah satu), atau tanda “lebih besar sama
dengan” terhapus menjadi lebih besar saja. Di sini penggunakan
version control (yang populer saat ini: Git) sangat berguna, Anda
bisa mereview segala perubahan pada source code. Source control
juga memungkinkan melihat sejarah perubahan secara keseluruhan.
Bagi security researcher, ini sering menjadi ladang untuk mencari
bug baru di software open source. Jika ada yang menambahkan
fungsionalitas baru, maka kemungkinan ada bug baru yang muncul.
13.1.2 Unit Testing
Mencari dan membetulkan bug itu susah (baik bug sendiri
maupun orang lain), jadi hal pertama yang perlu dicoba adalah:
menghindari bug. Hal yang paling dasar adalah: perlu memecah
program menjadi unit yang kecil (unit di sini berupa
fungsi/kelas/method) dan menguji tiap bagian kecil tersebut.
Istilahnya untuk ini adalah unit testing.
Kita bisa menggunakan library tertentu untuk unit testing,
atau panggil saja fungsi yang akan ditest.Saya akan
mengasumsikan Anda minimal sudah bisa membuat aplikasi yang
bisa dicompile dan bisa dijalankan. Jika Anda masih salah syntax,
salah opsi untuk mengcompile, dsb, sebaiknya ada mulai lagi dari
nol dan mulai perlahan.Dengan memecah program menjadi unit
kecil dan mengujinya satu persatu, maka kesalahan umumnya bisa
dilokalisasi: fungsi X ini masih salah. Pertanyaan berikutnya
adalah: apa salahnya?
13.1.3 Print Debugging
Lalu berikutnya cara paling primitif dalam debugging
adalah dengan menuliskan nilai saat ini menggunakan: “print”
“echo”, “printf” atau sejenisnya. Contoh sederhana, misalnya kita
punya conditional di Python seperti ini (melakukan regular
expression matching):
if (re.search(PATTERN, x)): # do something
Lalu bagian aksi tidak pernah dieksekusi, atau cuma
dieksekusi beberapa kali. Apakah Anda yakin patternnya benar?
180 Mikroprosessor Dan Mikrokontroller
Coba print sebelumnya, jangan-jangan regexnya masih salah untuk
input tertentu:
print "Input ", x, "Match result ", re.search(PATTERN, x)
Tentunya tidak semua aplikasi bisa punya layar yang
menampilkan teks itu (contohnya Game, atau aplikasi grafik lain).
Biasanya cara yang lebih baik adalah menggunakan library untuk
logging yang saat ini sudah built in di banyak bahasa (misalnya ada
modul logger di Python, java.util.logging di Java, dsb). Output
logging bisa dikonfigurasi sedetail apa, dan outputnya ke mana (ke
file, ke terminal, ke jaringan, dsb).
Logging tidak hanya untuk proses development. Banyak
aplikasi menyediakan fungsi logging untuk mencatat berbagai hal
yang berhubungan dengan aplikasi untuk mendebug jika ada
masalah ketika dijalankan. Contohnya aplikasi bisa menampilkan
di lognya: “berusaha melakukan koneksi database ke server XX
port YY dengan username ZZ”, yang bisa diikuti dengan “Koneksi
berhasil”, atau “Koneksi Gagal, pesan error: invalid username or
password”.

13.2 Proses Debugging


Debugging bukan merupakan pengujian, tetapi selalu terjadi
sebagai bagian akibat dari pengujian. Proses debungging dimulai
dengan eksekusi terhadap suatu test case. Hasilnya dinilai, dan
ditemukan kurangnya hubungan antara harapan dan yang
sesungguhnya. Dalam banyak kasus, data yang tidak berkaitan
merupakan gejala dari suatu penyebab pokok tetapi masih
tersembunyi, sehingga perlu ada koreksi kesalahan.
Proses debugging akan selalu memiliki salah satu dari dua
hasil akhir berikut:
a. Penyebab akan ditemukan, dikoreksi, dan dihilangkan, atau
b. Penyebab tidak akan ditemukan.
13.2.1 Karakteristik Bug
Dalam kasus yang terakhir, orang yang melakukan
debugging mungkin mencurigai suatu penyebab, mendesainsuatu
test case untuk membantu kecurigaannya, dan bekerja untuk
koreksi kesalahan dengan gaya yang iterative.
Beberapa karakteristik bug memberi kunci :
Mikroprosesor Dan Mikrokontroller 181
a. Gejala dan penyebab dapat jauh secara geografis, dimana
gejala dapat muncul didalam satu bagian dari suatu program,
sementara penyebab dapat ditempatkan pada suatu sisi yang
terlepas jauh.
b. Gejala dapat hilang (kadang-kadang) ketika kesalahan yang
lain dibetulkan.
c. Gejala dapat benar-benar disebabkan oleh sesuatu yang tidak
salah (misalnya pembulatan yang tidak akurat).
d. Simpton dapat disebabkan oleh kesalahan manusia yang tidak
dapat dengan mudah ditelusuri.
e. Gejala dapat merupakan hasil dari masalah timing, dan bukan
dari masalah pemrosesan.
f. Mungkin sulit untuk mereproduksi kondisi input secara akurat
(misalnya aplikasi real time dimana pengurutan input tidak
ditentukan).
g. Gejala dapat sebentar-sebentar. Hal ini sangat umum pada
system yang embedded yang merangkai perangkat lunak dan
perangkat keras yang tidak mungkin dilepaskan.
h. Gejala dapat berhubungan dengan penyebab yang
didistribusikan melewati sejumlah tugas yang bekerja pada
prosesor yang berbeda.
Selama debugging, kita menemukan kesalahan-kesalahan
mulai dari gangguan yang halus (misal format output yang tidak
betul) sampai katrastropis (misalnya kegagalan system yang
menyebabkan kerusakan fisik atau ekonomis). Sebagai akibat dari
peningkatan keslahan, jumlah tekanan untuk menemukan kesalahan
juga bertambah. Sering kali tekanan memaksa seorang pengembang
perangkat lunak untuk membetulkan keslahan dan pada saat yang
sama memunculkan lagi dua kesalahan baru.
Pertimbangan Psikologis
Sayangnya muncul banyak bukti bahwa kekuatan
debugging adalah sifat bawaan manusia. Banyak orang yang cakap
dalam hal ini, sementara banyak juga yang tidak. Menanggapi
aspek manusia dari debugging. Shneiderman [SHN80] menyatakan
:
Debugging merupakan salah satu dari berbagai bagian
pemrograman yang membuat lebih frustasi. Debugging memiliki
182 Mikroprosessor Dan Mikrokontroller
elemen pemecahan masalah atau pengganggu otak, yang bersama
dengan penghindaran kesadaran bahwa Anda melakukan suatu
kesalahan. Kekhawatiran yang meningkat dan keengganan untuk
menerima, kesalahan akan meningkatkan kesulitan tugas.
Sayangnya, ada keluhan yang sangat mendalam mengenai
pembebasan dan pengurangan ketegangan ketika pada akhirnya
bug dikoreksi.
13.2.2 Pendekatan Dalam Debugging
Meskipun mungkin sulit untuk mempelajari debugging,
sejumlah pendekatan terhadap masalah tersebut dapat diusulkan.
Kita akan melihat dalam sub bab selanjutnya.
Tanpa memperhatikan pendekatan yang diambil, debugging
memiliki satu sasaran yang diabaikan, untuk menemukan dan
mengkoreksi penyebab kesalahan perangkat lunak. Sasaran tersebut
direalisasi dengan suatu kombinasi evaluasi yang sistematis, intuisi,
dan keberuntungan.
Bradley (BRA85) menggambarkan pendekatan Debugging
dengan cara berikut :
Debugging adalah sebuah aplikasi langsung dari metode
keilmuan yang telah dikembangkan selama 2500 tahun. Dasar dari
debugging adalah meletakkan sumber-sumber masalah (penyebab)
dengan partisi biner melalui hipotesis kerja yang memperkirakan
nilai-nilai baru yang akan diuji.
Ambillah contoh non-perangkat lunak sederhana, yaitu :
Lampu dirumah saya tidak bekerja. Bila tidak ada yang
bekerja didalam rumah itu, penyebabnya tentu pada pemutus
rangkaian utama atau sebab dari luar. Saya melihat sekeliling untuk
melihat apakah lampu para tetangga juga mati. Saya memasukkan
lampu yang dicurigai kedalam soket yang bekerja dan menyelidiki
lampu rangkaian yang dicurigai. Begitulah berbagai pilihan
hipotesa dan pengujian.
Secara umum, tiga kategori pendekatan debugging dapat
diusulkan (MYE79):
1. Gaya yang kasar (Brute force)
Kategori debugging brute force mungkin merupakan
yang paling umum dan metode yang paling efisien untuk
mengisolasi penyebab kesalahan perangkat lunak. Kita
Mikroprosesor Dan Mikrokontroller 183
mengaplikasikan metode debugging brute force bila semua
yang lain telah gagal. Dengan menggunakan filosofi
”biarkan komputer menemukan kesalahan”, tempat sampah
memori dipakai, penelusuran runtime dilakukan, dan
program dibebani dengan statemen WRITE. Kita
mengharapkan bahwa dimanapun didalam rawa informasi
yang diproduksi, kita akan menemukan suatu kunci yang
akan membawa kita kepada penyebab kesalahan. Meskipun
banyaknya informasi yang dihasilkan pada akhirnya akan
membawa kita meraih sukses, lebih sering dia
menyebabkan kita menghambur-hamburkan usaha dan
waktu. Kita harus memikirkannya terlebih dahulu.
2. Penelusuran balik (backtracking)
Backtracking adalah pendekatan debugging yang
sangat umum yang dapat digunakan secara sukses didalam
program yang kecil. Mulai pada sisi dimana suatu gejala
diungkap, kode sumber ditelusuri balik (secara manual)
samapai sisi penyebab ditemukan. Sayangnya, bila jumlah
baris sumber bertambah, maka jumlah jalur balik potensial
dapat sangat banyak.
3. Eliminasi penyebab
Cause elimination dimanisfestasikan oleh induksi
atau deduksi serta mengawali konsep partisi biner. Data
yang berhubungan dengan kejadian kesalahan
dikumpulkan untuk mengisolasi penyebab potensial.
Hipotesis penyebab dibuat dan data digunakan untuk
membuktikan penolakan hipotesis tersebut. Sebagai
alternatif, daftar semua penyebab yang mungkin
dikembangkan dan dilakukan pengujian untuk
mengeliminasi masing-masing kesalahan. Jika pengujian
awal menunjukkan bahwa suatu hipotesis penyebab
memberikan gambaran hasil yang jelas, maka data itu
disaring sebagai usaha untuk mengisolasi bug.
Masing-masing pendekatan debugging tersebut dapat
ditambah dengan piranti debugging. Kita dapat mengaplikasikan
berbagai kompiler debugging yang luas, bantuan debugging yang
dinamis (tracer), generator test case, ruang sisa memori dan peta
184 Mikroprosessor Dan Mikrokontroller
cross-reference. Namun piranti bukanlah pengganti bagi evaluasi
yang berhati-hati yang didasarkan atas dokumen desain perangkat
lunak yang lengkap dan kode sumber yang jelas.
Sekali bug ditemukan, bug harus dibetulkan. Tetapi seperti
telah kita catat, koreksi terhadap suatu bug dapat memunculkan
kesalahan lain sehingga lebih banyak merugikan daripada
menguntungkan.
Van Vleck (FAN89) mengusulkan tiga pertanyaan
sederhana yang harus diajukan kepada perekayasa perangkat lunak
sebelum melakukan koreksi yang menghilangkan penyebab suatu
bug, yaitu :
1. Apakah penyebab bug direproduksi didalam bagian lain
program tersebut?
Dalam berbagai situasi, kesalahan program
disebabkan oleh sebuah contoh logika yang keliru yang dapat
dibuat ulang ditempat lain. Pertimbangan eksplisit dari contoh
logika tersebut akan menghasilkan penemuan kesalahan yang
lain.
3. Apa ”bug selanjutnya,” yang akan dimunculkan oleh
perbaikan yang akan dibuat?
Sebelum koreksi dibuat, kode sumber (atau lebih
baik,desain) harus dievaluasi untuk memperkirakan
pemasangan logika dan struktur data. Bila koreksi akan
dilakukan pada bagian program yang akan dirangkai, maka
harus ada perhatian khusus bila banyak perubahan
dilakukan.
4. Apa yang dapat kita lakukan untuk menghindari bug ini
didalam tempat pertama?
Pertanyaan ini merupakan langkah pertama untuk
membangun pendekatan jaminan kualitas perangkat lunak
statistik. Bila kita mengkoreksi proses dan produk, bug akan
dihilangkan dari program yang ada dan dapat dieliminasi
dari semua program selanjutnya.

13.3 Debugger
Debugger adalah tools untuk mencari bug. Di kebanyakan
IDE (Integrated Development Environment), tools ini sudah built
Mikroprosesor Dan Mikrokontroller 185
in dan mudah dipakai. Ada juga debugger stand alone, tapi
biasanya ini lebih sulit bagi pemula. Untuk menggunakan debugger
pertama kita perlu mengeset breakpoint, yaitu titik berhenti
sementara (break). Ketika kita mengklik “debug” maka debugger
akan mulai menjalankan program sampai titik itu. Di beberapa
bahasa, jika kita tidak mengeset breakpoint, maka program
dihentikan sementara di titik awal.
Debugger paling dasar sekalipun akan memiliki fungsi untuk
menampilkan nilai variabel saat ini. Dengan menggunakan ini kita
biasanya tidak perlu mencetak dengan printf, tapi untuk mencetak
objek yang kompleks, kadang tetap saja keluaran print masih lebih
baik.
Fungsi debugger berikutnya adalah melakukan single
stepping, artinya kita bisa menelusuri langkah demi langkah
program. Contohnya jika kita memiliki source sederhana.

Gambar 13.1 contoh source

Kita bisa melakukan single step dan melihat nilai


diskon dan harga di setiap langkah.

Gambar 13.2 single step


186 Mikroprosessor Dan Mikrokontroller
Jika kita memanggil fungsi lain, maka kita memiliki
dua opsi, masuk ke dalam fungsi itu (istilahnya biasanya
“step into”) atau memanggil fungsi itu, lalu segera
meneruskan ke baris berikutnya (kita tidak peduli atau tidak
ingin mendebug fungsi itu, istilah ini “step over”).
Jika fungsi yang akan kita cek sangat jauh atau
hanya dipanggil di kondisi tertentu maka kita bisa
menggunakan breakpoint. Biasanya di berbagai IDE ini bisa
dilakukan dengan mengklik di samping nomor baris, dan
akan muncul bulatan merah. Jika kita menekan tombol
“continue”, maka program akan dijalankan dan akan
dihentikan sementara di titik breakpoint tersebut.
Ada juga yang namanya “conditional breakpoint”.
Artinya kita akan berhenti hanya pada kondisi tertentu.
Misalnya kita ingin berhenti dalam loop setelah i > 100,
karena di titik itu ada data yang aneh, maka kita bisa
menambahkan kondiri “i>100”

Gambar 13.3 conditional breakpoint

Mikroprosesor Dan Mikrokontroller 187


Beberapa debugger memiliki fungsi yang
menakjubkan, misalnya GDB mendukung reverse execution
dan Visual Studio mendukung “Edit and Continue”. Untuk
perubahan kecil, kita bisa mengubah program kita tanpa
menghentikan debugger. Di beberapa environment
mensetup debugging tidak mudah, tapi ketika sudah
terinstall ini akan sangat berguna sekali.
13.3.1 Debugger Level Assembly
Untuk program biasa, Anda biasanya tidak akan
pernah butuh mendebug sampai level ini, tapi jika Anda
membuat eksploit atau berusaha mengeksploit binary, Anda
perlu tahu ini (saya pernah membuat pengantar mengenai
buffer overflow jika Anda tertarik). Debugger di level
assembly sebenarnya tidak berbeda jauh dari level source
code. Jika kita punya source codenya, bahkan kita bisa
melihat keduanya berdampingan. Di level assembly kita
bisa menelusuri tiap instruksi dan juga melihat nilai
register. Dengan melihat nilai register beserta flagsnya
Anda bisa belajar banyak mengenai assembly.
Kadang debugger saja tidak cukup, tools analisis runtime
seperti strace, ltrace, valgrind dsb akan berguna membantu
menemukan bug terutama di kode native. Topik mengenai tools
sudah pernah saya bahas sebelumnya. Tools apapun tidak akan bisa
membantu jika kita tidak punya logika yang baik. Dasar dari
debugging adalah mencari kesalahan program, lalu
membetulkannya agar berjalan sesuai harapan. Jadi di tahap paling
awal, Anda sendiri harus tahu harapannya apa yang terjadi di setiap
langkah.
Contohnya jika Anda mendebug algoritma mencari nilai
maksimum, Anda perlu mengerti dulu seperti apa seharusnya
algoritmanya dan apakah ketika dijalankan sudah sesuai harapan.
Dalam kasus ini, di langkah pertama seharusnya nilai maksimum
adalah elemen pertama, di langkah kedua, jika nilainya lebih besar
maka elemen ini yang jadi elemen maksimum (dan jika tidak, maka
elemen pertama yang tetap menjadi maksimum), dan seterusnya
untuk elemen berikutnya.

188 Mikroprosessor Dan Mikrokontroller


13.4 Tools untuk debugging
Metode dan tools yang biasa digunakan untuk debugging
program. Di lingkungan yang ideal, kita seharusnya punya
debugger yang canggih, cepat dan reliable, tapi sayangnya sering
kali ini tidak tersedia.
• Symbian versi awal (versi 6): untuk bisa mendebug,
perlu IDE khusus dengan license khusus yang mahal.
Symbian versi terbaru sudah semakin baik (tapi
sekarang ini Symbian sudah akan berakhir).
• BlackBerry: startup time debugger sangat lama, dan
debugger sering error. Setiap kali menginstall versi
program baru di BlackBerry, perlu restart (butuh
sekitar 5 menit tiap kali restart).
• Mendebug aplikasi Android di emulator. Startup
emulator sangat lambat (bahkan di processor AMD
quad core 3 ghz memori 16 GB) , lebih cepat mencoba
langsung di HP. Masalahnya adalah ketika ada laporan:
ada bug kecil di Android versi 2.2, tapi HP saya
memakai Android 2.3
• Debugging PHP di web hosting. Kadang ada masalah
yang hanya muncul di web hosting, tapi tidak muncul
ketika dicoba di server sendiri. Beberapa kemungkinan
adalah karena versi PHP yang tidak sama, versi library
yang tidak sama. Di server sendiri bisa mudah
menginstall Xdebug, tapi tidak tersedia di tempat
hosting.
• Nurit Point Of Sales. Device ini banyak bugnya, tidak
tersedia debugger, dan jika crash, akan memprint isi
memori di atas kertas thermal sekitar 1/2 meter.
• Kernel FreeBSD. Ketika porting tahap awal, sangat
sulit mendebug apa yang terjadi di level CPU.
Masalahnya karena saya tidak menggunakan
development board yang memiliki JTAG.
Sebenarnya tidak semua lingkungan itu benar-benar
mengesalkan jika kita punya uang, contohnya: jika saya punya
uang beberapa ribu dollar, saya akan bisa mendebug Symbian
dengan mudah. Jika saya punya beberapa HP Android berbagai
Mikroprosesor Dan Mikrokontroller 189
versi, debugging Android juga lebih mudah. Jika saya punya
development board resmi dengan JTAG, porting kernel akan lebih
mudah. Jika saya hosting VPS dengan versi PHP saya sendiri,
maka tidak akan ada masalah dengan PHP, dan andaikan ada
masalah, saya bisa menginstall XDebug. Pada kenyataannya
seringkali tidak tersedia dana untuk menyelesaikan berbagai
masalah tersebut.
Hal pertama yang saya lakukan sekarang adalah mencari
lingkungan ternyaman untuk mengembangkan fitur utama.
Biasanya ini di desktop. Misalnya ketika saya mengembangkan
pembaca Alkitab, saya akan membuat dulu engine parsing file PDB
di Desktop. Kadang saya menggunakan IDE, tapi lebih sering
menggunakan command line. Setelah bisa dianggap selesai, baru
saya membuat user interfacenya. Hal yang sama saya lakukan
ketika membuat aplikasi HTML5 di tablet, saya mengembangkan
dulu algoritma utama di browser desktop, baru setelah itu tampilan
dipoles di device yang sesungguhnya. Jika mungkin, biasanya saya
akan membuat skrip khusus, supaya aplikasinya bisa dibuild di
desktop (setidaknya bagian algoritmanya) dan di device target.
Di berbagai compiler dan interpreter, biasanya ada opsi
untuk menyalakan warning untuk menangkap kesalahan-kesalahan
umum. Ini akan saya nyalakan sampai level maksimum. Untuk gcc
saya menggunakan -Wall, untuk perl saya mengguanakan use
strict;, untuk PHP saya menggunakan error_reporting(E_ALL);.
Tapi tidak semua bahasa punya fitur ini (atau tidak perlu fitur
semacam ini), misalnya Python. Sedangkan di Java, secara default
warning akan muncul kecuali dimatikan.
Di desktop ada banyak tools yang bisa membantu mencari
kesalahan program, misalnya ada PMD untuk java. Biasanya
masalah ketika membuat algoritma utama di desktop adalah
masalah memori dan kecepatan. Di desktop, semua terlihat cepat,
tapi ketika dicoba di device, sangat lambat. Ini bisa jadi karena
pemakaian memori yang terlalu banyak (garbage collector di HP
tidak sebagus di desktop), atau memang algoritmanya kurang
bagus. Untuk aplikasi Java, biasanya saya akan menggunakan fitur
profiler bawaan SDK Java (Java -XProf dan java -Xrunhprof).

190 Mikroprosessor Dan Mikrokontroller


Untuk aplikasi native (C/C++), saya menggunakan valgrind
di Linux. Sebenarnya valgrind juga tersedia untuk beberapa OS
lain, tapi dari pengalaman, versi Linux lebih reliable. Valgrind bisa
dipakai untuk memeriksa aneka kesalahan dalam managemen
memori. Valgrind juga punya fitur untuk mendeteksi kemungkinan
terjadi deadlock pada program multithreading. Untuk program yang
tidak terlalu rumit, kadang saya menggunakan Tiny C compiler,
ada fitur pengecekan array yang sangat berguna (untuk mengecek
index out of bounds, terutama array yang di stack, untuk array di
heap, bisa dideteksi valgrind).
Untuk aplikasi native di Linux, kadang saya menggunakan
juga “strace” dan “ltrace“. Fungsi kedua program tersebut adalah
mencetak system call (strace) dan library call (ltrace) dan hasilnya.
Kedua program tersebut berguna untuk menemukan kesalahan-
kesalahan dasar, seperti misalnya jika ternyata path file tidak
ditemukan atau gagal dibaca karena masalah permission. Jika
sudah terbiasa melihat output strace, maka akan bisa langsung
melihat jika ada file yang tidak ditemukan.
Satu fitur menarik dari compiler gcc yang baru adalah stack
protector. Tujuan utama fitur ini adalah mencegah agar program
tidak bisa diekploitasi dengan buffer overflow. Jika ada buffer
overflow, maka program akan berhenti. Fitur ini berguna karena
akan membuat program “crash” di titik ketika terjadi buffer
overflow, dan bukan di fungsi lain, jadi lebih mudah didebug.
Untuk aplikasi HTML5/JS, saya menggunakan Chrome dan/atau
Firebug. Sekarang saya lebih banyak menggunakan Chrome,
karena enginenya menggunakan webkit (sama seperti yang dipakai
di iPad/iPhone/BlackBerry Playbook/Android), dan Inspector di
Chrome sangat bagus. Saya belum banya memprogram hal
kompleks dengan JavaScript, dan mungkin seharusnya saya
mencoba memakai JSLint untuk mengecek kode Javascript saya.
Kadang walaupun sudah menggunakan tools terbaik, tetap
saja ada bug-bug yang muncul. Misalnya: engine pembaca Alkitab
sudah dites sempurna di desktop, tapi gagal di device
sesungguhnya. Biasanya yang saya lakukan adalah menggunakan
print untuk mencetak kondisi program saat itu. Mendebug dengan
menggunakan print memang sangat primitif, tapi kadang-kadang
Mikroprosesor Dan Mikrokontroller 191
cara seperti ini adalah cara terbaik, dan bahkan kadang-kadang itu
satu-satunya cara. Misalnya ketika saya porting kernel
Linux/FreeBSD, debugger belum bisa jalan, jadi satu-satunya cara
mendebug adalah dengan menggunakan print. Dalam kasus
BlackBerry, menjalankan simulator dengan mode debug butuh
waktu lebih dari 1 menit, sedangkan tanpa mode debug, hanya
butuh beberapa belas detik saja.
Biasanya saya akan membiarkan pesan-pesan debug di
dalam program, tapi saya tambahkan #ifdef DEBUG (atau if
(debug) di bahasa yang tidak memiliki preprocessor). Biasanya
pesan debug ini akan terpakai lagi, jadi tidak saya hapus. Jika
masih belum ketemu bugnya, saya akan mencoba menggunakan
debugger. Kadang-kadang mensetup lingkungan debugger tidak
mudah, misalnya untuk mendebug PHP baris demi baris, perlu
setup environment khusus, karena biasanya saya menulis kode PHP
di text editor, tidak menggunakan IDE seperti PHPEclipse atau
yang sejenis. Atau untuk mendebug aplikasi Flash/ActionScript,
butuh flash player versi debug. Jika saya mengembangkan
proyeknya untuk jangka panjang, biasanya saya menyempatkan diri
mensetup environment untuk debugging.
Di Java (Desktop) ada fitur
setDefaultExceptionHandler untuk mencegat exception
apapun yang tidak tertangkap. Fitur ini sangat berguna
untuk menemukan error tersembunyi (exception yang
mungkin hanya terlihat jika dijalankan dengan console).
Sayangnya fitur ini tidak tersedia di BlackBerry, jadi
biasanya saya menambahkan try catch extra untuk
menangkap error yang tidak terduga. Salah satu hal yang
pernah saya temui adalah, ada exception yang dilempar
yang tidak terdokumentasi di API (misalnya menurut
dokumentasi, hanya akan melempar IOException, tapi
ternyata bisa melempar IllegalArgumentException).
13.4.1 Teknik Debugging
Jadi secara singkat yang dilakukan adalah :
• Mencoba membuat algoritma utama di lingkungan
yang nyaman, dengan tools yang lengkap.
• Menambah pesan debug (mencetak dengan print)
192 Mikroprosessor Dan Mikrokontroller
• Agresif menambahkan try/catch, atau menambahkan
banyak if untuk memastikan semua kondisi terpenuhi.
• Menggunakan level warning maksimum pada
compiler/interpreter untuk menangkap kesalahan yang
mungkin ditemui.
• Menggunakan tools-tools untuk menemukan kesalahan
tanpa banyak berpikir, misalnya strace dan ltrace untuk
melihat jalannya program, valgrind untuk mencari
memory error, deadlock, dsb.
• Menggunakan debugger
Saya berusaha menggunakan debugger semaksimal
mungkin, karena biasanya saya hanya memakainya untuk
error yang sangat sulit dicari. Beberapa fitur debugger
yang sebaiknya diketahui oleh semua orang adalah:
• Fitur untuk step, stepover, stepout/finish (dan juga step
n, step over n, karena sering saya lihat orang berkutat
lama di debugger mengklik next-next-next).
• Fitur untuk melihat stack trace/call trace.
• Fitur untuk melihat isi memori dan variabel.
• Fitur untuk mengubah isi memori dan variabel.
• Fitur breakpoint dengan kondisi (misalnya break jika
i>5).
Biasanya debugger yang saya pakai adalah gdb
tanpa interface khusus. Saya membiasakan memakai gdb
karena ini bisa dipakai untuk debugging hampir apa saja, di
OS apa saja, dan di mana saja (misalnya debugging di
server remote).
E. RANGKUMAN
1. Debugging adalah sebuah metode yang dilakukan oleh
para pemrogram dan pengembang perangkat lunak
untuk mencari dan mengurangi bug, atau kerusakan di
dalam sebuah program komputer atau perangkat keras
sehingga perangkat tersebut bekerja sesuai dengan
harapan. Debugging cenderung lebih rumit ketika
beberapa subsistem lainnya terikat dengan ketat
dengannya, mengingat sebuah perubahan di satu sisi,

Mikroprosesor Dan Mikrokontroller 193


mungkin dapat menyebabkan munculnya bug lain di
dalam subsistem lainnya.
2. Debugger adalah tools untuk mencari bug. Di
kebanyakan IDE (Integrated Development
Environment), tools ini sudah built in dan mudah
dipakai.

Soal Latihan
1. Jelaskan satu contoh teknik pendekatan debugging ?
2. Sebutkan satu contoh tools yang digunakan untuk debugging
program ?

194 Mikroprosessor Dan Mikrokontroller


BAB XIV
SISTEM MINIMUM MIKROKONTROLER

A. KOMPETENSI DASAR
3.15 Menerapkan program aplikasi sederhana sistem
minimum mikrokontroler.
4.15 Membuat program aplikasi sederhana sistem minimum
mikrokontroler.

B. INDIKATOR PENCAPAIAN KOMPETENSI


Indikator –KI 3 (Pengetahuan)
3.15.1 Menjelaskan sistem minimum mikrokontroler.
3.15.2 Menjelaskan sistem minimum mikrokontroler dari
ATMega.
3.15.3 Menyebutkan komponen penyusun dalam rangkaian
sistem minimum mikrokontroler.
3.15.4 Menyebutkan tahapan dalam membuat program
aplikasi sederhana sistem minimum mikrokontroler.
Indikator –KI 4 (Keterampilan)
4.15.1 Membuat program aplikasi sederhana sistem
minimum mikrokontroler.

C. TUJUAN
1. Setelah pembelajaran, peserta didik dapat menjelaskan
sistem minimum mikrokontroler dengan baik dan benar.
2. Setelah pembelajaran, peserta didik dapat menjelaskan
sistem minimum mikrokontroler ATMega dengan tepat.
3. Setelah pembelajaran, peserta didik dapat menyebutkan
komponen penyusun dalam rangkaian sistem minimum
mikrokontroler.
4. Setelah pembelajaran, peserta didik dapat menyebutkan
tahapan dalam membuat program aplikasi sederhana
sistem minimum mikrokontroler dengan baik dan benar.
5. Setelah pembelajaran, peserta didik dapat membuat
program aplikasi sederhana sistem minimum
mikrokontroler dengan baik dan benar.

Mikroprosesor Dan Mikrokontroller 195


D. MATERI
14.1 Pengertian Sistem Minimum Mikrokontroler
Sistem Minimum Mikrokontroller adalah sebuah rangkaian
simple dan sederhana untuk mengaktifkan Mikrokontroller. Bagian
dari minimum sistem hanya terdiri dari rangkaian power supply,
rangkaian reset dan rangkaian clock, bahkan untuk mikrokontroller
yang memiliki clock internal, rangkaian clock bisa tidak
digunakan. Mikrokontroler Atmega8535 telah dilengapi dengan
osilator internal, sehingga tidak diperlukan kristal atau resonator
ekternal untuk sumber clock CPU. Namun osilator ini maksimal
8Mhz jadi disarankan untuk tetap memakai kristal eksternal.
Osilator internal oleh pabriknya disetting 1 Mhz , dan untuk
merubahnya kita perlu merubah setingan Fuse bit, untuk
pengaturan fuse bit perlu berhati-hati, sebab pengaturan ini begitu
rawan karena bila salah menyetingannya bisa menyebabkan
mikrokontroler rusak.
Desain rangkaian elektronika sangat membutuhkan
software untuk membantu desain dan analisis rangkaian. Software
elektronika yang biasa digunakan antara lain :
- Skema rangkaian : Electonics Work Bank, Design
Works Schematic Capture, EZ. Schematics
- Layout PCB (Printed Circuit Board) : PCB Desainer,
Lochmaster, Rimu PCB
- Skema rangkaian dan layout PCB : Proteus
(Schematics dan Board) , Eagle, Dip Trace, Protel
(DXP dan Schematics)

14.2 Sistem minimum mikrokontroler


14.2.1 ATMega8535
Mikrokontroler adalah suatu keping IC dimana terdapat
mikroprosesor dan memori program (ROM) serta memori
serbaguna (RAM). Mikrokontroler AVR (Alf and Vegard’s Risc
prosesor) memiliki arsitektur RISC 8 bit, di mana semua instruksi
dikemas dalam kode 16-bit (16-bits word) dan sebagian besar
instruksi dieksekusi dalam 1 (satu) siklus clock, berbeda dengan
instruksi MCS 51 yang membutuhkan 12 siklus clock. Sistem
minimum (sismin) mikrokontroler adalah rangkaian elektronik
196 Mikroprosessor Dan Mikrokontroller
minimum yang diperlukan untuk beroperasinya IC mikrokontroler.
Sismin ini kemudian bisa dihubungkan dengan rangkaian lain
untuk menjalankan fungsi tertentu. Di keluarga mikrokontroler
AVR, seri 8535 adalah salah satu seri yang sangat banyak
digunakan.

Gambar 14.1 ATMega8535

Arsitektur ATMega8535
- Saluran IO sebanyak 32 buah, yaitu Port A, Port B,
Port C dan Port D
- ADC 10 bit sebanyak 8 Channel
- Tiga buah timer / counter
- 32 register
- Watchdog Timer dengan oscilator internal
- SRAM sebanyak 512 byte
- Memori Flash sebesar 8 kb
- Sumber Interrupt internal dan eksternal
- Port SPI (Serial Pheriperal Interface)
- EEPROM on board sebanyak 512 byte
- Komparator analog
- Port USART (Universal Shynchronous
Ashynchronous Receiver Transmitter)

Mikroprosesor Dan Mikrokontroller 197


Gambar 14.2 Konfigurasi pin ATMega8535

Konfigurasi Pin ATMega8535


- VCC merupakan Pin yang berfungsi sebagai pin
masukan catudaya
- GND merupakan Pin Ground
- Port A (PA0…PA7) merupakan pin I/O dan pin
masukan ADC
- Port B (PB0…PB7) merupakan pin I/O dan pin yang
mempunyai fungsi khusus yaitu Timer/Counter,
komparator Analog dan SPI
- Port C (PC0…PC7) merupakan port I/O dan pin
yang mempunyai fungsi khusus, yaitu komparator
analog dan Timer Oscillator
- Port D (PD0…PD1) merupakan port I/O dan pin
fungsi khusus yaitu komparator analog dan interrupt
eksternal serta komunikasi serial
- RESET merupakan pin yang digunakan untuk
mereset mikrokontroler

198 Mikroprosessor Dan Mikrokontroller


- XTAL1 dan XTAL2 merupakan pin masukan clock
eksternal
- AVCC merupakan pin masukan untuk tegangan
ADC
- AREF merupakan pin masukan tegangan referensi
untuk ADC
Untuk membuat rangkaian Sistem Minimum (Sismin)
ATMEGA 8535 diperlukan beberapa komponen yaitu:
1. Mikrokontoler ATMega8535,
Merupakan otak dari seluruh kegiatan Sismin, jika di
motherboard yaitu processor.
2. Con Header putih 8 pin, 4 pcs.
3. Con header hitam 40 pin, 1 pcs
4. Kapasitor 22pF (2 pcs), 10nF (1 pcs), 100nF (1 pcs).
Pengertian Kapasitor adalah suatu komponen
elektronika yang dapat menyimpan dan melepaskan
muatan listrik atau energi listrik. Kemampuan untuk
menyimpan muatan listrik pada kapasitor disebut
dengan kapasitansi atau kapasitas.
5. Kristal 11.059200 MHz, 1 pcs
Fungsi Kristal pada Sistem Minimum (Sismin) adalah
sebagai pembangkit/ pemompa data yaitu bersifat timer
(semacam clock)/pulsa digital oleh karena itu kristal
memiliki sebuah frekuesi, untuk standart pemakaian kali
ini saya memakai yang tipe kristal berfrekuensi 12 mhz,
atau bisa lebih detail 11.0592 mhz.
6. Push Button 2 pin / Reset Button , 1 pcs
Reset Button berfungsi untuk membuat mikrokontroller
kembali pada setingan awal, yang artinya
mikrokontroller tersebut memulai membaca program
kembali.
7. LED 1 pcs
Fungsi LED indikator berfungsi untuk mengetahui
status alat/detektor. Alat ini menggunakan ponsel
sebagai medium pengirim data. Oleh karena itu,
pengecekan atas koneksi antara mikrokontroler dan

Mikroprosesor Dan Mikrokontroller 199


ponsel mutlak diperlukan sehingga tidak terjadi
kegagalan dalam proses pengiriman data.
8. Resistor 4k7 (1 pcs), 220Ohm (1 pcs).
Resistor adalah suatu komponen elektronika yang
fungsinya untuk menghambat arus listrik.
9. Socket mikro 40 pin.
Fungsinya adalah tempat dimana chip mikrokontroller
diletakan di Sistem Minimum (Sismin).Skema
Rangkaian Sistem Minimum Mikrokontroler
ATmega8535.

Gambar 14.3 Skema Rangkaian Sistem Minimum


Mikrokontroler ATmega8535
14.2.2 ATMEGA16
Sistem Minimum Mikrokontroller AVR ATmega16,
rangkaian ini sangat berguna bagi kita yang ingin belajar ataupun
membuat system kontrol menggunakan Mikrokontroller AVR
khususnya ATmega dari Atmel. Rangkaian ini kami beri nama
“Sistem Minimum Mikrokontroller AVR ATmega16” sebenarnya
system minimum ini tidak hanya bisa digunakan untuk AVR
atmega16 saja, tetapi dapat digunakan juga untuk mikrokontroller
200 Mikroprosessor Dan Mikrokontroller
AVR lainya seperti ATmega8535, atmega8, ATmega32 dan lain-
lain. Bagi anda yang ingin menggunakan mikrokontroller yang lain
silahkan saja caranya tinggal mengganti IC ATmega16 dengan IC
yang ATmega yang anda ingin gunakan.
Rangkaian Sistem Minimum Mikrokontroler adalah
rangkaian elektronika yang terdiri dari komponen-komponen dasar
yang dibutuhkan oleh suatu mikrokontroler untuk dapat berfungsi
dengan baik. Pada umumnya, suatu mikrokontoler membutuhkan
dua elemen (selain power supply) untuk berfungsi: Kristal
Oscillator (XTAL), dan Rangkaian RESET. Analogi fungsi Kristal
Oscillator adalah jantung pada tubuh manusia. Perbedaannya,
jantung memompa darah dan seluruh kandungannya, sedangkan
XTAL memompa data. Dan fungsi rangkaian RESET adalah untuk
membuat mikrokontroler memulai kembali pembacaan program,
hal tersebut dibutuhkan pada saat mikrokontroler mengalami
gangguan dalam meng-eksekusi program. Rangkaian selengkapnya
adalah sebagai Berikut:

Gambar 14.4 Skema layout sistem minimum

Daftar Komponen Sistim Minimum ATMEGA16


1. IC Mikrokontroler ATMEGA 16/32/5835
2. Soket IC 40 Pin
3. Resistor (R1) = 10K
4. Capasitor (C1&C2= 33pF atau 22pF
Mikroprosesor Dan Mikrokontroller 201
5. Xtal = 12 Mhz
6. Capasitor (C3) = 16v/100mF
7. PusButton
8. IC Regulator 7805
9. Resistor (R=330)
10. Dioda 14007
11. Led
12. Conector 8 pin dan 2 pin
13. PCB Fiber
14.2.3 ATMEGA8
Dengan menggunakan minimum sistem yang kompatibel
dengan atmega8 . Disini mikrokontroler atmega8 bertindak sebagai
mikro target dimana kita membutuhkan downloader lain intuk
mendownload firmware ke atmega8. downloader tersebut bisa
berupa downloader paralel atau serial dengan tools programmernya
menggunakan Ponyprog atau bisa juga dengan menggunakan
Downloader USBASP lain yang sudah jadi berikut penampakan
dari sistim minimum atmega8.

Gambar 14.5 Skematik Sistim Minimum ATMEGA8


Jumper self programming merupakan suatu jumper yang
digunakan untuk membuat board USBASP menjadi minimum
sistem (target board). Bila USBASP anda tidak ada fasilitas jumper
self programming anda dapat membuat jumper manual sendiri yaitu

202 Mikroprosessor Dan Mikrokontroller


dengan cara menghubungkan kaki (pin nomor 1) dengan kaki (pin
nomor 16) atmega8.
14.3 Komponen Penyusun Sistem Minimum Mikrokontroler
Ada beberapa yang harus diperhatikan dalam membuat
sistem minimum mikrokontroler, yaitu:
a. Power Supply
Semua komponen elektronika membutuhkan
power supply atau sering juga disebut catu daya.
Mikrokontroler beroprasi pada tegangan 5 volt.
Biasanya pembuatan catu daya mikrokontroler
menggunakan IC regulator 7805 agar tegangannya bisa
stabil.

Gambar 14.6 Regulator 7805

b. Osilator (Pembangkit Frekuensi)


Pada dasarnya mikrokontroler memiliki sifat
seperti manusia. Kalau manusia memiliki jantung untuk
bisa hidup maka mikrokontroler memiliki osilator untuk
bisa beroprasi. Mikrokontroler sendiri sudah memiliki
osilator internal yaitu sebesar 8Mhz tetapi kadang kala
agar kinerja mikronkontroler lebih cepat osilator
internal tidak bisa menangani kasus tersebut. Oleh
karena itu dibutuhkan osilator eksternal (kristal) yang
nilainya lebih dari 8Mhz. Perlu diperhatikan
mikrokontroler hanya bisa beroprasi sampai 16 Mhz.

Mikroprosesor Dan Mikrokontroller 203


jadi kalau memilih krsital untuk AVR tidak boleh lebih
dari 16Mhz.

Gambar 14.7 Kristal 16 MHz

c. ISP (In-System Programmable)


Sistem Minimum Mikrokontroler dibuat untuk di
program. Prinsipnya mikrokontroler bisa diprogram
secara parallel atau secara seri. Pemrograman
mikrokontroler secara seri atau lebih dikenal dengan
ISP tidak perlu memerlukan banyak jalur data. Tapi ISP
memiliki kelemahan, jika salah setting fuse bit yang
memiliki fungsi fital misal pin reset di disable maka
alamat DEH sudah tidak bisa digunakan lagi. Untuk
mengembalikan settingan fuse bit tadi, harus
menggunakan pemrograman tipe parallel (high voltage
programming).

Gambar 14.8 Settingan Port ISP

d. Rangkaian Reset
Rangkaian reset sama fungsinya dengan
rangkaian reset pada komputer. Fungsi reset di

204 Mikroprosessor Dan Mikrokontroller


mikrokontroler yaitu untuk merestart program, sehingga
kembali ke program awal. Penggunaan reset pada
mikrokontroler opsional, bisa di pake atau nggak
tergantung si pengguna. Berikut Gambar Rangkaian
Sistem Minimum Mikrokontroler.

Gambar 14.9 Rangkaian Sistem Minimum Mikrokontroler

14.4 Tahapan Membuat Program Sistem Minimum


Mikrokontroler
14.4.1 Membuat Sistem Minimum Dengan Eagle Cad
1. Ya, seperti membuat project biasanya langkah
pertama yang hanya perlu me-create project baru.

Gambar 14.10 new project eagle


Mikroprosesor Dan Mikrokontroller 205
2. Untuk melihat contoh project untuk referensi bisa
buka folder project->examples. Dan seperti inilah
tampilan dari worksheet pada eagle cad.

Gambar 14.11 worksheet

3. Jika sudah membuat project sekarang kita akan


mendesain rangkaian skematiknya. Dalam
merancang sistem minimum ATMega8 kita
membutuhkan:
 2 buah kapasitor 22pF
 1 buah kapasitor 100nF
 1 buah dioda 1N4148
 1 buah led
 1 resistor 10k
 3 buah resistor 220
 1 buah resistor 330
 1 buah reset switch on
 1 buah xtall 1-20Mhz
 1 buah ATMega8
 1 buah header pin 1×2, 1×4, 1×6, 2×5
 2 buah header pin 1×5

206 Mikroprosessor Dan Mikrokontroller


Gambar 14.12 Contoh desain skematik dari
sismin ATMega8.

4. Pertama-tama masukkan komponen-komponen yang


akan kita gunakan dalam merancang sismin ini.
Dengan menggunakan tool “add”.
5. Lalu kita mengetikkan komponen apa yang ingin kita
cari pada tempat yang sudah disediakan.

Gambar 14.13 Daftar Komponen


Mikroprosesor Dan Mikrokontroller 207
6. Lalu kita masukkan ke worksheet kita

Gambar 14.14 Tampilan worksheet

7. Saat pengerjaan menghubungkan antar pin


gunakanlah tool “net” bukan “wire“. Tool net yang
berbentuk seperti sikat gigi, sedangkan wire seperti
pulpen yang sedang membuat garis.

Gambar 14.15 Penggunaan tools

208 Mikroprosessor Dan Mikrokontroller


8. Hindari bentuk desain seperti gambar a, karena akan
menimbulkan kesalahan baca saat pemrosesan
pembuatan pcb-nya nanti. Oleh karena itu kita akan
menggunakan tool “label” sehingga ia akan
mendireksikan secara sendiri dalam
pemrosesannya(gambar b sehingga menjadi gambar
c). Oh ya, jika kalian tidak menemukan alat
komponen yang kalian cari di default library kalian
bisa menambahkan library sendiri dan bisa
mengunduhnya sendiri di internet dengan keyword
“SparkFun-Eagle-Libraries-Master” sejauh ini
komponen yang ada di sana masih lebih lengkap
daripada yang ada di default library yang disediakan.

Gambar 14.16 tampilan akhir

14.4.2 Membuat Program Sederhana Dengan BASCOM AVR


Salah satu IDE pemrograman mikrokontroler adalah
BASCOM AVR yang merupakan software pembuat program basic
keluaran MCS Electronics. Dengan menggunakan bahasa
pemrograman basic BASCOM AVR diperuntukan untuk
meprogram microkontrolel keluaran Atmel jenis AVR mulai dari
Mikroprosesor Dan Mikrokontroller 209
ATtini s/d ATMEGA. BASCOM AVR telah memiliki compiler
sendiri, sehingga apabila program telah selesai ditulis langsung
dapat dicompail dan kemudian diupload ke dalam mikrokontroler.
Untuk dapat meng upload program yang telah di buat BASCOM
AVR juga dilengkapi dengan ISP yang beragam, bahkan saat ini
BASCOM AVR dapat meng upload sebuah program yang telah di
compail menggunakan ISP milik Arduino.
BASCOM AVR dikembangkan dengan bahasa basic yang
mudah dimengerti oleh user yang mana juga dilengkapi dengan
library yang komplit untuk mendukung user melakukan
pemprograman. library yang disediakan diantaranya com serial, Int,
I2C, SPI, ethernet, aritmatik, bentuk string/ karakter bahkan
logaritma sekalipun disediakan untuk mempermudah user
menggunakan program BASCOM AVR.

Gambar 14.16 tampilan awal BASCOM AVR

210 Mikroprosessor Dan Mikrokontroller


Misalkan kita buat program sebagai berikut:

Gambar 14.17 Contoh list program

Setelah selesai menulis program maka langkah selanjutnya


adalah mengcompile program kedalam bentuk hex agar dapat
dijalankan oleh komputer ataupun mikrokontroler, tekan F7 atau
tekan gambar pada toolbar

Gambar 14.18 Menu compile


Apabila tidak terdapat error berarti program siap
ditanamkan pada mikrokontroler. contoh program diatas

Mikroprosesor Dan Mikrokontroller 211


membutuhkan sistem komunikasi serial RS232 untuk melihat hasil
keluaran data yang dicetak dan juga LCD 2×16. namun program
diatas diberi tanda $sim artinya program tersebut dapat dilihat hasil
kerjanya menggunakan program simulasi milik BASCOM AVR
dengan menekan tombol F2 atau gambar maka akan muncul
jendela baru untuk melakukan simulasi sebagai berikut.

Gambar 14.19 Menu simulate

Gambar 14.20 Tampilan simulation

Hardware simulation yang digunakan adalah LCD dapat


dimunculkan dengan menekan gambar LCD warna biru pada

212 Mikroprosessor Dan Mikrokontroller


toolbar simulasi. kemudian tinggal menekan tombol run dan
program akan dieksekusi dan menampilkan tulisan yang telah
kita ketik didalam IDE pemrograman. Informasi lebih lanjut
tentang BASCOM AVR dapat dilihat dan dipelajari pada
panduan help BASCOM AVR itu sendiri.

E. RANGKUMAN
1. Sistem Minimum Mikrokontroler atau yangg biasa
disebut Sismin adalah suatu rangkaian yang dirancang
dengan menggunakan komponen-komponen
seminimum mungkin untuk mendukung kerja
mikrokontroler sesuai yang kita inginkan.
2. Rangkaian Sistim Minimum, untuk mengontrol
berfungsi tidaknya IC ATMEGA.

3. Pada dasarnya mikrokontroler memiliki sifat seperti


manusia. Kalau manusia memiliki jantung untuk bisa
hidup maka mikrokontroler memiliki osilator untuk bisa
beroprasi. Mikrokontroler sendiri sudah memiliki
osilator internal yaitu sebesar 8Mhz tetapi kadang kala
agar kinerja mikronkontroler lebih cepat osilator
internal tidak bisa menangani kasus tersebut.
4. Sistem Minimum Mikrokontroler dibuat untuk di
program. Prinsipnya mikrokontroler bisa diprogram
secara parallel atau secara seri. Pemrograman
mikrokontroler secara seri atau lebih dikenal dengan
ISP tidak perlu memerlukan banyak jalur data.
5. Salah satu IDE pemrograman mikrokontroler adalah
BASCOM AVR yang merupakan software pembuat
program basic keluaran MCS Electronics.

Mikroprosesor Dan Mikrokontroller 213


Soal Latihan
1. Apa yang dimaksud dengan sistem minimum
mikrokontroler?
2. Sebutkan bagian atau komponen dari sistem minimum ?

214 Mikroprosessor Dan Mikrokontroller


BAB XV
SISTEM PENGENDALI DENGAN MIKROKONTROLER
A. KOMPETENSI DASAR
3.16 Menerapkan program aplikasi sederhana sistem
pengendali dengan mikrokontroler.
4.16 Membuat program aplikasi sederhana sistem
pengendali dengan mikrokontroler.

B. INDIKATOR PENCAPAIAN KOMPETENSI


Indikator –KI 3 (Pengetahuan)
3.16.1 Menjelaskan sistem kendali.
3.16.2 Menjelaskan sistem kendali mikrokontroler
ATMega32
Indikator –KI 4 (Keterampilan)
4.16.1 Membuat program aplikasi sistem pengendali
peralatan listrik dengan mikrokontroler.

C. TUJUAN
1. Setelah pembelajaran, peserta didik dapat menjelaskan
sistem kendali dengan baik dan benar.
2. Setelah pembelajaran, peserta didik dapat menjelaskan
sistem kendali mikrokontroler AVR ATMega32.
3. Setelah pembelajaran, peserta didik dapat membuat
program aplikasi sederhana sistem pengendali dengan
mikrokontroler dengan baik dan benar.

D. MATERI
15.1 Sistem Kendali
Sistem Kontrol adalah seperangkat komponen yang
saling berhubungan/dihubungkan sedemikian sehingga mampu
memerintah, mengarahkan, atau mengatur dirinya sendiri atau
sistem/proses yang lain. Kontrol automatic atau yang dikenal
dengan sistem pengendalian otomatis (automatic control
system) merupakan level ke 2 dalam hirarki sistem
otomasi..Dalam sistem otomasi kegiatan pengontrolan dan
monitoring yang biasa dilakukan manusia bisa digantikan

Mikroprosesor Dan Mikrokontroller 215


perannya dengan menerapkan prinsip otomasi. Kegiatan kontrol
yang dilakukan secara berulang-ulang, kekurang presisi-an
manusia dalam membaca data, serta resiko yang mungkin
timbul dari sistem yang dikontrol semakin menguatkan
kedudukan alat/mesin untuk melakukan pengontrolan secara
otomatis.
Pengendalian otomatis (automatic control) dan piranti-
piranti pengontrol otomatis dalam perkembangannya
merupakan suatu disiplin ilmu sendiri yang disebut control
engineering, control system engineering. Dengan
berkembangnya teknologi komputer dan jaringan dimana
konsep sistem otomasi dapat diwujudkan, ditambah dengan
suatu kecerdasan melalui program yang ditanamkan dalam
sistem tersebut , maka akan semakin meringankan tugas-tugas
manusia. Derajat otomasi yang makin tinggi akan mengurangi
peranan dan meringankan tugas-tugas manusia dalam
pengontrolan suatu proses. Beberapa contoh sistem pengaturan
proses-proses pada industri modern seperti:
1. Sebagai pengontrol tekanan
2. Sebagai pengontrol temperature
3. Sebgai pengontrol kelembaban
4. Sistem aliran dalam proses industri
Mathematical tools/alat matematis yang digunakan antara lain :
- Penyelesaian permasalahan dengan persamaan
deferensial dan integral
- Transformasi Laplace dan variable-variable
kompleks.
- Transformasi z untuk pengaturan diskrit
- Dan berbagai tools dan konsep yang lebih advanced
seperti fuzzy logic, neural network control system
dll.

216 Mikroprosessor Dan Mikrokontroller


15.1.1 Jenis Sistem Kendali
Sistem pengendalian digolongkan menjadi 2 yaitu :
1. Sistem Pengendalian “Untai Terbuka” (Open loop
system), adalah suatu system yang tindakan
pengendaliannya bebas dari keluarannya.
2. Sistem Pengendalian “Untai Tertutup”(Closed Loop
System), adalah suatu system yang tindakan
pengendalianya tergantung pada keluarannya.
Sistem Kendali Loop Terbuka adalah suatu sistem kendali
yang keluarannya tidak akan berpengaruh terhadap aksi kendali.
Sehingga keluaran sistem tidak dapat diukur dan tidak dapat
digunakan sebagai perbandingan umpan balik dengan masukan.
Jadi pada setiap masukan akan didapatkan suatu kondisi operasi
yang tetap. Sedangkan ketelitiannya akan tergantung pada
kalibrasi. Dalam prakteknya sistem kendali loop terbuka dapat
digunakan jika hubungan output dan inputnya diketahui serta tidak
adanya gangguan internal dan eksternal.

Gambar 15.1 Sistem kendali loop terbuka

Sistem kendali loop tertutup adalah suatu sistem yang


keluarannya berpengaruh langsung terhadap aksi kendali. Yang
berupaya untuk mempertahankan keluaran sehingga sama bahkan
hampir sama dengan masukan acuan walaupun terdapat gangguan
pada sistem. Jadi sistem ini adalah sistem kendali berumpan balik,
dimana kesalahan penggerak adalah selisih antara sinyal masukan
dan sinyal umpan balik (berupa sinyal keluaran dan turunannya)
yang diteruskan ke pengendali / controller sehingga melakukan aksi

Mikroprosesor Dan Mikrokontroller 217


terhadap proses untuk memperkecil kesalahan dan membuat agar
keluaran mendekati harga yang diingankan.

Gambar 15.2 Sistem kendali loop tertutup

15.2 Sistem kendali mikrokontroler AVR ATMega32


Merupakan mikrokontroler seri ATMEGA berbasis
arsitektur AVR 8 bit. Secara fisik ketiga jenis
mikrokontroler tersebut sama dan bisa digunakan pada
sistem minimum yang sama pula. Perbedaan ketiga
mikrokontroler tersebut adalah spesifikasi memori yang
digunakan. Berikut tabel perbandingan ketiga
mikrokontroler tersebut.

Tabel 15.1 Perbandingan ATMEGA 8535, 16, dan 32

218 Mikroprosessor Dan Mikrokontroller


Gambar 15.3 Rangkaian Minimum System AVR
ATMega32

Komponen yang digunakan dalam system minimum


ini terdiri dari:
1. ATMega32
Merupakan sebuah Chip IC mikrokontroler yang
berfungsi sebagai pengendali dari rangkaian sistem palang
pintu perlintasan kereta api yang difungsikan sebagai
pengendali sinyal input.
2. Clock
a) Oscillator Crystal (XTAL1 dan XTAL2)
Merupakan input dan output dari sebuah inverting
amplifier yang dapat dikonfigurasi untuk digunakan
sebagai On-Chip Oscillator. Kristal dengan frekuensi
sebesar 12 MHz digunakan sebagai sumber clock atau
Mikroprosesor Dan Mikrokontroller 219
detak oleh mikrokontroler dimana detak tersebut akan
digunakan untuk menjalankan eksekusi program yang
telah didownload. Besarnya frekuensi kristal akan
menentukan kecepatan eksekusi program, jika frekuensi
kristal 1 MHz maka waktu yang dibutuhkan untuk
melakukan eksekusi sebuah instruksi T=1/1MHz atau
sama dengan periode 1 µs. Jika frekuensi osilator 12
MHz maka untuk melakukan eksekusi sebuah instruksi
T=1 / 12 MHz atau sama dengan periode 0.083 µs.
b) 2 buah kapasitor 22pF
Merupakan 2 buah kondensator yang berfungsi sebagai
resonator dimana resonator tersebut akan melakukan
pemotongan terhadap tinggi gelombang pada kristal.
3. Reset
Berfungsi untuk mereset mikrokontroler jika
ingin mengulang proses mikrokontroler dari awal.
Sistem reset terdiri dari resistor pull up 4,7 KΩ dan
kapasitor 100 nF.
4. Regulator
a) Diode
Berfungsi mencegah kerusakan yang disebabkan
kesalahan pemasangan sumber tegangan dimana cara
kerjanya adalah dengan membuang langsung arus atau
tegangan darri anoda ke katoda (hanya jika terjadi
kesalahan).
b) C 470µF/25V
Berfungsi sebagai penyaring atau filter (khusus bila
menggunakan sumber arus atau tegangan dari adaptor)
sehingga tegangan menjadi lebih halus atau rata, namun
bila menggunakan baterai sebagai sumbernya, maka
kondensator ini boleh tidak digunakan karena sumber
baterai sendiri menjamin bahwasannya sumber tegangan
yang dihasilkan sudah cukup halus atau rata.
c) IC 7805
Merupakan IC voltage regulator, dimana mempunyai
fungsi sebagai penyetabil teganagn 5 Volt dengan
masukan yang telah ditentukan.
220 Mikroprosessor Dan Mikrokontroller
d) C 100µF/25V
Merupakan kondensator elektrolit yang memiliki fungsi sama
dengan C 470µF/25V, namun dalam hal ini gunanya untuk
menjaga halus atau ratanya arus atau tegangan pada keluaran IC
7805.
e) R 330Ω dan LED
Merupakan resistor yang berfungsi sebagai penghambat arus yang
digunakan untuk mendayai LED. LED sendiri merupakan dioda
yang dapat memancarkan cahaya, dalam rangkaian ini berfungsi
sebagai indikator rangkaian bahwasannya rangkaian minimum
sudah siap digunakan dalam arti sumber tegangan sudah terpasang.

E. Rangkuman
1. Sistem pengendalian digolongkan menjadi 2 yaitu :
a. Sistem Pengendalian “Untai Terbuka” (Open loop
system), adalah suatu system yang tindakan
pengendaliannya bebas dari keluarannya.
b. Sistem Pengendalian “Untai Tertutup”(Closed Loop
System), adalah suatu system yang tindakan
pengendalianya tergantung pada keluarannya.

2. ATMega32, Merupakan sebuah Chip IC mikrokontroler yang


berfungsi sebagai pengendali dari rangkaian sistem palang pintu
perlintasan kereta api yang difungsikan sebagai pengendali
sinyal input.

3. Sistem kendali loop tertutup adalah suatu sistem yang


keluarannya berpengaruh langsung terhadap aksi kendali. Yang
berupaya untuk mempertahankan keluaran sehingga sama
bahkan hampir sama dengan masukan acuan walaupun terdapat
gangguan pada sistem.
4. Sistem Kendali Loop Terbuka adalah suatu sistem kendali yang
keluarannya tidak akan berpengaruh terhadap aksi kendali.
Sehingga keluaran sistem tidak dapat diukur dan tidak dapat
digunakan sebagai perbandingan umpan balik dengan masukan.

Mikroprosesor Dan Mikrokontroller 221


Soal Latihan
1. Sistem pengendalian digolongkan menjadi berapa ! Coba
sebutkan ?
2. Jelaskan fungsi dari oscillator crystal ?

222 Mikroprosessor Dan Mikrokontroller


BAB XVI
PROGRAM APLIKASI SEDERHANA DENGAN
MIKROKONTROLER

A. KOMPETENSI DASAR
3.17 Menerapkan program aplikasi sederhana dengan
mikrokontroller.
4.17 Membuat program aplikasi sederhana dengan
mikrokontroller.

B. INDIKATOR PENCAPAIAN KOMPETENSI


Indikator –KI 3 (Pengetahuan)
3.17.1 Menjelaskan karakteristik sistem mikrokontroler
dalam hal aplikasi.
3.17.2 Mengidentifikasi program yang digunakan dalam
membuat program aplikasi sederhana dengan
mikrokontroler.
3.17.3 Menjelaskan program LCD dengan mikrokontroler.
Indikator –KI 4 (Keterampilan)
4.17.1 Membuat program aplikasi LCD mikrokontroler.

C. TUJUAN
1. Setelah pembelajaran, peserta didik dapat menjelaskan
karakteristik sistem mikrokontroler dengan baik dan
benar.
2. Setelah pembelajaran, peserta didik dapat menjelaskan
program yang digunakan dalam membuat program
aplikasi.
3. Setelah pembelajaran, peserta didik dapat menjelaskan
program aplikasi LCD mikrokontroler dengan baik dan
benar.

D. MATERI
16.1 Karakteristik sistem mikrokontroler dalam hal
aplikasi
Mikrokontroler adalah controller yang cukup
populer saat ini dengan kemudahannya untuk diprogram
Mikroprosesor Dan Mikrokontroller 223
dan dikomunikasikan dengan berbagai device dan sensor.
Kemampuannya yang telah menunjang berbagai aplikasi
seperti pulse width modulation (PWM), Analog to digital
converter (ADC), Inter integrater circuit (I2C), serial
communication, dll. Dengan berbagai macam kemampuan
diatas, tidak salah jika mikrokontroler menjadi controller
yang paling sering digunakan untuk membuat berbagai
aplikasi seperti robot, kontrol home industri, smart home
and building dan keperluan kontrol dan otomasi lainnya.
Sebuah mikroprosesor yang digabungkan dengan
input-output (I/O) dan memori (Random Access
Memory/Read Only Memory) akan membentuk sebuah
sistem mikrokomputer. Dari pemikiran CPU yang dapat
dikonstruksi dalam sebuah IC tunggal, maka sebuah
mikroprosesor, I/O dan memori dapat pula dibangun dalam
tingkatan IC. Konstruksi ini menghasilkan Single Chip
Microcomputer (SCM). SCM inilah yang disebut sebagai
mikrokontroler.
Pada awal perkembangannya, mikroprosesor dibuat
menurut kebutuhan aplikasi yang lebih spesifik, dalam hal
ini mikroprosesor dibagi menjadi beberapa jenis, yaitu :
• Mikroprosesor RISC (Reduced Instruction Set of
Computing) dan CISC (Complex Instruction Set of
Computing). Jenis ini yang digunakan untuk
pengolahan informasi dengan perangkat lunak yang
rumit dan digunakan untuk kebanyakan PC (Personal
Computer) saat ini.
• Pengolah Sinyal Digital, DSP (Digital Signal
Processor). Memiliki perangkat lunak dan perangkat
keras yang ditujukan untuk mempermudah proses
pengolahan sinyal-sinyal digital. DSP digunakan pada
perangkat audio dan video modern seperti VCD,
DVD, home theatre dan juga pada kartu-kartu
multimedia di komputer.
• Mikrokontroler, adalah mikroprosesor yang
dikhususkan untuk instrumentasi dan kendali. Contoh
penggunaannya adalah sebagai pengendali motor,
224 Mikroprosessor Dan Mikrokontroller
berperan seperti PLC (Programmable Logic
Controller), pengaturan pengapian dan injeksi bahan
bakar pada kendaraan bermotor atau alat pengukur
otomatis suatu besaran seperti suhu, tekanan,
kelembaban dan lain -lain.
Mikrokontroler adalah suatu chip yang dibuat
dengan ciri khasnya, umumnya adalah :
• Memiliki memori yang relatif sedikit. Penggunaan
mikrokontroler untuk keperluan instrumentasi khusus
membuatnya tidak efisien jika menggunakan memori
yang besar namun tidak terpakai.
• Memiliki unit I/O langsung. Berbeda dengan
mikrokomputer yang unit I/O- nya dapat dikonfigurasi
lebih lanjut, mikrokontroler mempunyai unit I/O yang
terintegrasi dan berhubungan langsung dengan
mikroprosesornya.
• Program atau perangkat lunaknya relatif sederhana.
Sesuai fungsi yang dibuat untuk tujuan khusus,
mikrokontroler hanya membutuhkan program yang
sederhana untuk menjalankan fungsinya.
• Pemroses bit, ketimbang byte. Dengan memori yang
sedikit dan implementasi perangkat lunak yang
sederhana, mikrokontroler lebih cenderung digunakan
untuk memproses bit (binary digit) dibandingkan byte
(8 bit), untuk kemudian setiap bit disalurkan ke setiap
jalur keluaran I/O pada pin -pin yang dimilikinya.
• Beberapa varian memiliki memori yang tidak hilang
bila catu padam didalamnya untuk menyimpan
program.
Sedangkan dalam hal aplikasi, sistem
mikrokontroler memiliki karakteristik sebagai berikut :
• Memiliki program khusus yang disimpan dalam
memori untuk aplikasi tertentu, tidak seperti PC yang
multifungsi karena mudahnya memasukkan program.
• Program mikrokontroler relatif lebih kecil daripada
program-program pada PC.
• Konsumsi daya kecil.
Mikroprosesor Dan Mikrokontroller 225
• Rangkaian sederhana dan kompak.
• Murah, karena komponen yang digunakan sedikit.
• Unit I/O yang sederhana, misalnya keypad, LCD,
LED, latch.
• Lebih tahan terhadap kondisi lingkungan ekstrim
misalnya temperatur, tekanan, kelembaban dan
sebagainya.

16.2 Program yang digunakan dalam membuat aplikasi


Pembuatan program aplikasi bisa Anda lakukan
dengan bahasa pemrograman apapun yang Anda inginkan,
jika Anda seorang pemula, saya sarankan untuk
menggunakan BASCOM 51 atau BASCOM AVR dari
MCSELEC.COM, karena sangat mudah penggunaanya.
Selain itu, Anda bisa menggunakan :
• AVR Studio 4 dari Atmel yang mendukung bahasa
assembly dan jika diinstall WinAVR akan mendukung
juga bahasa C
• WinAVR menggunakan bahasa C
• VMLAB for AVR (bahasa ASM) microcontroller dari
ACMTOOLS
• MIDE-51 (bahasa C dan ASM) dari OpCube
• The fastest AVR Basic compiler generates the shortest
code! (bahasa BASIC) Oleh FastAVR;
• mikroBasic PRO for AVR 2009 (bahasa BASIC) dari
MikroElektronika
• mikroC PRO for AVR 2009 (bahasa C) dari
MikroElektronika
• mikroPascal PRO for AVR 2009 (bahasa Pascal) dari
MikroElektronika
• mikroBasic PRO for 8051 2009 (bahasa BASIC) dari
MikroElektronika
• mikroC PRO for 8051 2009 (bahasa BASIC) dari
MikroElektronika
• mikroPascal PRO for 8051 2009 (bahasa Pascal) dari
MikroElektronika
226 Mikroprosessor Dan Mikrokontroller
• CodeVision (bahasa C) dari HP Infotech
Perintah dasar yang biasa digunakan pada
uController MCS-51 adalah sebagai berikut:
1. clr (clear)
format : clr a
(mereset atau memberi nilai 00h pada akumulator)
clr rx
(mereset atau memberi nilai 00h pada register x)
Contoh: clr r0
clr py
(mereset atau memberi nilai 00h pada port y)
Contoh: clr p1
clr
(mereset atau memberi nilai 00h pada alamat tertentu)
Contoh: clr 4ah
2. mov
format : mov a, px
(menyalin isi data pada port x ke dalam akumulator)
Contoh: mov a, p3
mov px, #
(menyalin suatu nilai 8-bit ke port x)
Contoh: mov p0, #0feh
mov px, ry
(menyalin isi data yang nilainya terdapat pada
register y ke dalam port x)
Contoh: mov p3, r5
3. setb (set bit)

Mikroprosesor Dan Mikrokontroller 227


format : setb px.y
(menset atau memberikan logika 1 pada port x.y)
Contoh: setb p1.0
4. call
Call terbagi menjadi dua format yaitu acall
(absolute call) dan lcall (long call), perbedaannya
hanya pada kemampuan jauh dekatnya pemanggilan
subrutin. Seandainya penggunaan acall hanya
mampu memanggil sampai alamat 100h maka untuk
lcall dapat lebih dari itu, namun juga untuk
penggunaan lcall membutuhkan memori dan siklus
mesin yang lebih banyak.
Format : acall
(perintah untuk memanggil program pada subrutin)
Contoh: acall cinta
lcall
(perintah untuk memanggil program pada subrutin)
Contoh: lcall komputer
Cat.: Penggunaan subrutin sebaiknya
menggunakan kata, untuk kata-katanya sesuka
pemrogram boleh menggunakan nama sen diri,
nama kota ataupun nama-nama lainnya.
5. jmp (jump)
Jmp juga terbagi menjadi dua format yaitu sjmp (short
jump) dan ljmp (long jump), untuk pengunaannya sama
seperti format call pada penjelasan di atas, hanya saja jump
merupakan lompatan sederhana yang tidak dapat
mengembalikan nilai register PC seperti perintah call.
Format : sjmp
(lompat atau jalankan langsung program yang berada pada
label suatu subprogram)

228 Mikroprosessor Dan Mikrokontroller


Contoh: sjmp kamu
sjmp
(lompat atau jalankan langsung prog ram yang berada pada
suatu alamat memori)
Contoh: ljmp 100h
6. djnz (decrement and jump if not zero)
format : djnz rx,
(kurangi nilai isi data pada register x dan bila nilainya
belum mencapai 0 maka akan dilakukan lompatan ke label
subprogram)
Contoh: djnz r7, gaul
(kurangi nilai isi data pada register R7 dan bila nilainya
belum mencapai 0 maka dilakukan lompatan ke subprogram
dengan label gaul).
7. jnb (jump if not bit set)
format : jnb px.y,
(lompat ke label subprogram bila nilai port x.y
berlogika LOW atau mempunyai nilai 0)
Contoh: jnb p1.0, go
Cat.: jnb hanya bisa dijalankan dengan operand yang
berkapasitas 1 bit.
8. cjne (compare and jump if not equal)
format : cjne a, xyz,
(bandingkan apakah nilai akumulator sama dengan
nilai xyz, bila nilainya tidak sama maka lompat ke label
subprogram)
Contoh: cjne a, #0fh, keren
cjne rv, xyz,

Mikroprosesor Dan Mikrokontroller 229


(bandingkan apakah nilai register v sama dengan
nilai xyz, bila nilainya tidak sama maka lompat ke label
subprogram)
Contoh: cjne r1, #0ach, ganteng
9. rr (rotate right) dan rl (rotate left)
format : rr a
(geser ke kanan 1 bit pada isi akumulator)
rl a
(geser ke kiri 1 bit pada isi akumulator)
rr rx
(geser ke kanan 1 bit pada isi register x)
rl rx
(geser ke kiri 1 bit pada isi register x)
10. inc (increment) dan dec (decrement)
format : inc a
(menambahkan nilai 1 bit pada akumulator)
dec a
(mengurangi nilai 1 bit pada akumulator)
inc rx
(menambahkan nilai 1 bit pada register x)
dec rx
(mengurangkan nilai 1 bit pada register x)
Cat : untuk perintah yang menggunakan decrement,
increment, rotate, compare hanya dapat dilakukan oleh akumulator
maupun register saja. Bila nilai pada suatu port ingin dilakukan
perintah diatas maka port tersebut wajib disalin terlebih dahulu
kedalam akumulator atau register dengan menggunakan perintah
mov.

230 Mikroprosessor Dan Mikrokontroller


Format penulisan standar bahasa assembly MCS-51
(pada M-IDE51) :
$mod51
org 0h
;
~ Main Program ~
;
end
Keterangan:
• $mod51
Instruksi ini digunakan agar simulator dapat mengi
dentifikasi program yang dibuat dalam bahasa
asembler.
• org 0h
mempunyai fungsi untuk menulis program di
alamat 0 hexa pada register mikrokontroler
• Main Program
Berisi program utama
• End

Mengakhiri baris program


Contoh Program :
$mod51
led equ p2
org 0h
balik: mov led,#00001111b
call delay
mov led,#11110000b

Mikroprosesor Dan Mikrokontroller 231


call delay
sjmp balik
delay: mov r0,#07h
lagi: djnz r2,lagi
djnz r1,lagi
djnz r0,lagi
ret
end

16.3 Pemrograman LCD dengan Mikrokontroller AVR


ATMega8535
LCD (Liquid Crystal Display) adalah modul penampil yang
banyak digunakan karena tampilannya menarik. LCD yang paling
banyak digunakan saat ini ialah LCD M1632 refurbish karena
harganya cukup murah. LCD M1632 merupakan modul LCD
dengan tampilan 2x16 (2 baris x 16 kolom) dengan konsumsi daya
rendah. Modul tersebut dilengkapi dengan mikrokontroler yang
didesain khusus untuk mengendalikan LCD.
Mikrokontroler HD44780 buatan Hitachi yang berfungsi
sebagai pengendali LCD memiliki CGROM (Character Generator
Read Only Memory), CGRAM (Character Generator Random
Access Memory), dan DDRAM (Display Data Random Access
Memory). LCD yang umum, ada yang panjangnya hingga 40
karakter (2x40 dan 4x40), dimana kita menggunakan DDRAM
untuk mengatur tempat penyimpanan karakter tersebut.

Gambar 16.1 Susunan alamat pada LCD

232 Mikroprosessor Dan Mikrokontroller


Alamat awal karakter 00H dan alamat akhir 39H.
Jadi, alamat awal di baris kedua dimulai dari 40H. Jika
Anda ingin meletakkan suatu karakter pada baris ke-2
kolom pertama, maka harus diset pada alamat 40H. Jadi,
meskipun LCD yang digunakan 2x16 atau 2x24, atau
bahkan 2x40, maka penulisan programnya sama saja.
CGRAM merupakan memori untuk menggambarkan
pola sebuah karakter, dimana bentuk dari karakter dapat
diubah-ubah sesuai dengan keinginan. Namun, memori
akan hilang saat power supply tidak aktif sehingga pola
karakter akan hilang. Berikut tabel pin untuk LCD M1632.
Perbedaannya dengan LCD standar adalah pada kaki 1
VCC, dan kaki 2 Gnd. Ini kebalikan dengan LCD standar.
Tabel 16.1 Susunan kaki pada LCD

Perlu diketahui, driver LCD seperti HD44780


memiliki dua register yang aksesnya diatur menggunakan
pin RS. Pada saat RS berlogika 0, register yang diakses
adalah perintah, sedangkan pada saat RS berlogika 1,
register yang diakses adalah register data. Berikut adalah
list programnya :
$regfile = "8535def.dat"
$crystal = 4000000

Mikroprosesor Dan Mikrokontroller 233


Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.4
, Db6 = Porta.3 , Db7 = Porta.2 , E = Porta.1 , Rs =
Porta.0

Config Lcd = 16 * 2

Do
Cls
Locate 1 , 1
Lcd "Pengenalan"
Waitms 100
Locate 2 , 1
Lcd "Pemograman"
Waitms 100
cls
Locate 1 , 4
Lcd "ATMEGA8535"
Waitms 100
Locate 2 , 1
Lcd "Dengan BASCOM-AVR"
Waitms 100
Cls
Locate 1 , 1
Lcd "BY"
Locate 2 , 1
Lcd "Frengki"

234 Mikroprosessor Dan Mikrokontroller


Waitms 100
Loop
Pembahasan Program :
1. $regfile = "8535def.dat" library yang menyatakan
bahwa mikrokontroller yang kita pakai adalah atmega32,
2. $crystal = 4000000 meyatakan bahwa clock oscillator
yang kita pakai sebesar 8Mhz,
3. Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.4 ,
Db6 = Porta.3 , Db7 = Porta.2 , E = Porta.1 , Rs =
Porta.0 inisialisasi pin-pin pada LCD sendiri,
4. Config Lcd = 16 * 2 LCD yang kita pakai adalah LCD
berukuran 20*4,
5. Cls = LCD dibersihkan terlebih dahulu
6. Locate 1 , 1 = menyatakan huruf atau angka yang akan
ditampilkan pertama kali akan keluar pada kolom 1
baris 1,
7. Lcd "Pengenalan" = kata yang akan ditampilkan pada
LCD adalah “pengenalan”
Gambar pada Proteusnya :

Gambar 16.2 Pemrograman LCD pada proteus

Mikroprosesor Dan Mikrokontroller 235


E. Rangkuman
1. Mikrokontroler adalah suatu chip yang dibuat
dengan ciri khasnya, umumnya adalah : Memiliki
memori yang relatif sedikit. Penggunaan
mikrokontroler untuk keperluan instrumentasi
khusus membuatnya tidak efisien jika menggunakan
memori yang besar namun tidak terpakai.
2. Sistem mikrokontroler memiliki karakteristik
sebagai berikut : Memiliki program khusus yang
disimpan dalam memori untuk aplikasi tertentu,
tidak seperti PC yang multifungsi karena mudahnya
memasukkan program.

Soal Latihan
1. Apa yang dimaksud dengan interupsi pada mikrokontroler ?
2. Pada AVR ATMega 8535 terdapat 3 pin yang dapat
digunakan untuk interupsi eksternal, coba sebutkan ?

236 Mikroprosessor Dan Mikrokontroller


DAFTAR PUSTAKA

Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR


Microcontroller Primer: Programming and Interfacing.
Harry Garland. (1979). Introduction to microprocessor system
design.New Jersey : MC Graw Hill.
Laventhal, (1985). Instroduction to microprocessor; software,
hardware, programming. Prentice Hall.
Laventhal, (1986). Z80 Assembly Language Programming, Mc
Graw Hill, Singapore.
Inelco, (1986). Guru Mikro Saya
Siswo Wardoyo, Dasar mikroprosesor, Cilegon, 2011
Sugiono.Djoko.2016. Modul Pelatihan Guru Teknik
Mikroprosessor. Malang:VEDC
Lab Sheet Pengenalan Z80 Simulator IDE OSHONSOFT.pdf
Merdeka.Ricky.2010.https://mrmerdeka.wordpress.com/2010
/08/16/z80-simulator-tutorial/.diakses pada tanggal 30
September 2017
Niley.Bere.2012. https://ciburuan.wordpress.com/tag/zilog-
z80/.diakses pada tanggal 7 Desember 2017
Eric, Arie. 2015. Modul Pelatihan Guru Perekayasaan Sistem
Kontrol Industri. Malang:PPPPTK VEDC Malang
Firmansyah, Imam. 2009. Mikrokontroler ATMega 8535. Jakarta:
PT Bukaka Teknik
Khairudin, Moh. 2017. Teknik Mikrokontroler. Jakarta:
KEMENDIKBUD
Anonim. 2015. Prinsip Kerja Mikrokontroler.
http://www.insinyoer.com/prinsip-kerja-mikrokontroler/.
Diakses Pada Tanggal 11 Desember 2017
Anonim.2013. Cara Menggunakan Code Vision AVR.
http://www.robotics-university.com/2013/04/cara-
menggunakan-codevisionavr.html. Di akses pada tanggal 7
Desember 2017
Dewa, De. 2016. Cara Membuat Sistem MinimumMikrokontroler
ATMega 328. http://egsean.com/cara-membuat-sistem-
minimum-mikrokontroler-atmega-328p/. Diakses pada
tanggal 6 Desember 2017
Mikroprosesor Dan Mikrokontroller 237
Farid. 2013. IC Regulator 7805. http://fariedrj.blogspot.co.id/
2013/04/ic-regulator-7805.html. Diakses pada tanggal 6
Desember 2017
Yumansyah. 2017. Sistem Minimum ATMega 8535.
http://yusmansyah.student. telkomuniversity.ac.id/sample-
page/. Diakses pada tanggal 6 Desember 2017
Prasimax, Tim. 2017. http://www.mikron123.com/index.php/
Tutorial-AVR/Arsitektur-Mikrokontroler-AVR.html.
(Diakses pada tanggal 7 Desember 2017)
Anonim. 2017. Debugging.
https://revoluthion.wordpress.com/2009/10/07/debugging-
pengertian/ (diakses tanggal 04 Desember 2017 )
Anonim.2017. Bug, Debugging dan Debugger.
http://cintaprogramming.com/2016/07/13/bug-debugging-
dan-debugger/ (diakses tanggal 04 Desember 2017 )
Anonim. 2017. Sistem minimum mikrokontroler.
https://zhiescreamous.wordpress.com/2012/01/25/sistem-
minimum-mikrokontroler/ (diakses tanggal 05 Desember
2017 )
Anonim. 2017. Pembuatan program.
https://massugenk.wordpress.com/2014/09/18/belajar-
bascom-avr/ (diakses tanggal 07 Desember 2017 )
Pengenalan mikrokontroler. http://www.immersa-
lab.com/pengenalan-mikrokontroler.htm (diakses tanggal 05
Desember 2017 )
Pemrograman LCD Mikrokontroler.
http://pemogramanbascom.blogspot.co.id/2010/06/pemrogra
man-lcd-dengan-mikrokontroller.html (diakses tanggal 06
Desember 2017)

238 Mikroprosessor Dan Mikrokontroller

Anda mungkin juga menyukai