Anda di halaman 1dari 103

BAB I

DASAR-DASAR MIKROPROSESOR

Pada Bab I mempelajari tentang dasar-dasar mikroprosesor meliputi teknologi


mikroprosesor, perkembangan mikroprosesor, diagram CPU 8085, arsitektur
mikroprosesor 8085.
Mikroprosesor (disingkat p atau up) adalah sebuah central processing unit
(CPU) elektronik komputer yang terbuat dari transistor mini dan sirkuit lainnya di
atas sebuah sirkuit terintegrasi semikonduktor. Sebelum berkembangnya
mikroprosesor, CPU elektronik terbuat dari tabung vakum, transistor individual
dan dari sirkuit terintegrasi TTL terpisah.
Sistem minimum adalah penerapan mikroprosesor pada suatu rangkaian
digital, dengan komponen minimal sehingga sistem mikroprosesor dapat bekerja.
Sistem minimum Intel 8085 merupakan rangkaian digital dengan konfigurasi
minimal (menggunakan komponen paling sedikit), yang dapat membuat IC
mikrokontroler Intel 8085 dapat digunakan sebagai sistem mikroprosesor. Dalam
sistem minimum diperlukan perangkat-perangkat seperti : mikroprosesor, unit
memori, unit masukan dan keluaran, dan rangkaian pendukung lain.

Tujuan Khusus
Mahasiswa mampu menjelaskan perkembangan dan teknologi, arsitektur,
fungsi masing-masing blok diagram serta menjelaskan cara kerja mikroprosesor
8085.

1.1 Teknologi Mikroprosesor


Mikroprosesor adalah suatu chip IC (Integrated Circuit) yang di dalamnya
terkandung rangkaian ALU (Arithmetic Logic Unit) rangkaian CU (Control Unit)
dan Register. Mikroprosesor disebut juga dengan CPU (Central Processing Unit).
Mikroprosesor adalah gabungan 2 kata yaitu mikro dan prosesor. Jadi,
mikroprosesor adalah sebuah alat yang berukuran kecil yang digunakan untuk
memproses data digital secara aritmatika dan logika. Selain berukuran kecil,
mikroprosesor memiliki kemampuan komputasi yang lebih rendah dibandingkan
dengan komputer yang digunakan. Cara kerja sebuah Mikroprosesor diarahkan
oleh suatu program dalam kode-kode bahasa mesin yang telah dimasukkan

1
terlebih dahulu ke dalam sebuah memori. Di dalam Mikroprosesor minimal terdiri
dari rangkaian digital, register, pengolah logika aritmatika, rangkaian sekuensial.
Berikut adalah karakteristik penting dari mikroprosesor:
1. Ukuran bus data internal (internal data bus size): Jumlah saluran yang
terdapat dalam mikroprosesor yang menyatakan jumlah bit yang dapat
ditransfer antar komponen di dalam mikroprosesor.
2. Ukuran bus data eksternal (external data bus size): Jumlah saluran yang
digunakan untuk transfer data antar komponen antara mikroprosesor dan
komponen-komponen di luar mikroprosesor.
3. Ukuran alamat memori (memory address size): Jumlah alamat memori
yang dapat dialamati oleh mikroprosesor secara langsung.
4. Kecepatan clock (clock speed): Rate atau kecepatan clock untuk menuntun
kerja mikroprosesor.
5. Fitur-fitur spesial (special features): Fitur khusus untuk mendukung
aplikasi tertentu seperti fasilitas pemrosesan floating point, multimedia
dan sebagainya.
Dalam penerapan, terdapat tiga pengertian yang harus dibedakan yaitu
Mikroprosesor, Mikrokomputer dan Mikrokontroler. Sangat sering dan sudah
menjadi hal yang biasa pengertian dari microcontroller, microcomputer dan
microprocessor sering bertukar dan disalah artikan. Bagaimanapun, ketiga istilah
tersebut sangat berbeda dan sangat penting untuk mengerti tentang pengertian
yang sesungguhnya.
Microprocessor adalah CPU atau Central Processing Unit yang terdapat
dalam satu chip. CPU di desain dengan (MSI/LSI) chips yang terintegrasi dengan
jumlah medium ataupun besar. Mikroprossesor adalah suatu chip yang
didalamnya terkandung rangkaian ALU (arithmetic-logic unit), rangkaian CU
(control unit), dan register.
Mikrokomputer adalah interkoneksi antara mikroprosesor (CPU) dengan
memori utama (main memory) dan antar muka input-output (I/O interface) yang
dilakukan dengan menggunakan sistem interkoneksi bus. Jika sebuah
microprocessor dengan peralatan peripheral pendukungnya seperti circuit board,
I/O peripheral, Memory (program ataupun data) di letakkan bersama dalam suatu
tempat seperti komputer kecil yang di khusus di gunakan untuk akuisisi dan
aplikasi process control, maka yang seperti itu di sebut sebagai microcomputer.
Jadi bila kita mendesain rangkaian dengan microprocessor yang terkenal seperti

2
8088 ataupun bahkan dengan 8085 di tambah dengan EEPROM sebagai tempat
penyimpanan sumber data program, RAM sebagai tempat penyimpanan variabel
dan antarmuka chips I/O (sebagai perantara untuk berkomunikasi dengan dunia
luar) berarti kita termasuk dalam golongan microcomputer desainer, karena sistem
tersebut termasuk dalam golongan sistem microcomputer.
Bila semua komponen penyusun mikrokomputer di kumpulkan menjadi satu,
dan di masukkan di dalam satu chip silicon, maka chip tersebut di sebut dengan
mikrokontroller. Jadi Mikrokontroler adalah chip yang didalamnya terkandung
sistem interkoneksi antara Mikroprosesor, RAM, ROM, I/O interface, dan
beberapa peripheral. Mikrokontroler disebut juga On-chip-Peripheral.
Texas Instruments adalah perusahaan semiconductor pertama yang membuat
microcontroller dengan TMS 1000 series. TMS 1000 series microcontroller, sudah
mempunyai RAM, ROM dan I/O yang cukup dan di gunakan untuk aplikasi
microwave oven controller, industrial timer dan kalkulator. Sekarang banyak
beredar jenis-jenis mikrokontroler yang di produksi oleh berbagai macam
perusahaan seperti: Intel dengan 8084 dan 8051, Motorola dengan 68HC11, Zilog
dengan Z8, Microchips dengan PIC, Hitachi dengan H8 dan ATMEL dengan
MCS-51 yang mengadopsi 8051 dan yang terbaru adalah AVR dengan sistem
RISC (Reduced Instruction Set Computer).
Perbedaan mikroprossesor, mikrokomputer dan mikrokontroler:
a. Dari segi strukturnya:
Struktur utama dari mikroprosesor adalah ALU (arithmetic-logic unit),
rangkaian CU (control unit), dan register-register.
Struktur utama dari mikrokontroler adalah Mikroprosesor, RAM, ROM, I/O
interface, dan beberapa peripheral.
Struktur utama dari mikrokomputer adalah mikroprosesor, mikrokontroler,
memori utama dan I/O interface.
b. Dari segi fungsinya:
Mikroprosesor berfungsi sebagai pengolahan data, pengontrol fungsi prosesor
dan sebagai media penyimpanan sementara.
Mikrokontroler berfungsi sebagai interkoneksi antara mikroprosesor, RAM,
ROM, I/O interfece dan beberapa peripheral.
Mikrokomputer berfungsi sebagai interkoneksi antara mikroprosesor dengan
memori utama dan sebagai antar muka input output.

1.2 Perkembangan Mikroprosesor

3
Sejarah Perkembangan Mikroprocessor dimulai:
Mikroprosesor 4 bit.
Pada tahun 1971 muncul microprocessor pertama Intel, Microprocessor 4004
ini digunakan pada mesin kalkulator Busicom. Mikroprosesor ini merupakan
kontroler yang dapat deprogram pada satu serpih, dikemas dalam sebuah serpi
Dual in Line Package (DIP) 16 pin, mengalamati 4096 lokasi memori 4 bit. Set
instruksi terdiri dari 45 instruksi. Kemudian INTEL mengeluarkan versi baru dari
4004 yaitu INTEL 4040 yang dikemas dalam serpih DIP 24 pinberoperasi dengan
kecepatan lebih tinggi, lebar word dan memori tidak berubah.

Mikroprosesor 8 bit.
Pada tahun 1972 muncul microprocessor 8008 yang berkekuatan 2 kali lipat
dari pendahulunya yaitu 4004. Mikroprosesor 8008 merupakan versi
mikroprosesor 8 bit dengan kelebihan:
1. Mengalamati ukuran memori expanded (16 Kbyte)
2. Set intruksinya terdiri dari 48 instruksi.
Pada tahun 1973, INTEL mengeluarkan INTEL 8080, Motorolla corporation
memperkenalkan mikroprosesor 8 bit MC6800 diikuti periusahaan lain
memperkenalkan mikroprosesor 8 bit.
Keistimewaan 8080 dibandingkan 8008 adalah:
- Mempunyai lebih banyak alamat memori.
- Mengeksekusi operasi penambahan 10 kali lebih cepat.
- Kompatibel dengan TTL, sehingga membuat antarmuka menjadi lebih
mudah dan murah.
- Mengalamati memori 64 Kbyte, empat kali lebih banyak dari 8008.
Pada tahun 1977, INTEL mengeluarkan versi terbari 8080, yaitu 8085 hanya
membutuhkan catu daya +5 Volt. Keunggulan 8085 dibandingkan 8080, adalah:
1. 8085 dapat mengeksekusi instruksi lebih cepat
2. Set intruksinya terdiri dari 74 instruksi
3. Internal clock generator
4. Sistem controller internal
5. Frekwensi clock lebih tinggi

Mikroprosesor Modern
Pada tahun 1978, INTEL mengeluarkan mikroprosesor 8086 dan tahun
berikutnya 8088. Yang membedakan 8086 dari 8088 adalah pada 8086 terdapat 16
bit bus data sedangkan pada 8088 hanya 8 bit bus data. Hal ini yang membuat
8088 lebih popular, karena dengan 8 bit bus data sangat sesuai dengan alat-alat
pendukung yang ada pada saat itu.
Keistimewaan 8086/8088 dari versi sebelumnya:

4
1. Keduanya mikroprosesor 16 bit yang dapat mengeksekusi instruksi dalam
waktu 400 ns.
2. Memori sebesar 1 M Byte, 16 kali lebih banyak dari 8085.
3. Set intruksi semakin banyak.
Penambahan jumlah memori pada 8086/8088 mendorong munculnya banyak
aplikasi kompleks untuk mikroprosesor. Pengembangan set intruksi mencakup
pembagian dan perkalian yang tidak terdapat pada mikroprosesor sebelumnya.
Jumlah instruksi yang semakin banyak dan kompleks, membuat mikroprosesor ini
masuk dalam CISC (Compleks Instruction Set Computer).
Mikroprosesor 16 bit berkembang terutama akibat kebutuhan akan sistem
memori yang lebih besar. Ketenaran keluarga Intel melambung pada tahun 1981,
ketika IBM memutuskan untuk menggunakan mikroprosesor 8088 dalam
komputer pribadinya serta didukung sistem operasi yang dibuat oleh Microsoft
(DOS). Aplikasi-aplikasi seperti spreadsheet, word processor, spelling checker,
dan kamus berbasis komputer sangat membutuhkan banyak memori. Dalam waktu
singkat, memori 1 MByte menjadi kurang memadai untuk database yang besar
dan aplikasinya. Dengan alasan tersebut pada tahun 1983 Intel mengeluarkan Intel
80286 yang merupakan versi dari 8086.
Karakteristik 80286 adalah:
- Merupakan arsitektur mikroprosesor 16 bit
- Mengalamatkan memori 16 Mbyte
- Penambahan instruksi untuk mengatur tambahan memori 15 Mbyte
- Clock speed meningkat, eksekusi beberapa instruksi menjadi 250 ns dengan
versi asli 8 MHz.

Mikroprosesor 32 Bit
Seiring dengan perkembangan kehidupan manusia, aplikasi-aplikasi mulai
memerlukan mikroprosesor dengan kecepatan yang lebih tinggi, memori yang
lebih besar, dan jalur data yang lebih lebar. Ini menyebabkan pada tahun 1986,
Intel memproduksi Intel 80386, yang merupakan penyempurnaan dari 80286.
Intel 386 adalah sebuah prosesor yang memiliki 275.000 transistor yang tertanam
diprosessor tersebut yang jika dibandingkan dengan 4004 memiliki 100 kali lipat
lebih banyak dibandingkan dengan 4004
Karakteristik 80386:
- Merupakan mikroprosesor fungsional 32 bit pertama

5
- Mempunyai bus data 32 bit dan bus alamat 32 bit
- Mengalamatkan memori 4 Gbyte
Mikroprosesor 32 bit dibutuhkan karena ukuran dari bus datanya yang bisa
mentransfer bilangan real (floating point presisi tunggal) yang membutuhkan
memori 32 bit. Kebanyakan bahasa pemrograman tingkat tinggi, spreadsheet,
serta sistem manajemen database menggunakan bilangan real untuk penyimpanan
data. Hal tersebut menyebabkan penambahan kecepatan dari program yang
memanipulasi bilangan real. Bilangan real juga digunakan pada paket
perancangan grafis yang menggunakan vektor untuk memetakan citra di layar
video.

Pada tahun 1989 Intel mengeluarkan Intel 80486 yang merupakan gabungan
dari 80386 sebagai prosesor dan 80387 sebagai numeric coprocessor serta 8 Kbyte
cache memory system dalam satu paket terpadu. Mikroprosesor 80486 tidak
banyak berbeda dengan 80386, namun ada juga perbedaan subtansialnya, yaitu
struktur internalnya dibuat sehingga setengah instruksinya dieksekusi dalam astu
clock. Karena 80486 tersedia dalam versi 50 MHz, maka kira-kira setengah dari
instruksinya dieksekusi pada 25 ns. Processor yang pertama kali memudahkan
berbagai aplikasi yang tadinya harus mengetikkan command-command menjadi
hanya sebuah klik saja, dan mempunyai fungsi komplek matematika sehingga
memperkecil beban kerja pada processor.
Versi lain dari 80486:
- 80486DX2, 66 MHz double clocked
- 80486DX3, 100 MHz tirple clocked, memiliki expanded cache 16 KByte

Mikroprosesor Pentium
Mikroprosesor Pentium yang diluncurkan pada 22 Maret 1993 mirip dengan
mikroprosesor 80386 dan 80486. Processor generasi baru yang mampu menangani
berbagai jenis data seperti suara, bunyi, tulisan tangan, dan foto.
Mikroprosesor ini sebelumnya diberi label P5 atau 80586, tetapi Intel
memutuskan untuk tidak menggunakan label ini karena sulit untuk mematenkan
angka yang terlalu banyak.
Karakteristik Pentium:

6
- Pentium mengeksekusi dua instruksi yang tidak saling tergantung, secara
simultan karena terdiri dari dua prosesor integer internal bebas (prosesor
integer kembar), yang disebut teknologi superskalar.
- Menggunakan coprosesor floating internal untuk menangani data floating
point.

Mikroprosesor Pentium Pro


Diperkenalkan pada tahun 1995. Pada awalnya Pentium Procesor diberi nama
P6. Pentium Procesor mengandung 5,5 juta transistor, tiga modul integer, juga unit
floating point untuk meningkatkan kinerja banyak software. Satu perubahan
mendasar pada Pentium Procesor adalah bahwa Pentium Procesor menggunakan
tiga mesin eksekusi sehingga dapat mengakses tiga instruksi dalam waktu
bersamaan. Processor yang dirancang untuk digunakan pada aplikasi server dan
workstation, yang dibuat untuk memproses data secara cepat.

Mikroprosesor Pentium II Pro, 1997


Processor Pentium II merupakan processor yang menggabungkan Intel MMX
yang dirancang secara khusus untuk mengolah data video, audio, dan grafik secara
efisien. Terdapat 7.5 juta transistor terintegrasi di dalamnya sehingga dengan
processor ini pengguna PC dapat mengolah data dan menggunakan internet
dengan lebih baik.

Mikroprosesor Pentium II Xeon, 1998


Processor yang dibuat untuk kebutuhan pada aplikasi server. Intel saat itu
ingin memenuhi strateginya yang ingin memberikan sebuah processor unik untuk
sebuah pasar tertentu.
Mikroprosesor Intel Celeron, 1999
Processor Intel Celeron merupakan processor yang dikeluarkan sebagai
processor yang ditujukan untuk pengguna yang tidak terlalu membutuhkan kinerja
processor yang lebih cepat bagi pengguna yang ingin membangun sebuah system
computer dengan budget (harga) yang tidak terlalu besar. Processor Intel Celeron
ini memiliki bentuk dan form factor yang sama dengan processor Intel jenis
Pentium, tetapi hanya dengan instruksi-instruksi yang lebih sedikit, L2 cache-nya

7
lebih kecil, kecepatan (clock speed) yang lebih lambat, dan harga yang lebih
murah daripada processor Intel jenis Pentium.

Mikroprocesor Intel Pentium III, 1999


Processor Pentium III merupakan processor yang diberi tambahan 70
instruksi baru yang secara dramatis memperkaya kemampuan pencitraan tingkat
tinggi, tiga dimensi, audio streaming, dan aplikasi-aplikasi video serta pengenalan
suara.

Mikroprosesor Intel Pentium III Xeon, 1999


Intel kembali merambah pasaran server dan workstation dengan
mengeluarkan seri Xeon tetapi jenis Pentium III yang mempunyai 70 perintah
SIMD. Keunggulan processor ini adalah ia dapat mempercepat pengolahan
informasi dari system bus ke processor , yang juga mendongkrak performa secara
signifikan. Processor ini juga dirancang untuk dipadukan dengan processor lain
yang sejenis.

Mikroprosesor Intel Pentium 4, 2000


Processor Pentium IV merupakan produk Intel yang kecepatan prosesnya
mampu menembus kecepatan hingga 3.06 GHz. Pertama kali keluar processor ini
berkecepatan 1.5GHz dengan formafactor pin 423, setelah itu intel merubah
formfactor processor Intel Pentium 4 menjadi pin 478 yang dimulai dari processor
Intel Pentium 4 berkecepatan 1.3 GHz sampai yang terbaru yang saat ini mampu
menembus kecepatannya hingga 3.4 GHz.

Mikroprosesor Intel Xeon, 2001


Processor Intel Pentium 4 Xeon merupakan processor Intel Pentium 4 yang
ditujukan khusus untuk berperan sebagai computer server. Processor ini memiliki
jumlah pin lebih banyak dari processor Intel Pentium 4 serta dengan memory L2
cache yang lebih besar pula.

Mikroprosesor Intel Itanium, 2001


Itanium adalah processor pertama berbasis 64 bit yang ditujukan bagi
pemakain pada server dan workstation serta pemakai tertentu. Processor ini sudah
dibuat dengan struktur yang benar-benar berbeda dari sebelumnya yang
didasarkan pada desain dan teknologi Intels Explicitly Parallel Instruction
Computing (EPIC). Pada tahun 2002 dikeluarkan Intel Itanium 2 Processor yaitu

8
Itanium 2 adalah generasi kedua dari keluarga Itanium. Tahun 2003, Intel Pentium
M Processor, Chipset 855, dan Intel PRO/WIRELESS 2100 adalah komponen
dari Intel Centrino. Intel Centrino dibuat untuk memenuhi kebutuhan pasar akan
keberadaan sebuah komputer yang mudah dibawa kemana-mana.
Tahun 2004, Intel Pentium M 735/745/755 processor, dilengkapi dengan
chipset 855 dengan fitur baru 2Mb L2 Cache 400MHz system bus dan kecocokan
dengan soket processor dengan seri-seri Pentium M sebelumnya. Dikembangkan
selanjutnya Intel E7520/E7320 Chipsets, yaitu 7320/7520 dapat digunakan untuk
dual processor dengan konfigurasi 800MHz FSB, DDR2 400 memory, and PCI
Express peripheral interfaces.
2005 : Intel Pentium 4 Extreme Edition 3.73GHz
Sebuah processor yang ditujukan untuk pasar pengguna komputer yang
menginginkan sesuatu yang lebih dari komputernya, processor ini menggunakan
konfigurasi 3.73GHz frequency, 1.066GHz FSB, EM64T, 2MB L2 cache, dan
HyperThreading.
2005 : Intel Pentium D 820/830/840
Processor berbasis 64 bit dan disebut dual core karena menggunakan 2 buah
inti, dengan konfigurasi 1MB L2 cache pada tiap core, 800MHz FSB, dan bisa
beroperasi pada frekuensi 2.8GHz, 3.0GHz, dan 3.2GHz. Pada processor jenis ini
juga disertakan dukungan HyperThreading.
2006 : Intel Core 2 Quad Q6600
Processor untuk type desktop dan digunakan pada orang yang ingin kekuatan
lebih dari komputer yang ia miliki memiliki 2 buah core dengan konfigurasi
2.4GHz dengan 8MB L2 cache (sampai dengan 4MB yang dapat diakses tiap
core), 1.06GHz Front-side bus, dan thermal design power ( TDP )
2006 : Intel Quad-core Xeon X3210/X3220
Processor yang digunakan untuk tipe server dan memiliki 2 buah core dengan
masing-masing memiliki konfigurasi 2.13 dan 2.4GHz, berturut-turut, dengan
8MB L2 cache (dapat mencapai 4MB yang diakses untuk tiap core), 1.06GHz
Front-side bus, dan thermal design power (TDP)

1.3 Diagram CPU 8085


Mikroprosesor 8085 merupakan mikroprosesor sederhana dan dikemas dalam
bentuk DIP (Dual Inline Package) dengan jumlah penyemat sebanyak 40 buah.
Mikroprosesor 8085 memiliki jumlah Bus Alamat sebanyak 16 bit dengan
demikian dapat mengakses memori secara langsung sebanyak 216 alamat memori

9
atau sebanyak 65535 alamat, sering disebut sebagai 64K x 8 Bit atau 64KByte
memori secara langsung. Jumlah Bus Data adalah 8 bit, dengan demikian dapat
menghubungi peripheral dengan lebar data (Data Path Width) 8 bit. Mikroprosesor
ini tidak memiliki bus alamat 16 bit secara terpisah, melainkan bus alamat byte
terendah (low significant byte) yaitu A0..A7 dimultiplek dengan Bus Data
D0..D7.

Gambar 1.1 Chip IC Mikroprosesor 8085

Gambar 1.2 Diagram Pin Mikroprosesor 8085[data sheet 8085]

Deskripsi Pin 8085:


A8 - A15 (Output 3 State)
Address Bus; Yang paling signifikan 8 bit dari alamat memori atau 8 bit dari
alamat I/O, 3 stated mode Hold dan Halt.
AD0 - AD7 (Input/Output 3state)
Multiplexed Address/Data Bus; Lower 8 bits memory address (atau I/0
address) muncul pada bus selama siklus clock pertama dari state machine. Ini
kemudian menjadi bus data selama siklus clock kedua dan ketiga. 3 stated mode
Hold dan Halt.
ALE (Output)
Address Latch Enable: Hal ini terjadi selama siklus clock pertama dari state
machine dan memungkinkan alamat untuk latch ke chiplatch pada peripheral.

10
Tepi turun (falling edge) ALE adalah set untuk menjamin waktu setup dan hold
untuk informasi alamat. ALE juga dapat digunakan untuk strobe informasi status.
ALE tidak pernah 3 stated.
S0, S1 (Output)
Data Bus Status, mengkodekan status bus cycle:
S1 S0
0 0 HALT
0 1 WRITE
1 0 READ
1 1 FETCH
S1 dapat digunakan sebagai status advanced R/W.
RD (Output 3state)
READ: mengindikasikan pemilihan memori atau peralatan I/O untuk dibaca
dan Data Bus tersedia untuk transfer data.
WR (Output 3state)
WRITE: mengindikasikan data pada data bus ditulis ke memori atau peralatan
I/O. Data adalah set pada tepi naik (trailing edge) WR. 3 stated selama mode Hold
dan Halt.
READY (Input)
Jika Ready set selama siklus baca atau tulis, menunjukkan bahwa memori
atau peripheral adalah siap untuk mengirim atau menerima data. Jika Ready low,
CPU akan menunggu sampai Ready high sebelum menyelesaikan siklus baca atau
tulis.
HOLD (Input)
HOLD: menunjukkan bahwa master lain adalah meminta penggunaan Alamat
dan Bus Data. CPU, setelah menerima permintaan Hold akan melepaskan
penggunaan bus segera penyelesaian siklus mesin saat ini. Proses internal dapat
berlanjut. Prosesor dapat mengembalikan bus hanya setelah Hold dihapus. Ketika
diketahui ada line Hold, Alamat, Data, RD, WR, dan IO / M adalah 3 stated.
HLDA (Output)
HOLD ACKNOWLEDGE: menunjukkan bahwa CPU telah menerima
permintaan Hold dan akan melepaskan penggunaan bus dalam siklus clock
berikutnya. HLDA low setelah permintaan Hold dihilangkan. CPU mengambil
bus setelah setengah siklus clock HLDA low.
INTR (Input)
INTERRUPT REQUEST: digunakan sebagai interupsi tujuan umum. Ini
adalah sampel hanya selama setelah siklus clock terakhir dari instruksi. Jika aktif,
Program Counter (PC) tidak incrementing dan INTA akan dikeluarkan. Selama
siklus ini restart atau instruksi CALL dapat dimasukkan untuk melompat ke rutin

11
layanan interupsi. INTR diaktifkan dan dinonaktifkan oleh perangkat lunak. Hal
ini dinonaktifkan oleh Reset dan segera setelah interrupt diterima.
INTA (Output)
INTERRUPT ACKNOWLEDGE: digunakan sebagai pengganti (dan
memiliki waktu yang sama) RD selama siklus Instruksi setelah INTR diterima.
Hal ini dapat digunakan untuk mengaktifkan chip 8259 atau beberapa port
interrupt interupsi yang lain.
RST 5.5
RST 6.5 - (Inputs)
RST 7.5
RESTART INTERRUPTS
Tiga input ini mempunyai waktu yang sama sebagai INTR hanya saja mereka
menyebabkan restart internal untuk secara otomatis dimasukkan.
RST 7.5 ~~ Highest Priority
RST 6.5
RST 5.5 Lowest Priority
The priority of these interrupts is ordered as shown above. These interrupts
have a higher priority than the INTR.
TRAP (Input)
Trap interrupt is a nonmaskable restart interrupt. It is recognized at the same
time as INTR. It is unaffected by any mask or Interrupt Enable. It has the highest
priority of any interrupt.
RESET IN (Input)
Reset sets the Program Counter to zero and resets the Interrupt Enable and
HLDA flipflops. None of the other flags or registers (except the instruction
register) are affected The CPU is held in the reset condition as long as Reset is
applied.
RESET OUT (Output)
Indicates CPlJ is being reset. Can be used as a system RESET. The signal is
synchronized to the processor clock.
X1, X2 (Input)
Crystal or R/C network connections to set the internal clock generator X1 can
also be an external clock input instead of a crystal. The input frequency is divided
by 2 to give the internal operating frequency.
CLK (Output)
Clock Output for use as a system clock when a crystal or R/ C network is
used as an input to the CPU. The period of CLK is twice the X1, X2 input period.
IO/M (Output)
IO/M indicates whether the Read/Write is to memory or l/O Tristated during
Hold and Halt modes.

12
SID (Input)
Serial input data line The data on this line is loaded into accumulator bit 7
whenever a RIM instruction is executed.
SOD (output)
Serial output data line. The output SOD is set or reset as specified by the SIM
instruction.
Vcc, +5 volt supply.
Vss, Ground Reference.

1.4 Deskripsi Fungsional 8085


Mikroprosesor 8085A adalah 8 bit paralel central processor, hanya
membutuhkan catu daya tunggal +5 volt dengan clock speed adalah 3,2 MHz,
terdiri dari CPU, sebuah chip RAM/ IO, sebuah ROM atau PROM/IO.
8085A menggunakan multiplexed Data Bus. Address adalah kombinasi antara
higher 8 bit Address Bus dan lower 8 bit Address/Data Bus. Selama siklus
pertama address dikirim, lower 8 bits di-latched ke peripherals oleh Address Latch
Enable (ALE). Selama siklus mesin rest, data Bus digunakan untuk memory atau
data I/O.
8085A menyediakan signal RD, WR, IO/Memory dan control Interrupt
Acknowledge signal (INTA) untuk bus. Hold, Ready, dan semua Interrupts di
synkronisasi. 8085A juga menyediakan jalur serial input data (SID) dan serial
output data (SOD) untuk serial interface.
Sebagai tambahan, 8085A memiliki tiga maskable, restart interrupts and one
non-maskable trap interrupt. 8085A menyediakan signal RD, WR and IO/M untuk
Bus control.
Informasi Status
Informasi status dari 8085A, ALE sebagai status strobe. Status ini
mengkodekan dan menghasilkan timing dari type transfer bus yang dilakukan dan
signal status siklus IO/M. Pengkodean So, S1 menunjukkan status informasi:
HALT, WRITE, READ, FETCH.
S1 menyatakan sebagai R/W pada bus transfers. 8 bit LSB dari address
dimultipleks dengan data status. ALE digunakan sebagai strobe untuk
memasukkan setengah lower address ke memory atau peripheral address latch.
Interrupt dan Serial I/O
8085A mempunyai 5 interrupt input: INTR, RST5.5, RST6.5, RST 7.5, and
TRAP. INTR. RESTART inputs, 5.5, 6.5. 7.5, adalah programmable mask. TRAP,
RESTART adalah nonmaskable. Interupsi RESTART menyebabkan eksekusi

13
internal RST (menyimpan program counter di dalam stack dan lompat ke alamat
RESTART) jika interrupts enabled dan jika interrupt mask tidak set. Non-
maskable TRAP menyebabkan internal eksekusi RST tidak bergantung keadaan
interrupt enable or masks. Interrupts dikelompokkan pada tingkat prioritas, TRAP
highest priority, RST 7.5, RST 6.5, RST 5.5, INTR lowest priority.
Mikroprosesor Intel 8085 mempunyai kemampuan kerja dengan kecepatan
pelaksana instruksi sebesar 1,3s dan membutuhkan arus maksimum sebesar
170mA. Penyemat masukan memerlukan arus sebesar kurang dari 10 A dan
kapasitansi 10 pF. Hal ini berarti bahwa penyemat masukan Intel 8085 dapat
langsung dihubungkan dengan keluarga rangkaian terpadu (TTL, NMOS atau
CMOS) tanpa harus melalui suatu rangkaian antarmuka khusus.
Fitur Mikroprosesor 8085 antara lain:
1. Mikroprosesor 8 bit
2. N-MOS Technology
3. Mempunyai clock generator dengan eksternal Kristal, jaringan LC atau RC
sebagai penentu frekwensi pembangkit clock.
4. Memiliki 16 bit alamat (memiliki 216 = 65536 bytes (64KB) lokasi
memory melalui A8- A15dan 8 bit data ( D0 D7) yang dimultipleks pada
saluran alamat (A8- A15 ). 8 jalur saluran alamat sebagai lower.
5. Menyediakan 6 register serba guna (B, C, D, E, H, L)
6. Sebuah register Program Counter (PC) 16 bit
7. Sebuah register Stack Pointer (SP) 16 bit
8. Enam buah register serbaguna (general purpose register) yang dapat
dijadikan pasangan register yaitu: BC, DE, dan HL.
9. Membutuhkan signal power supply +5V dan beroperasi pada 3.2 MHZ
single phase clock.
10. Memiliki 246 instruksi
11. Menyediakan fasilitas untuk masukan dan keluaran serial
12. Mendukung adanya permintaan interupsi. Tersedia 5 buah masukan
interupsi.
13. Terdiri dari 40 pins DIP (Dual in line package).

1.5 Arsitektur Mikroprosesor


1.5.1 Model Mikroprosesor
Mikroprosesor adalah IC digital yang mempunyai sejumlah saluran data
(Data Bus), sejumlah saluran alamat (Address Bus), sejumlah saluran control
(Control Bus) dan saluran sumber daya (Power Supply). Suatu mikroprosesor
ideal mempunyai sejumlah N saluran masukan dan M saluran keluaran. Hanya

14
ada dua tingkatan tegangan pada saluran masukan dan keluaran yaitu logika nol
(0) atau logika satu (1).
Sinyal pada saluran masukan adalah data masukan ke mikroprosesor dapat
berasal dari switch, sensor, keyboard, ADC, mouse, scanner atau peralatan
lainnya. Saluran keluaran dapat dihubungkan dengan DAC, digital display,
penggerak, printer, monitor, alarm dan peralatan keluaran lainnya. Didalam
mikroprosesor disimpan program merupakan kumpulan serangkaian instruksi
berurutan menentukan bagaimana data masukan diproses dan informasi apa yang
dikirimkan ke saluran keluaran.
Arsitektur mikroprosesor memiliki beberapa sistem BUS ditunjukkan pada
Gambar 1.3.

Gambar 1.3 Arsitektur Mikroprosesor 8085 [wikipedia: Intel_8085]


1.5.2 Sistem BUS

15
Bus merupakan jalur penghubung antar alat pada komputer yang digunakan
sebagai media dalam proses melewatkan data pada suatu proses. Merupakan
sekumpulan kabel sebagai alat transportasi informasi kesemua peralatan dalam
sistem. Informasi tersebut dapat berupa data, perintah atau alamat. Bus ini bisa
dianggap sebagai sebuah pipa, dimana pipa atau saluran tersebut digunakan
untuk mengirimkan dan menerima informasi antar alat yang dihubungkannya.
BUS sebagai alat transportasi data dari terminal satu ke terminal lain di
dalam CPU. Jalur utama aliran data antara prosessor ke komponen lainnya
(seperti sound card, video card, memory) pada mainboard.
Karakteristik bus adalah:
1. Jumlah interupsi mementukan banyak perangkat independen yang
melakukan I/O.
2. Ukuran bus data eksternal berakibat pada kecepatan operasional I/O.
3. Ukuran bus alamat menentukan banyak memori yang ditunjuk board
ekspansi.
4. Kecepatan clock maksimum yang dapat diakomodasi bus berakibat
pada kinerja.
Interkoneksi Bus terdiri dari:
1. Data bus, mentransfer instruksi dari dan ke prosesor. Bus ini bersifat dua
arah.
2. Address bus (Memory bus), bertugas mentransfer alamat memori yang
akan digunakan oleh prosesor dalam proses tulis/baca data. Bus ini bersifat
satu arah.
3. Control bus (Command bus), mentransfer sinyal urutan dan sinkronisasi
yang berasal dari unit kontrol kepada semua komponen hardware. Bus ini
bersifat dua arah.
4. Power Supply, sebagai penyedia catu daya.

Bus Data
Data Bus: digunakan untuk mengirim/menerima data dalam bentuk biner
antara mikroprosesor dan unit external lain seperti memory. Jumlah Bus Data
adalah 8 bit, dengan demikian dapat menghubungi peripheral dengan lebar data
(Data Path Width) 8 bit.
Data Bus typically terdiri dari 8 wires, sehingga memiliki 2 8 kombinasi digit
biner. Data bus digunakan untuk transmit "data", yaitu informasi hasil arithmatika
antara memory dan mikroprosessor. Bus data adalah bi-directional. Ukuran data
bus menentukan berapa arithmetic dapat dilakukan. Jika hanya menggunakan 8 bit

16
maka ukuran number terbesar adalah 11111111 (255 decimal). Data Bus juga
membawa instruksi dari memory ke mikroprosesor.
Saluran data dapat berupa sebagai saluran data masukan dan keluaran,
sehingga setiap saluran data bersifat dua arah (Bidirectional). Saluran data
tersebut agar dapat berfungsi sebagai bus data masukan dan keluaran dapat
digunakan three state buffer untuk menghasilkan saluran dua arah. Data word 8
bit disebut byte, sedangkan word 4 bit disebut nible.

Address Bus (Bus Alamat)


Suatu mikroprosesor ideal mempunyai memori dalam (Internal Memory)
untuk menyimpan data dan program. Proses penyimpanan informasi dalam
memori disebut penulisan memori dan proses pengambilan informasi dari memori
disebut pembacaan memori. Setiap lokasi memori mengandung sebuah kata
memory (memory word) yang ukurannya ditentukan oleh lebar jalur data
mikroprosesor. Alamat dinyatakan dengan bilangan hexadecimal. Hubungan
antara mikroprosesor dengan memori melalui saluran data dan alamat. Setiap
saluran mempunyai logika 1 atau 0, maka untuk N buah saluran alamat memiliki
2N alamat memori yang berbeda.
Mikroprosesor ini memiliki bus alamat 16 bit secara terpisah, bus alamat byte
terendah (low significant byte) yaitu A0..A7 dimultiplek dengan Bus Data
D0..D7. Dengan demikian mikroprosesor 8085 belum siap dijadikan sebagai Unit
Mikroprosesor (MPU Microprocessor Unit). Selain itu bus kontrol
peripheral /MEMR, /MEMW, /IOR, dan /IOW belum terpisah sepenuhnya dan
harus dibangkitkan dari sinyal kontrol /RD (penyemat 32), /WR (penyemat 31),
IO/M (penyemat 34). Agar siap dijadikan sebagai MPU diperlukan beberapa
komponen tambahan yaitu rangkaian bus demultiplexer (pemisahan bus D0..D7
dan A0..A7) dan rangkaian dekoder sinyal kontrol.

Control Bus
Mikroprosesor mempunyai saluran kontrol, dipergunakan untuk
mensinkronkan cara kerja mikroprosesor dengan cara kerja komponen-komponen
di luar mikroprosesor. Kontrol Bus adalah jalur yang mempunyai fungsi spesifik
untuk koordinasi dan Kontrolling operasi mikroprosesor. Fungsi tidak dapat
berjalan dengan benar tanpa signal kontrol.
Saluran kontrol dapat dibagi menjadi:

17
1. Saluran kontrol masukan yang mempunyai arah panah dari luar ke dalam
mikroprosesor
2. Saluran kontrol keluaran mempunyai arah panah dari mikroprosesor ke
luar mikroprosesor.
Saluran kontrol dapat aktif High atau aktif Low. Saluran kontrol keluaran
aktif High, artinya saluran akan aktif pada nilai logika 1 untuk memberitahukan
kepada komponen di luar mikroprosesor bahwa informasi alamat yang terdapat
pada saluran alamat adalah benar (valid).

Saluran catu daya (Power Supply)


Catu daya mutlak diperlukan oleh mikroprosesor karena tanpa catu daya
mikroprosesor tidak akan dapat bekerja. Catu daya untuk setiap mikroprosesor
berbeda, tetapi yang terpenting diperhatikan adalah efisiensi daya yang digunakan
(daya hemat). Mikroprosesor 8085 memerlukan daya + 5 Volt.
Berbagai sinyal dalam sebuah mikroprosesor dapat diklasifikasikan sebagai:
1. Power supply dan Frekuensi sinyal: Sinyal yang membantu dalam
penyediaan listrik dan menghasilkan frekuensi berhubungan dengan tipe
ini. Pin seperti Vcc dan ground diklasifikasikan jenis ini.
2. Alamat sinyal: Sinyal yang terkait dengan multipleks bus alamat rendah
dan tinggi. Termasuk jenis sinyal ini adalah Address
3. Sinyal data: Sinyal yang terkait dengan data bus.
4. Kontrol dan Status Sinyal: Sinyal yang terkait dengan unit waktu dan
kontrol seperti HOLD, RW, WR dan lain-lain.
5. Sinyal Interrupt, seperti TRAP, RST 5,5
6. Sinyal I/O serial: Sinyal-sinyal ini digunakan untuk memberikan serial
data input dan output. Kategori Sinyal ini adalah SID, SOD.
7. Acknowledgement Sinyal: Sinyal seperti INTA, HLDA bertindak sebagai
sinyal penerimaan untuk mikroprosesor 8085.

1.6 Blok Diagram Mikroprosesor


Mikroprosesor secara umum terdiri dari: ALU (Arithmetic Logic Unit),
Control and Timing Unit, dan Array Register (Register Larik). Blok diagram
ditunjukkan pada Gambar 1.4. Fungsi utama Mikroprosesor adalah sebagai unit
Register
yang mengendalikan Iseluruh
N Memory
kerja sistem mikroprosesor.
T
ER
Arithmatic
F A
Logic Unit
(ALU) CE

Timing and
Control 18
Unit I/O
Gambar 1.4 Blok Diagram Mikroprosesor dengan Memory dan I/O
Mikroprosesor terdiri dari beberapa bagian:
1. Register, berfungsi untuk sebagai tempat penyimpanan sementara data,
alamat, kode instruksi dan bit status berbagai operasi mikroprosesor.
Fungsinya hampir sama dengan piranti memori mikroprosesor dengan
perbedaan bahwa: memori berada diluar mikroprosesor sedangkan register
berada didalam mikroprosesor. Memori diidentifikasi dengan alamat
sedangkan register diidentifikasi dengan nama register oleh mikroprosesor.
2. ALU (Arithmatic and Logic Unit), berfungsi untuk mengerjakan perintah
perintah logika dan operasi aritmetika dalam memproses data.
3. Timing and Control Unit, berfungsi untuk mengambil dan mendekodekan
instruksi dari memori program dan membangkitkan sinyal kendali yang
diperlukan oleh bagian lain dari mikroprosesor untuk melaksanakan
instruksi tersebut. Timing & Control Unit berfungsi sebagai pembangkit
daur-waktu untuk antarmuka dengan peripheral pada bus alamat, data dan
kontrol. Selain itu mengendalikan bus-bus tambahan lainnya seperti
interupsi, DMA dan lain sebagainya.
4. Memori digunakan untuk menyimpan data baik yang digunakan sebagai
program maupun sebagai penyimpan data yang diproses oleh CPU. Dua
tipe memori yang dikenal adalah RAM (Random Access Memory) dan
ROM (Read Only Memory). Kedua jenis memori ini jika digunakan pada
sistem berbasis mikroprosesor umumnya diletakkan pada ruang
pengaksesan yang berbeda. Hal ini dapat dilakukan dengan membuat peta
memori untuk kedua jenis memori ini.
Berdasarkan pada hilang atau tidaknya data/program di dalam
penyimpanan yaitu:
- Volatile Storage, Berkas data atau program akan hilang jika listrik
padam.
- Non Volatile Storage. Berkas data atau program tidak akan hilang
sekalipun listrik dipadamkan.
Berdasarkan Pengaksesan memory terbagi menjadi dua yaitu:

19
RAM (RANDOM ACCESS MEMORY). Bagian dari main
memory, yang dapat kita isi dengan data atau program dari diskette
atau sumber lain. Dimana data-data dapat ditulis maupun dibaca
pada lokasi dimana saja didalam memori. RAM bersifat
VOLATILE
ROM (READ ONLY MEMORY). Memori yang hanya dapat
dibaca. Pengisian ROM dengan program maupun data, dikerjakan
oleh pabrik. ROM biasanya sudah ditulisi program maupun data
dari pabrik dengan tujuan-tujuan khusus. Misal: Diisi penterjemah
(interpreter) dalam bahasa basic.
Jadi ROM tidak termasuk sebagai memori yang dapat kita
pergunakan untuk program-program yang kita buat. ROM bersifat
NON VOLATILE
Tipe Lain dari ROM Chip yaitu :
PROM (Programable Read Only Memory)
merupakan sebuah chip memory yang hanya dapat diisi data satu
kali saja. Sekali saja program dimasukkan ke dalam sebuah PROM,
maka program tersebut akan berada pada PROM seterusnya.
Berbeda halnya dengan RAM, pada PROM data akan tetap ada
walaupun komputer dimatikan.
Perbedaan mendasar antara PROM dan ROM (Read Only Memory)
adalah bahwa PROM diproduksi sebagai memory kosong,
sedangkan ROM telah diprogram pada waktu diproduksi. Untuk
menuliskan data pada chip PROM, dibutuhkan PROM Programmer
atau PROM Burner
EPROM (Erasable Programable Read Only Memory).
Jenis khusus PROM yang dapat dihapus dengan bantuan sinar ultra
violet. Setelah dihapus, EPROM dapat diprogram lagi.
EEPROM (Electrically Erasable Programable Read Only Memory).
EEPROM hampir sama dengan EPROM, hanya saja untuk
menghapus datanya memerlukan arus listrik.
EEPROM adalah tipe khusus dari PROM (Programmable Read-Only
Memory) yang bisa dihapus dengan memakai perintah elektris.
Seperti juga tipe PROM lainnya, EEPROM dapat menyimpan isi
datanya, bahkan saat listrik sudah dimatikan.

20
Sistem Kerja Memori.
Sistem operasi kerja memori, prinsipnya terdiri dari dua yaitu
operasi baca dan operasi tulis. Bila prosesor melakukan perintah
baca ke memori maka prosesor mengirimkan alamat data yang akan
diakses, kemudian mengirimkan sinyal kendali read (baca) yang
memerintahkan pada memori untuk mengeluarkan data pada alamat
yang ditunjukkan pada bus data. Operasi tulis yaitu bila prosesor
akan menyimpan data, informasi, instruksi atau kode operasi ke
memori. Dalam operasi tulis data, mikroprosesor terlebih dahulu
mengirimkan alamat melalui bus alamat ke memori, yang
menunjukkan lokasi alamat data pada memori yang akan ditulis.
Selanjutnya sinyal write (tulis) dikirimkan yang memberikan
perintah kepada memori untuk menyediakan tempat pada memori
untuk data yang ada pada bus data dengan alamat sesuai yang
ditunjukkan pada bus alamat. Siklus kerja memori diperlihatkan pada
gambar berikut.

Gambar 1.5 Diagram siklus waktu operasi baca dari memori

Penjelasan gambar 1.5 adalah sebagai berikut:


Mikroprosesor menempatkan alamat data yang akan dibaca pada bus
alamat.
Mikroprosesor memberikan pulsa sinyal kendali baca (aktif rendah).
Saat sinyal kendali aktif rendah, data pada bus data siap diambil /
dibaca.
Data sahih siap dibaca oleh mikroprosesor
Prosesor mengambil data dari bus data
Sinyal kendali kembali pada level tinggi.

21
Gambar 1.6. Diagram siklus waktu operasi tulis pada memori
Penjelasan dari gambar 1.6 adalah sebagai berikut:
Mikroprosesor memberikan data yang akan ditulis pada memori
pada bus data.
Mikroprosesor selanjutnya memberikan alamat lokasi data pada
memori untuk data yang akan ditulis pada memori ke bus alamat.
Prosesor kemudian memberikan sinyal kendali tulis (aktif rendah).
Saat sinyal kendali pada posisi rendah, data otomatis ditulis pada
memori dengan alamat lokasi pada alamat yang ditunjukkan bus
alamat.
Sinyal kendali kembali ke posisi level tinggi.
Memori siap menerima instruksi selanjutnya.
5. Unit Masukan dan Keluaran
Perantara antara mikroprosesor dengan dunia luar merupakan tugas dari
unit masukan dan keluaran pada suatu sistem mikroprosesor. Tanpa unit
masukan dan keluaran maka data yang diolah hanya berputar-putar dalam
sistem mikroprosesor, tanpa ada keluaran yang dapat diterima lingkungan
luar sistem mikroprosesor.
Teknik masukan dan keluaran pada sistem mikroprosesor dapat dibedakan
menjadi dua sistem yaitu:
Sistem Paralel, Data masukan/keluaran dikirimkan dalam bentuk
delapan bit paralel.
Sistem Serial, Data masukan/keluaran dikirim secara bit per bit
berurutan melalui satu jalur.
Beberapa fungsi lain dari mikroprosesor, antara lain:
1. Mengambil instruksi dan data dari memori.
2. Memindah data dari dan ke memori.
3. Mengirim sinyal kendali dan melayani sinyal interupsi.
4. Menyediakan pewaktuan untuk siklus kerja sistem mikroprosesor.
5. Mengerjakan fungsi fungsi operasi logika dan aritmatika.

1.7 Contoh

22
Mikroprosesor 8085 memiliki jumlah Bus Alamat sebanyak 16 bit dengan
demikian dapat mengakses memori secara langsung sebanyak 216 alamat memori
atau sebanyak 65535 alamat, sering disebut sebagai 64K x 8Bit atau 64KByte
memori secara langsung.
Contoh control bus adalah saluran Read/Not write terdiri dari satu bit. Saluran
control ini berfungsi untuk informasi menulis/write (data disimpan ke memori)
atau membaca/read (data diambil dari memori), Logika 1 = Read, Logika 0 =
Write.
Secara umum, mikroprosesor berisi :
- unit aritmetika/logika (ALU),
- register,
- bus internal, serta unit kendali,
seperti terlihat pada Gambar berikut ini

Gambar 1.7 Arsitektur umum mikroprosesor


Register dan ALU dihubungkan dengan bus internal dalam mikroprosesor
sehingga register dan memori (melalui bus data) dapat mensuplai data ke ALU
dan menerima hasilnya.
Dalam contoh ini, terdapat 2 buah register, A dan B, yang digunakan untuk
secara temporer menyimpan hasil komputasi.
Bus internal X dan Y digunakan untuk mentransfer data sebagai operand
yang akan diolah ALU.
Bus internal Z digunakan untuk mentransfer hasil operasi ALU ke register
atau memori (melalui bus data).
Register MA (Memory Address) berisi informasi alamat memori yang
akan diakses. Unit kendali mengendalikan semua operasi dalam
mikroprosesor. Perhatikan kepala panah yang menunjukkan arah aliran
data.
Sebagai contoh, kita hendak menjumlahkan data dari suatu lokasi di memori
dengan data dari register A serta menyimpannya di register B.

23
Register MA diisi dengan alamat memori yang akan dibaca, lalu register A
dihubungkan ke bus X, bus data dihubungkan ke bus Y, dan bus Z dihubungkan
dengan register B, kemudian ALU melakukan operasi penjumlahan. Instruksi
yang dijalankan oleh mikroprosesor ada di memori, berupa urutan data-data biner
yang merupakan bahasa mesin mikroprosesor. Apa yang dilakukan oleh
mikroprosesor tergantung dari instruksi yang diberikan tersebut. Misalnya
instruksinya adalah operasi menjumlahan isi register B dengan isi suatu memori
dan hasilnya disimpan di dalam register B lagi, maka operasi yang akan
dijalankan adalah oleh mikroprosesor adalah:
Mem(PC) MA
PC + 1 PC
B + Mem(MA) B

1.8 Rangkuman
1. Suatu mikroprosesor mempunyai N saluran masukan dan M saluran
keluaran yang dapat dihubungkan ke peralatan di luar mikroprosesor.
2. Mikroprosesor adalah IC digital yang mempunyai sejumlah saluran data
(Data Bus), sejumlah saluran alamat (Address Bus), sejumlah saluran
control (Control Bus) dan saluran sumber daya (Power Supply).
3. Data Bus: digunakan untuk mengirim/menerima data dalam bentuk biner
antara mikroprosesor dan unit external lain seperti memory. Saluran data
dapat berupa sebagai saluran data masukan dan keluaran, sehingga setiap
saluran data bersifat dua arah (Bidirectional).
4. Control Bus adalah jalur yang mempunyai fungsi spesifik untuk
koordinasi dan controlling operasi mikroprosesor.
5. Proses penyimpanan informasi dalam memori disebut penulisan memori
dan proses pengambilan informasi dari memori disebut pembacaan
memori. Setiap lokasi memori mengandung sebuah kata memory (memory
word) yang ukurannya ditentukan oleh lebar jalur data mikroprosesor.
6. Secara umum, mikroprosesor berisi :
- unit aritmetika/logika (ALU),
- register,
- bus internal, serta unit kendali.

1.9 Latihan
1. Jelaskan pengertian sistem BUS pada mikroprosesor?
2. Apa yang dimaksud Tri-state logic?

24
3. Apa saja klasifikasi interrupt 8085?
4. Apa saja Hardware interrupts?
5. Apa saja Software interrupts?
6. Interupt yang mana yang merupakan highest priority?
7. Berapa banyak interrupt 8085?
8. Berapa frekwensi clock 8085?
9. RST apa yang disebut dengan TRAP?
10. Dalam 8085 yang mana yang disebut sebagai High order/Low order
Register?
11. Apa saja peralatan input dan output?
12. Dapatkah rangkaian RC digunakan sebagai clock source untuk 8085?
13. Mengapa crystal lebih baik sebagai clock source?

BAB II
MODEL PEMOGRAMAN MIKROPROSESOR 8085
Pada bab ini menjelaskan tentang model pemograman mikroprosesor 8085.
Pembahasan meliputi fungsi register, mode pengalamatan dan fungsi intruksi pada
mikroprosesor 8085.
Perangkat sistem minimum merupakan rangkaian elektronik yang terdiri dari
sistem internal (software) dan sistem eksternal (hardware). Mikroprosesor hanya
dapat memproses jika diberikan instruksi kepadanya yang disebut dengan
program. Sebuah program adalah rangkaian logika dari instruksi. Setiap instruksi
menunjukkan beberapa aksi seperti memindahkan data dari suatu register ke
register lainnya atau menyimpan data dalam sebuah memori. Sebuah
mikroprosesor tanpa sebuah program adalah sebuah perangkat elektronika yang
mati. Sebuah program berarti sebuah kehidupan bagi mikroprosesor. Hal ini
memberikan kemungkinan kepada pemakai yang sangat bervariasi untuk
menghasilkan program sendiri dalam menyelesaikan masalah.

Tujuan Khusus
Mahasiswa mampu menjelaskan fungsi setiap register, mode pengalamatan
dan fungsi instruksi mikroprosesor 8085.

2.1 Analisis Register Dan Fungsinya


Setiap microprosessor selalu memiliki apa yang di namakan register,
sebagaimana namannya, microprosessor dingunakan untuk pengolahan data
digital secara luas. Artinya adalah, sesuatu yang akan dikerjakan oleh

25
microprosessor harus dalam bentuk sinyal sinyal digital dalam format urutan bit-
bit yang di namakan bit data.
Microprosessor tidak mengolah bit-bit secara satu persatu melainkan
sekaligus dalam format byte ataupun word. Byte adalah kumpulan dari 8 buah
bit sedangkan word adalah kumpulan dari 16 buah bit atau kumpulan 2 buah byte.
Microprosessor yang lebih baru dapat mengolah data dalam format 32 bit atau 2
word.
Khusus microprosessor 8085 mengolah data dalam format byte. Dalam
tugasnya byte yang akan diolah di tempatkan pada register-register untuk
membantu pemrosesan data. Untuk lebih mendekati artinya, sebuah register dapat
disamakan dengan sebuah variable. Tentu saja sebuah register berada dalam chip
microprosessor tersebut.
Dalam penjelasan sebelumnya kita menjelaskan register mikroprosesor 8085
mengacu pada operasi data internal. Informasi yang sama diulang di sini secara
singkat untuk memberikan kesinambungan dan konteks ke set instruksi dan
memungkinkan pembaca yang lebih memilih untuk fokus awalnya pada aspek
pemrograman mikroprosesor. Model pemrograman 8085 meliputi enam register,
satu akumulator, dan satu register bendera, seperti yang ditunjukkan pada Gambar
2.1. Selain itu, memiliki dua 16-bit register: stack pointer dan program counter.
Mereka digambarkan secara singkat sebagai berikut.

Gambar 2.1 Model Pemograman 8085

Register

26
Microprosessor 8085 dalam pemrogamannya menggunakan 11 buah
register yaitu register A, B, C, D, E, H, L, M, F, PC, dan register SP.
Mikroprosesor 8085 memiliki enam register umum untuk menyimpan data 8-bit,
dan diidentifikasi sebagai B, C, D, E, H, dan L seperti yang ditunjukkan pada
gambar 2.1. Register A hingga register F (di lambangkan dengan sebuah huruf
dalam register 8 bit, sedangkan register PC dan register SP adalah register 16 bit).
Register 8 bit dapat dijadikan register 16 bit dengan cara menyatukan 2 buah
register 8 bit yang bersesuaian. Programmer dapat menggunakan register ini untuk
menyimpan atau menyalin data ke dalam register dengan menggunakan instruksi
copi data.
Pasangan register yang bersesuaian itu adalah :
1. Register A dengan register F yang disebut dengan register PSW ( program
status word ).
2. Register B dengan register C
3. Register D dengan register E
4. Register H dengan register L
Pasangan register ini dalam sebutannya hanya menggunakan nama register B,
D dan H. Contohnya dalam perintah LXI H, 7000 dimaksudkan mengisi register
H dengan angka 70h dan L dengan 00h untuk menunjukkan alamat 7000h di
memori.
Register 8 bit selalu di pakai untuk menempatkan data 8 bit yang akan
diproses, begitu juga halnya dengan pasangan register digunakan untuk
menempatkan data 16 bit yang akan diproses. Karena pasangan register adalah
gabungan dari 2 buah register maka data 16 bit yang di simpan pada pasangan
register ini dapat di olah secara 8 bit-8bit.

Akumulator
Akumulator adalah sebuah register 8-bit yang merupakan bagian dari
aritmatika/logika unit (ALU), register ini digunakan untuk menyimpan data 8-bit
yang akan dioperasikan secara aritmatika dan logika pada unit ALU. Hasil
operasi disimpan dalam akumulator. Register A atau disebut juga sebagai
accumulator di karenakan di register A inilah tempat berlangsungnya proses
aritmatika dan logika, juga merupakan pusat pengolahan data. Pemindahan data
dari register ke memory harus melalui register ini juga kebalikannya dan dari

27
memory ke memory juga harus melalui register ini. Begitu pula dari port
input/output harus melalui register ini dahulu.
Perintah logika seperti ANA reg, ANI data, ORA reg, ORI data, XRA reg,
XRI data, RAR, RRC, dan perintah aritmatika ADD reg, ADC reg, ADI data, SUB
reg, SUI data, CMP reg serta CPI data, semua perintah-perintah tersebut di
laksanakn di register A (artinya hasil dari perintah tersebut juga di letakkan di
register A).
Register B, C, D, E, H dan L
Register-register ini digunakan untuk pemakaian umum sebagai tempat
menyimpan data 8 bit atau sebagai variable 8 bit. Pengisian data 8 bit di lakukan
pada perintah MVI reg, data. Pengisian data 16 bit di lakukan melalui pasangan
register dengan perintah LXI preg, data. Preg adalah pasangan register dengan
hanya menuliskan register pertamannya saja dan data yang di masukkan adalah
data 16 bit (4 angka heksa).
Contoh :
MVI B, 20 mengisi reg. B dengan data 20 H atau B = 20 H
LXI B, 2000 mengisi pasangan register BC dengan data 2000 H atau
reg. B =20 dan reg.C = 00
MVI A, 40 reg A = 40 (setiap data adalah heksadesimal)
LXI H, 8000 reg H = 80 dan reg L =00

Register M (Memori)
Register ini disebut register memori karena ia berisi data yang terletak di
memori yang alamatnya di tunjukan oleh pasangan register HL.
Contoh :
LXI H, 8000 menggunakan pasangan reg. HL sebagai penunjuk
alamat memori 8000
MOV A, M mengisi reg. A dengan data yang ada di memori
8000 atau reg, A M (HL) atau reg, A M (8000)
MVI M, 40h mengisi memori yang alamatnya ditunjukan oleh
pasangan reg. HL yaitu 8000h artinya data pada
memori 8000h adalah 40h dan di lambangkan
dengan symbol operasi (HL) 40h atau M 40h.
Seperti di contohkan di atas, register M ini sebelum digunakan maka harus
mengisi pasangan register HL terlebih dahulu sebagai penunjuk alamatnya.
Menyiapkan register atau pasangan register dengan mengisikan data terlebih
dahulu sebelum nantinnya akan dipakai diistilahkan sebagai proses inisialisasi
atau persiapan. Inisialisasi sebaiknya di laksanakan pada awal program.

28
Melalui reg. M ini maka proses pemindahan data atau register dengan memori
dapat langsung tanpa melalui register A, yaitu dengan perintah MOV M, reg atau
MOV reg, M dimana register disini adalah register 8 bit yang datannya akan
diisikan ke memori atau register yang akan diisi dengan data dari memori.

Register Flags (Register Bendera)


Register Flag berisi status program yang baru saja di laksanakan. Register
Flag meliputi : Zero (Z), Carry (CY), Sign (S), Parity (P), dan Auxilarry Carry
(AC). Posisi bit mereka dalam register bendera ditunjukkan pada Gambar 2.2.

b7 b6 b5 b4 b3 b2 b1 b0
S Z AC P CY
Gambar 2.2 Posisi bit register Flag
Flag sangat penting dalam proses pengambilan keputusan mikroprosesor.
Kondisi (set atau reset) dari bendera diuji melalui instruksi perangkat lunak.
Sebagai contoh, instruksi JC (Jump if Carry) dilaksanakan untuk mengubah
urutan dari program ketika CY flag diatur. Pemahaman menyeluruh bendera
sangat penting dalam menulis program bahasa assembly.
Status atau kondisi yang diterangkan melalui register flag dinyatakan melalui
kondisi bit-bit tertentu, yaitu:
Sign: yaitu polaritas suatu angka, apakah data yang baru saja diolah
adalah data negatip atau positip. Sign suatu data ditentukan oleh bit
MSB-nya (bit ke-8) dari data tersebut. Bila bit tersebut berlogika 1
berarti data tersebut negatip, bila nol berarti positip. Contoh : data
EFh adalah negatip dan 7Eh adalah positip.
Zero: bit yang menerangkan bahwa data hasil pelaksanaan suatu perintah
adalah 00 (nol). Bila bit ini bernilai 1 berarti data hasil adalah
00 (nol) dan bila bernilai 0 berarti data tidak 00.
Parity: menerangkan jumlah bit data yang bernilai 1 berjumlah genap atau ganjil.
Bila bit-bit data memiliki nilai 1 yang berjumlah ganjil maka bit parity
ini akan direset menjadi 0 dan bila jumlah bit data yang bernilai 1 adalah
genap maka bit parity akan diset 1.
Contoh : 7F adalah data dengan parity ganjil
3F adalah data dengan parity genap
40 adalah data dengan parity ganjil
Auxiliary carry atau half carry:
adalah bit yang menunjukan terjadinya carry dari hasil penjumlahan bit ke-
3 pada accumulator dengan bit ke-3 data lainnya.

29
Contoh :
MVI A, 08 program singkat ini adalah menjumlahkan accumulator
ADI 88 dengan data 88, prosesnya:

REG. A 0000 1000 = 08 H


Data 1000 1000 = 88 H
Hasil 1001 0000 = 90 H
Tanda panah menunjukkan adannya carry dari hasil penjumlahan bit ke-3
dari kedua data tersebut yang di sebut dengan half carry atau auxiliary carry.
Carry atau borrow:
bit pada reg. flag yang menunjukkan informasi adanya bit simpanan
(carry) atau terjadinya bit pinjaman (borrow) dari hasil pelaksanaan
suatu perintah aritmatika. Seperti biasannya bit carry ini di anggap
berada sebelah kiri data (di kiri bit MSB). Jadi bit carry atau borrow ini
di anggap sebagai bit ke-9 dari suatu data hasil.
Contoh :
MVI A, FF reg.A = 1 1 1 1 1 1111 = FF H
ADI 01 data = 0000 0001 = 01 H
Hasil 0000 0000 = 00 H
Pada contoh di atas diperlihatkan bahwa penjumlahan terjadi half carry dan
juga carry. Proses ini juga menunjukkan adannya status zero karena hasil yang di
dapat adalah 00 (nol).
Contoh :
MVI A, 00 reg .A = 1 0 0 0 0 0000 = 00 H
SUI 01 data = 0000 0001 = 01 H
Hasil = 1111 1111 = FF H
Pada contoh pengurangan di atas di perlihatkan adannya borrow dan pada
contoh ini juga menunjukkan adanya status sign = 1 atau data hasil adalah
bilangan negatip dan juga paritinya genap.
Ke-5 kondisi yang di jelaskan di atas di tunjukkan oleh reg. Flag melalui
kondisi bit-bit nya yang telah di tentukan. Setiap kondisi di jelaskan melalui
sebuah bit, hal ini berarti ada 5 bit yang digunakan pada reg. flag sedangkan 3 bit
lainnya tidak berguna atau dapat di abaikan. Bit-bit yang di abaikan ini bisa saja
berharga 1 atau 0 sehingga data reg. flag ini bisa berubah-ubah akibat perubahan
bit-bit yang tak berguna. Tetapi register flag tidaklah sama dengan register yang
lainnya. Register ini tidak di gunakan untuk menyimpan data oleh pemrogram
atau tidak bisa dan tidak boleh di jadikan sebagai sebuah variable seperti layaknya
register-register lainnya. Register flag hanyalah sebagai indikasi kepada kita
bagaimana status jalannya suatu pengolahan data secara digital. Bahkan register

30
flag ini tidak pernah di pakai dalam pembuatan pemrograman, melainkan sebagai
bayangan latar belakang untuk dapat lebih memahami jalannya suatu program.
Dengan contoh-contoh program pada pemakaian perintah-perintah
pemrogram kelak anda akan lebih memahami mengapa register flag ini disebut
sangat penting tetapi tidak pernah di gunakan saat kita menulis program.
Pemamfaatan informasi yang ditunjukkan oleh register flag ini adalah
langsung dalam bentuk perintah-perintah bersyarat dimana syarat-syarat yang
diminta adalah status yang di tunjukkan oleh bit-bit yang 5 tadinnya.
Beberapa perintah bersyarat yang tergantung kepada bit-bit status yang
berada pada register flag adalah:
Bit Status Perintah Penjelasan
(mnemonic )
SIGN JM Alamat melompat kesuatu alamat program bila bit sign=
1 (minus/negatip)
JP Alamat bila bit sign= 0 ( positip )
CM Alamat memanggil subrutin bila sign = 0
RM kembali ke program pemanggil bila sign= 1
RP kembali bila data positip
ZERO JZ Alamat melompat ke alamat bila data = 00 (Z=1)
JNZ Alamat melompat bila bit data 00 (Z=0)
CZ Alamat memanggil subrutin bila data = 00
CNZ Alamat memanggil subrutin bila data 00
RZ kembali kepemanggil bila data = 00
RNZ kembali bila data 00
PARITY JE Alamat melompat bila parity data genap
JO Alamat melompat bila parity data ganjil
CO Alamat memanggil subrutin bila parity data adalah ganjil
CE Alamat memanggil subrutin bila parity data adalah genap
RE kembali ke pemanggil bila parity data adalah
genap
RO kembali bila parity ganjil
CARRY JC Alamat melompat bila terjadi carry
JNC Alamat melompat bila tidak ada carry
CC Alamat memanggil subrutin bila ada carry
CNC Alamat memanggil subrutin bila tidak terjadi carry
RC kembali keprogram pemanggil bila terjadi carry
RNC Kembali ke program pemanggil bila tidak terjadi
carry

Register Program Counter (PC)


Register 16-bit ini berkaitan dengan urutan eksekusi instruksi. Register ini
adalah pointer memori. Lokasi memori memiliki 16-bit alamat, dan itulah

31
sebabnya disebut register 16-bit. Mikroprosesor menggunakan register ini untuk
urutan pelaksanaan instruksi. Fungsi dari program counter adalah untuk menunjuk
ke alamat memori dari mana byte berikutnya yang akan diambil. Ketika byte
(kode mesin) sedang diambil, program counter bertambah satu untuk menunjuk ke
lokasi memori berikutnya.
Register ini berisi alamat program yang akan di jalankan mulai dari 0000 H
sampai FFFF H atau memiliki 16 bit data untuk menunjukkan suatu alamat
memori. Kerjannya register ini lebih jelas bila kita menggunakan menu step.
Setelah melaksanakan suatu baris program isi register PC menunjukkan alamat
baris program berikutnya yang akan di laksanakan.
Pada pelaksanaan perintah panggilan (perintah CALL bersyarat atau tidak)
maka isi register PC disimpan di stack (memori yang di tunjukkan register SP)
sehingga isi register SP akan berkurang 2, karena isi reg. PC yang 16 bit
membutuhkan dua memori untuk menyimpannya. Kemudian nantinnya saat
perintah kembali (perintah RET bersyarat ataupun tidak) maka isi register PC
yang disimpan tadi di stack akan di kembalikan sehingga setelah melaksanakan
perintah RET tersebut maka program pemanggilnya (baris di bawah perintah
CALL yang memanggil subrutin itu sebelumnnya) dan harga register SP akan
kembali lagi seperti sebelum perintah CALL itu dijalankan.

Stack Pointer (SP)


Stack pointer juga merupakan register 16-bit digunakan sebagai pointer
memori. Ini menunjuk ke sebuah lokasi memori dalam R/W memori, yang disebut
stack. Awal dari stack adalah didefinisikan dengan memuat 16-bit alamat dalam
stack pointer. Ini model pemrograman yang digunakan untuk memeriksa
bagaimana register terpengaruh setelah eksekusi instruksi.
Sebagai register penunjuk alamat tumpukan (arti bebas dari stack pointer)
adalah menunjukan alamat memori dimana suatu data dapat di simpan secara
beurutan dari memori yang tertinggi hingga ke rendah (menumpuk data). Tentu
saja dapat diambil kembali bila diperlukan. Register SP ini hanyalah menunjukan
alamat memori penyimpan yang telah ditentukan oleh program set-up pada saat
komputer dihidupkan.
Register ini sebenarnnya khusus di pakai pada perintah PUSH register dan
POP register dimana register yang dimaksudkan adalah pasangan register. Untuk
pemakaian PUSH dan POP ini sebenarnya kita tidak perlu mengetahui dimana

32
atau kemana data akan di simpan atau di tumpuk oleh program atau berapa harga
register SP ini. Prinsip tumpukan disini disebut LIFO (last in first out) maksudnya
data yang terakhir disimpan merupakan data yang pertama sekali akan terambil
bila data-data tumpukan itu akan diambil.
Default harga register SP ini (harga yang akan di tentukan sendiri oleh
komputer pada saat pertama sekali di hidupkan) diletakkan pada alamat memori
tertinggi karena prinsip bekerjannya adalah menghitung turun. Artinya semakin
banyak data yang di simpan di memori stack ini maka harga register SP ini akan
semakin rendah.

2.2 Mode Pengalamatan (Adressing Mode)


Instruksi MOV B, A atau MVI A, 82H adalah untuk menyalin data dari
sumber ke tujuan. Dalam instruksi ini sumber bisa register, port input, atau 8-bit
data (00H untuk FFH). Demikian pula, tujuan bisa register atau port output.
Sumber dan tujuan adalah operand. Berbagai format untuk menentukan operand
disebut Addressing Mode (Mode Pengalamatan). Mode Pengalamatan
mikroprosesor 8085 adalah:
1. Immediate addressing Mode.
2. Register addressing Mode.
3. Register Indirect Addressing Mode
4. Direct addressing Mode.
5. Implicit addressing Mode.

2.2.1 Immediate Addressing Mode


Data berada dalam instruksi. Load data langsung untuk tujuan yang diberikan.
Dalam hal ini jenis mode pengalamatan operand ditentukan dalam instruksi itu
sendiri.
Contoh: MVI R, data : Load data langsung ke register yang dituju.

2.2.2. Register Addressing Mode


Data disediakan melalui register. Mode pengalamatan jenis ini, instruksi
menentukan nama dari register di mana data tersedia dan opcode menentukan
nama (atau) alamat dari register yang operasi akan dilakukan.

Contoh:
MOV A, B
Opcode adalah MOV. Jika intruksi di atas dijalankan, isi Register B dipindahkan
ke register A.

33
Contoh lain:
ANA B
SUB H
Pada eksekusi instruksi di atas isi dari register B di AND kan dengan isi
register A (akumulator). Jika kita mengeksekusi instruksi ini isi dari register H
akan dikurangi dari isi akumulator.

2.2.3 Register Indirect Addressing Mode


Ini adalah pengalamatan cara tidak langsung. Dalam mode ini instruksi
menentukan nama dari register di mana alamat data yang tersedia.
Contoh:
MOV A, M
SUB M
DCR M
Perhatikan instruksi MOV A, M. Instruksi ini akan memindahkan isi dari
lokasi memori, yang alamatnya dalam pasangan register HL ke akumulator. M
mewakili lamat di pasangan register HL. Jadi, ketika MOV A, M dieksekusi, isi
alamat yang ditentukan dalam pasangan register HL dipindahkan ke akumulator.
Lokasi memori
2002H
2003H
H L A 2004H
20 05 18 18 2005H

2.2.4 Direct Addressing Mode


Dalam mode ini, alamat data (operand) yang ditentukan dalam instruksi.
Ada perbedaan yang halus antara mode pengalamatan langsung (Direct) dan mode
pengalamatan segera (Immediate). Dalam mode pengalamatan immediate data itu
sendiri ditetapkan dalam instruksi, tetapi dalam mode pengalamatan direct alamat
data yang ditentukan dalam instruksi.
Digunakan untuk menerima data dari perangkat luar untuk disimpan dalam
akumulator atau mengirim data yang disimpan dalam akumulator ke perangkat

34
luar. Menerima data dari port 00H (IN 00H) dan menyimpannya ke dalam
akumulator atau mengirim data dari akumulator ke port 01H (OUT 01H).
Contoh:
IN 00H
OUT 10H
LDA 4100H
STA 2000H

2.2.5 Implicit Addressing Mode:


Ada petunjuk tertentu di 8085 yang tidak memerlukan alamat operand untuk
melakukan operasi. Mereka beroperasi hanya pada isi dari akumulator.
Contoh:
CMA
RAL
RAR
CMA complements isi akumulator.
Jika RAL dieksekusi isi akumulator diputar ke kiri satu bit melalui carry
Jika RAR dieksekusi isi akumulator diputar ke kanan satu bit melalui carry.

2.3 Fungsi Instruksi/Perintah


Perintah yang digunakan pada mikroprosessor 8085 ini cukup banyak dan
cukup sulit untuk menghafal seluruh perintah tersebut satu-persatu. Namun
dengan mengelompokannya kedalam fungsi-fungsi yang bersamaan maka kita
akan sangat tertolong untuk lebih cepat mengenal setiap perintah. Bila perintah-
perintah dikelompokkan berdasarkan fungsinnya yang bersamaan maka ada :
1. Transfer function (fungsi pemindahan)
2. Initial function (fungsi pengisian)
3. Logic function (fungsi logika)
4. Arithmatik function (fungsi aritmatika)
5. Interchange function (fungsi pertukaran)
6. Setting function (fungsi penetapan)
7. Jumping function (fungsi lompatan)

2.3.1 Transfer Function (perintah pemindahan)


Yang dimaksudkan dengan pemindahan adalah mengisi suatu register atau
memori dengan suatu data yang diambil dari tempat asalnya tanpa mengubah data
yang berada di tempat asalnya tersebut.
Perintah-perintah yang termasuk ke dalam kelompok ini adalah:
MOV reg2, reg1 pemindahan data dari register 1 ke register 2
STA Alamat pemindahan isi reg. A ke memori pada alamat yang di
tunjukan
LDA Alamat kebalikan perintah STA, yaitu memindahkan data dari

35
memori yang di tunjukan ke reg. A
STAX preg sama halnya seperti STA, hanya saja alamat memorinya
tidak di tunjukan secara langsung melainkan di tunjukan
oleh pasangan register yang di tunjukan pada preg
(pasangan register)
LDAX preg memindahkan data dari memori yang di tunjukan
pasangan register ke reg. A
IN PORT mengambil data dari port yang nomornya di tunjukan ke
reg. A
OUT PORT mengeluarkan data dari reg. A ke port keluaran
LHLD Alamat pemindahan data 16 bit dari memori yang alamat
ditunjukkan ke pasangan register HL. Alamat yang
ditunjukkan akan mengisi reg. L lalu alamat berikutnya
akan mengisi reg. H
SHLD Alamat kebalikan dari perintah LHLD.
PUSH preg menyimpan isi pasangan register ke memori yang alamat
nya ditunjukkan oleh reg.SP. isi register yang di sebutkan
akan disimpan di memori yang ditunjukkan oleh reg.SP
dikurangi satu alamat, ssedangkan isi pasangannya
disimpan di bawahnya.
POP preg memindahkan kembali data yang telah disimpan dengan
perintah push sebelumnya dan meletakkan kepada
pasangan register yang ditunjukkan. Setelah perintah POP
ini dilakasanakan maka reg.SP akan bertambah 2 alamat.
Perhatikan bahwa setelah perintah push dijalankan maka
alamat SP akan berkurang 2 hingga setiap kali data
disimpan maka data terus bertumpuk ke bawah. Lalu bila
perintah POP dijalankan maka alamat SP akan naik 2 terus
dan data diambil mulai dari alamat bawah. Artinya adalah
tidak mungkin terjadi tumpang tindih penyimpanan karena
setiap kali menyimpan SP akan turun, begitu pula tidak
akan pernah ada pengambilan data pada alamat yang sama
karena setiap pengambilan dengan perintah POP alamat SP
bertambah 2.

Contoh 1:

36
LXI D,8000 ; mengisi pasangan DE = 8000
MVI A, 59 ; mengisi reg ,A = 59
STAX D ; sekarang memori pada [8000] = 59
LXI B, 9000 ; mengisi pasangan BC = 9000
LDAX B ;Sekarang isi reg.A sama dengan isi memori 9000
IN 51 ; mengambil data dari port 51 H
MVI A, 78 ; mengisi reg. A = 78
Out 50 ; mengeluarkan data78 ke port keluaran 50 H.

Contoh 2:
MVI A,26 ; reg.A = 26
STA 7000 ; memori 7000 = 26 ( M7000 = 26 )
MVI A,89 ; reg.A =89
STA 7001 ; memori 7001 = 89 ( M7001 = 89 )
LHLD 7000 ; reg.H sekarang berisi 89 reg. L berisi 26
Contoh 3:
LXI H, 6789 ; reg.H = 67 dan reg.L == 89
SHLD 7000 ; M7000 = 89 dan M7001 = 67
Contoh 4:
LXI SP,F002 ; mengisi reg. SP = F002
LXI B,2045 ; mengisi reg. B = 20 reg C = 45
PUSH B ; menyimpan isi BC ke stack MF001 = 20 MF000= 45
reg. SP sekarang = F000
Prakteknya dalam instruksi PUSH dan POP, kita tidak perlu menetapkan isi
register SP lagi karena program telah menetapkan secara default harga SP pada
memory yang aman pada daerah tertinggi, sehingga bila kita ingin menyimpan
data cukup menggunakan perintah push saja.
Contoh 5:
LXI SP, A010 ; menetapkan alamat tumpukan awal
LXI B, 0102 ; reg.B =01 reg.C= 02
LXI D, 0304 ; reg.D =03 reg.E= 04
LXI H, 0506 ; reg.H =05 reg.L= 06
PUSH B ; MA00F = 01 MA00E = 02
PUSH D ; MA00D = 03 MA00C = 04
PUSH H ; MA00B = 05 MA00A = 06
LXI B, 0000 ; menggosongkan isi register
LXI D, 0000 ; B, C, D, E, H dan L = 00 H
LXI H, 0000
POP H ;mengembalikan data yang disimpan di stack ke
POP D registernya kembali.
POP B Reg.B = 01 C = 02 D = 03
E = 04 H = 05 L = 06

Perhatikan pada perintah push, isi pasangan register yang disebut disimpan
pada alamat SP-1, sedangkan isi pasangannya pada SP-2 dan harga SP akan

37
berkurang 2 dan terus berkurang 2. Lihat saja harga register SP setelah perintah
PUSH terakhir akan berharga A00A H. urutan pengambilan data (perintah POP)
terlihat terbalik urutan pasangannya registernya, kalau saat menyimpan register
BC ada pertama maka saat pengambilan maka register BC adalah terakhir.
Contoh 6:
LXI SP A010 ; alamat awal tumpukan
PUSH B ; MA00F reg B MA00E reg C
PUSH D ; MA00D reg D MA00C reg E
POP B ; reg.B MA00D reg. C MA00C
POP D ; reg.D MA00F reg. E MA00E

Perhatikan contoh ini bahwa pengambilan data disimpan ke pasangan register


mana saja yang kita kehendaki. Hal ini memungkinkan kita menggunakan
perintah push dan pop untuk saling menukarkan dua buah isi pasangan register
dengan cara seperti contoh di atas yaitu dengan menempatkan urutan
penyimpanan dan pengambilan yang sama.
Yang penting lihatlah bahwa kita tidak perlu mengetahui harga SP untuk
menyimpan maupun mengambil data melainkan terus memperhatikan urutan
penyimpanan dan pengambilannya.

2.3.2 Fungsi Pengisian (Initial Function)


Fungsi pengisian adalah memasukkan suatu data secara langsung ke suatu
tempat, baik ke register ataupun ke memori. Prinsip data langsung ini dikenal
sebagai Immediate yang ditandai dengan huruf I di akhir mnemonic perintah.
Contoh:
MVI reg, data : dimaksudkan untuk mengisi register dengan data 8 bit.
LXI preg, data : dimaksudkan untuk mengisi pasangan register dengan data
16 bit.

2.3.3 Fungsi Logika (Logic Function)


Kelompok fungsi logika adalah perintah-perintah yang dalam bekerjanya
berdasarkan bit-bit data secara terpisah, sehingga dalam menganalisa perintah ini
kita harus menguraikan data dalam bentuk biner.
Contoh:
ANA reg: Melakukan proses AND antara isi register A dengan isi register
yang disebutkan.
ORI data: Melakukan proses OR antara isi register A dengan data 8 bit yang
disebutkan.
XRA reg: Melakukan proses EXOR antara register A dengan isi register
yang disebutkan.

38
RAR: Menggeser isi register A ke kanan 1 bit, bit LSB akan dimasukkan
ke carry sedangkan isi carry yang sebelumnya dimasukkan ke bit
MSB.

2.3.4.Arithmatic Function (Fungsi Aritmatika)


Fungsi aritmatika yang dimiliki oleh mikroprosessor 8085 ini hanyalah proses
penjumlahan dan pengurangan, tetapi memiliki beberapa cara dalam
pelaksanaannya. Perintah-perintah yang termasuk ke dalam kelompok ini adalah :
ADD reg; menjumlahkan isi reg,A dengan isi register yang disebutkan. Hasil
penjumlahan akan disimpan kembali ke reg.A.
Contoh:
MVI A, 05
MVI B, 73
ADD B ; 05 + 73 = 78 reg .A = 78
MVI C,87
ADD C ; 78 + 87 = FF reg.A = FF
ADC reg; menjumlahkan isi reg.A dengan isi register yang disebutkan dan
menjumlahkannya lagi dengan bit carry sebelum perintah ini
dijalankan.
contoh :
STC ; set carry = 1
MVI A, 05
MVI B, 73
ADC B ; 05 + 73 + 1 = 79 reg.A = 79 Cy = 0
MVI C, 87
ADC C ; 79 + 87 + 0 = 00 reg. A = 00 Cy = 1
ADI data; menjumlahkan isi reg. A dengan data 8 bit yang disebutkan.
Contoh:
MVI A, 07
ADI 23 ; 07 + 23 = 2A reg. A= 2A
SUB reg; mengurangi reg A dengan isi register yang disebutkan.
Contoh:
MVI A, 23
MVI D, 04
SUB D ; 23 04 = 1 F reg A = 1 F
SBB reg; mengurangi reg A dengan isi register yang disebutkan dan
dikurangi lagi dengan bit carry sebelum perintah ini dilaksanakan.
Contoh :
STC
MVI A, 27
MVI E, 27
SBB E ; 27 27-1 = FF reg . A = FF Cy = 1
SUI data; mengurangi isi reg. A dengan data 8 bit dan meletakkan hasilnya
kembali ke reg.A

39
Contoh:
MVI A, 07
SUI 08 ; 07 08 = FF
reg A = FF Cy = 1
SBI data; mengurangi isi reg A dengan data 8 bit dan menguranginya lagi
dengan bit carry sebelumnya
Contoh :
STC
MVI A, 07
SBI 08 ; 07 08 1 = FE
reg A = FE Cy = 1
INR reg; menambahkan isi register yang disebutkan dengan 1 dan
meletakkannya kembali ke register tersebut.
Contoh :
MVI B, 88
INR B ; 88 + 1 = 89
reg. B = 89
DCR reg; mengurangi isi register yang disebutkan dengan 1
Contoh :
MVI C, 00
DCR C ; 00 1 = FF reg.C = FF
DAD reg; menjumlahkan isi pasangan register yang disebutkan dengan isi
pasangan register HL dan meletakkan hasilnya ke pasangan register
HL.
Contoh :
LXI H, 2028
LXI B, 0321
DAD B ; 2028 + 0321 = 2349H reg. HL = 2349
INX reg; menambahkan isi pasangan register yang disebutkan dengan 1.
Contoh :
LXI B, 8000
INX B ; reg BC = 8000 + 1 = 8001
DCX reg; mengurangi isi pasangan register yang disebutkan dengan 1.
Contoh :
LXI D, 9067
DCX D ; reg. DE = 9067 1 = 9066
CMP reg; membandingkan isi reg.A dengan isi register yang disebutkan.
Karena hanya membandingkan maka isi reg. A ataupun isi register
bandingannya tidak mengalami perubahan isi/datanya. Perintah ini
hanya mempengaruhi bit-bit status pada reg. Flag dan untuk
dipakai bersama perintah-perintah bersyarat. Proses perbandingan

40
yang dilakukan sama dengan proses pengurangan pada perintah
SUB reg.
Contoh :
MVI A, 03
MVI B, 01
MVI C, 04
MVI D, 03
CMP B ; 03 01 = 02 :kondisi bit status flag:
Sign=0 (positip ), zero=0 (tidak nol ),
parity=0 (ganjil), carry : 0
CMP C ; 03 04 =FF:kondisi bit status flag:
sign : 1 ( negatif ) zero : 0
parity : 1 (ganjil ) carry : 1 (pinjaman)
CMP D ; 03 03 = 00
sign : 0 (positip ) zero : 1 ( hasil = 0 )
parity : 0(genap ) carry : 0
CPI data; membandingkan isi reg. A dengan data 8 bit yang disebutkan.
Contoh :
MVI A, 03
CPI 01 ;hasil sama dengan contoh perintah CMP reg di atas
CPI 04
CPI 03
Perintah CMP reg dan CPI data selalu digunakan diikuti dengan perintah
bersyarat seperti yang dijelaskan pada pembahasan register Flag.

2.3.5 Fungsi Pertukaran (Exchange Function)


Pertukaran di maksudkan sebagai pemindahan data dari tempat pertama ke
tempat ke dua sedangkan data di tempat dua dipindahkan ketempat pertama.
Fungsi pertukaran ditunjukkan untuk pertukaran isi register 16 bit dengan register
16 bit lainnya.
Perintah-perintah yang termasuk kedalam kelompok ini adalah:
XCHG; pertukaran isi antara pasangan reg.HL dengan REG.DE
Contoh:
LXI D, 8090
LXI H,A0B0
XCHG :Reg. DE = A0B0 dan reg. HL =8090
SPHL; pertukaran isi antara pasangan reg. HL dengan reg.Sp
PCHL; pertukaran isi antara pasangan reg. HL dengan reg.PC

2.3.6 Fungsi Penetapan (Setting Function)


Penetapan yang dimaksud adalah memastikan suatu kondisi berada pada
keadaan atau harga yang di inginkan. Perintah yang termasuk kelompok ini
adalah:
STC (Set Carry);

41
Set bit Carry menjadi 1. Dengan perintah ini kita bias memastikan bahwa
Carry sekarang ini adalah 1. Perintah ini telah kita lihat pada pemakaian
sebelumnya.
CMC (Complemen Carry):
Digunakan untuk meng-inverskan bit carry sebelumnya. Perintah ini
digunakan setelah perintah STC untuk memastikan bahwa Bit carry adalah 0
(nol).
CMA (Complemen Accumulator):
Digunakan untuk meng-invers-kan bit-bit reg.A
Contoh:
MVI A,67
CMA ;invers 8 bit reg.A menjadi reg.A = 98
DI (Disable Interupt):
Perintah yang bertujuan untuk menyuruh perangkat keras agar tidak
memperdulikan setiap unterrupt yang datang selama perintah ini telah di
laksanakan hingga di jumpai perintah EI
EI (ENABLE INTERRUPT):
Perintah yang bertujuan untuk mengijinkan kembali perangkat keras
menerima setiap interrupt yang dibenarkan. Biasannya perintah ini di
gunakan bersama perintah DI, hanya perintah DI dipakai di baris awal
program sedangkan perintah E1 di akhir Program. Kedua perintah ini
digunakan pada program yang dalam bekerjanya tidak ingin diganggu oleh
program lain hingga selesai.

2.3.7 Funggsi Lompatan (Jumping Fuction)


Lompatan yang di maksud adalah mengalihkan jalannya program menuju
program lainnya yang alamat program alihannya disebutkan dengan perintah
fungsi lompatan atau telah di tetapkan sesuai aturan.
Pengalihan program dari jalurnya di sebabkan karena 3 hal, yaitu:
1. Mengulang kembali menjalankan baris program yang telah dijalankan
sebelumnya
2. Melewati daerah program yang tak di inginkan
3. Menjalankan program bagian (subrutin)
Dua hal pertama di laksanakan oleh perintah JMP alamat sedangkan hal yang
terakhir yang lebih tepat di sebut panggilan karena sifatnya sebagai sisipan yang
berarti setelah melaksanakan program bagian maka jalannya program akan
kembali ke program utama, perintah yang di pakai adalah call alamat

42
Kedua perintah JMPdanCALLini terdiri dari dua bagian yaitu yang tak
bersyarat dan bersyarat. Sudah pasti perintah-perintah bersyarat selalu
berhubungan dengan status yang di miliki oleh reg.Flag. Perintah bersyarat ini
telah disebutkan pada pembahasan tentang reg.flag. Perintah tak bersyarat tersebut
adalah:
JMP ALAMAT: selanjutnya program akan menjalankan baris program yang
alamatnya disebutkan pada perinta
Contoh:
JMP 7012 :menjalankan baris program pada alamat awal 7012
CALL alamat: memanggil program bagian yang beralamat awal seperti yang
diberikan.
Contoh: CALL OFFA :menyisipkan program bagian yang berada pada
alamat awal OFFA (program pada OFFA adalah
program Delay)
RET :perintah yang digunakan untuk kembali ke program utama. Perintah
kembali ini tidak memerlukan petunjuk alamat karena secara otomatis
akan kembali ke baris program di bawah baris program pemanggilnya
pada program utama. Hal ini di karenakan pada saat program menjalankan
perintah panggilan (CALL) maka program akan menyipan isi reg. PC
(program counter) ke tumpukan (memori pada alamat reg.SP) baru
mengisi reg.PC dengan alamat yang disertakan dengan perintah panggilan.
Dengan demikian maka program bagian akan dijalankan pada akhir
program bagian saat perintah kembali (RET) dijalankan maka isi reg PC
yang di simpan di stack (tumpukan) akan dikembalikan. Isi reg PC ini
menunjukkan alamat baris perintah di bawah perintah panggilan tadinya.
Ketiga perintah di atas adalah perintah pengalih jalannya program yang
tidak memerlukan syarat apapun dalam pelaksanaannya. Cara bekerja
perintah bersyarat ataupun tidak hanya dibedakan oleh pemakaian kondisi
status. Jalannya pelaksanaan perintah tetap sama.

2.3.8 FUNGSI KELENGKAPAN


DAA (Decimal Adjust Accumulator);
Perintah yang mengubah isi reg. A dalam format bilangan BCD (Binary
Coded Decimal). Perintah ini digunakan bersama pada perintah aritmatika yang
ditujukan untuk memproses data dalam bentuk decimal bukan heksa decimal.
Contoh:

43
MVI A, 1B ; Reg. A = 1B
DAA ;Angka 1B heksadesimal menjadi 21 BCD. B(Heksadesimal) =
11(Desimal). Angka 11 dalam decimal terjadi carry 1 dan carry ini
dijumlahkan pada bilangan dikirinya, maka Reg. A = 21. Perintah
ini bukan inverse heksa ke decimal, karena 1B (H) = 27 (D).

2.4 Contoh
Misalnya, setelah penambahan dua angka, jika jumlah di akumulator lebih
besar dari delapan bit, flip-flop menggunakan indikasi carry yang disebut bendera
Carry (CY) diset menjadi 1. Ketika hasil operasi aritmatika adalah nol, maka Zero
(Z) flag diatur ke satu. Gambar pertama menunjukkan sebuah register 8-bit, yang
disebut register bendera, berdekatan dengan akumulator. Namun, tidak digunakan
sebagai register. Lima posisi bit dari delapan bit yang digunakan untuk
menyimpan output flip-flop. Bendera disimpan dalam 8-bit register, sehingga
programmer dapat memeriksa flag-flag ini (kondisi data) dengan mengakses
register melalui instruksi.
Mari kita membahas dengan sebuah contoh Immediate Addressing Mode..
Perhatikan instruksi ini:
ADI 34H
Instruksi ini menambahkan data langsung, 34H ke akumulator. 34H adalah
data, H merupakan nilai Heksadesimal dan nilai ini langsung ditambahkan ke
akumulator. Dalam hal ini 34H ditambahkan ke akumulator. Misalkan jika
akumulator memiliki nilai +8 H dan ketika instruksi ini dijalankan, 34H
ditambahkan ke +8 H dan hasilnya disimpan dalam akumulator. Dalam instruksi
di atas operan ditentukan dalam instruksi itu sendiri.

2.5 Rangkuman
1. Microprosessor 8085 dalam pemrogamannya menggunakan 11 buah
register yaitu register A, B, C, D, E, H, L, M, F, PC, dan register SP.
2. Mode Pengalamatan mikroprosesor 8085 adalah:
a. Immediate addressing Mode.
b. Register addressing Mode.
c. Register Indirect Addressing Mode
d. Direct addressing Mode.
e. Implicit addressing Mode.
3. Fungsi intruksi:
a. Transfer function (fungsi pemindahan)
b. Initial function (fungsi pengisian)

44
c. Logic function (fungsi logika)
d. Arithmatik function (fungsi aritmatika)
e. Interchange function (fungsi pertukaran)
f. Setting function (fungsi penetapan)
g. Jumping function (fungsi lompatan)

2.6 Pertanyaan
1. Jelaskan arti instruksi STA 2000H
2. Jelaskan arti instruksi LDAX D, jelaskan mode pengalamatannya.
3. Jelaskan arti perintah berikut ini:
MVI A, 27
ADI 36
DAA

BAB III
TEKNIK PENULISAN PROGRAM
Pada bab teknik penulisan program dijelaskan mengenai tahapan penulisan
program, teknik bekerja dalam memori, peran flag register, program tetap dan
tidak tetap, teknik penyaringan data, program bagian, program delay dan program
menggunakan tabel. Sebagian besar dari pemrograman adalah intuisi dan
kreativitas. Seringkali terjadi beberapa ruang memori terbatas dan menginginkan
kecepatan yang lebih tinggi, akan sulit untuk mengoptimasikan semua
parameternya. Sebelum mengenal program sangat penting untuk mengetahui
kondisi ini pertama kali yaitu menganalisa masalah sebelum memulainya.

Tujuan Khusus

45
Mahasiswa mampu menerapkan perangkat programmer seperti flowchart dan
instruksi set 8085 pada program sesungguhnya untuk membuat sebuah program
yang dapat menyelesaikan masalah dengan pemrograman sederhana.

3.1 Tahapan Penulisan Program


Secara khusus sebuah program diartikan sebagai suatu kesatuan dari urutan
perintahperintah yang disusun sedemikian rupa untuk mewujudkan fungsinya.
Masalahnya adalah perintah apa yang akan pertama sekali ditulis atau kita harus
memulai dari mana dalam menyusun program untuk memecahkan masalah kita .
Secara umum ada 3 tahap untuk pembuatan/menyusun program :
1. Penyusunan Algoritma
2. Pembuatan Flowchart
3. Pembuatan program (baris program)
Sebuah program yang utuh dapat dibagi menjadi 3 bagian yaitu bagian
inisialisasi, inti program dan penyelesaian. Inisialisasi yaitu, barisbaris program
yang mempersiapkan segala register yang akan digunakan, juga data atau memori
yang akan digunakan bila diperlukan. Bagian ini mencakup barisbaris awal
program dan menggunakan perintahperintah pada kelompok pengisian (inisial)
dan kelompok pemindahan. Inti program adalah bagian plaksanaan proses
pengolahan data. Pada bagian inilah yang menunjukkan fungsi program tersebut.
Bagian ini memanfaatkan data pada bagian inisialisasi.pengubahan bagian ini
akan mengubah fungsi keseluruhan program, sedangkan pengubahan bagian
inisialisasi hanyalah masalah data bukan proses. Misalnya suatu program
penjumlahan tidak akan berubah fungsinya bila kita hanya mengganti datadata
yang akan dijumlahkan. Bagian ketiga, penyelesaian program adalah
pemanfaatan hasil proses ke bagian yang diinginkan, misalnya apakah akan
disimpan ke memori ataukah di register yang ditentukan lalu program dihentikan.
Bagian inisialisasi, persiapan register, data atau
............................. memori saat program bekerja.
.............................

/////////////////// Program pengolahan data, pelaksanaan fungsi


/////////////////// program seperti yang diinginkan.

::::::::::::::::::::::::::: Penyimpanan hasil ke register atau memori lalu


::::::::::::::::::::::::::: menghentikan program.

3.1.1 Pembuatan Algoritma

46
Berikut adalah Algoritma program penjumlahan data 8 bit secara desimal.
Data diletakkan pada Register B dan Register C dan hasil penjumlahan diletakkan
di Register D.
Algoritma :
1. Mengisi Reg. B dan Reg.C dengan data yang akan dijumlahkan.
2. Memindahkan Reg. B ke Reg. A
3. Menjumlahkan Reg. A dengan Reg. C
4. Mengubah hasil ke bentuk desimal
5. Menyimpan hasil ke Reg.D
6. Selesai
Dari algoritma di atas, baris ke-1 dan ke-2 adalah proses inisialisasi, lalu baris
ke-3 dan ke-4 adalah inti program, baris ke-5 dan ke-6 adalah tahap penyelesaian.
Berikut ini contoh lainnya sebuah algoritma yang menghitung banyaknya
data ganjil pada memori 9000 hingga memori 9010. Hasil hitungan banyaknya
data ganjil disimpan di Register D.
Algoritma :
1. Pengisian alamat awal memori ke penunjuk Register M
2. Mengisi Register C = 11 untuk banyak data dari 9000 sampai 9010 dan
Register D = 00 sebagai register penghitung.
3. Mengambil data dari penunjuk Register M
4. Geser Register A ke kanan sehingga bit LSB masuk ke CARRY
5. Bila Carry menjadi 0 maka program melompat ke langkah 7
6. Naikkan isi Register D 1 angka, data ganjil di hitung
7. Naikkan penunjuk Register M 1 alamat , untuk data berikutnya
8. Kurangi Register C dengan 1, kurangi hitungan jumlah data sampai 00
9. Bila Register C belum sampai 00 maka ulangi ke langkah 3
10. Program selesai dan hasil telah berada di Register D
Perhatikan baik-baik penyusunan algoritma di atas, lompatan dari langkah 9
ke langkah 3 menunjukkan bahwa langkah 3 termasuk ke bagian inti program.

3.1.2 Pembutan Diagram Alir Flowchart


Flowchart program penjumlahan
mulai 8 bit algoritmanya di atas, ditunjukkan pada
Gambar 3.1 di bawah ini:
B <--Data 1 , C <-- Data 2

A <-- B

A <---A + C

A desimal < ------ A heksa

D <----- A 47

selesai
Gambar 3.1 Flowchart program penjumlahan data 8 bit

Flowchart pogram penghitung banyaknya data bilangan ganjil yang


algoritmanya dijelaskan di depan.

mulai

HL = 9000

C=11 ; D=00

A <---- MHL

tidak
bLSB -------> Carry

Cy = 1?

D <---- D + 1
tidak

L <----- L + 1

C <--- Cpenghitung
Gambar 3.2 Flowchart program -1 banyaknya data bilangan ganjil
Flowchart yang diterjemahkan sebagai diagram alir adalah suatu cara yang
mengelompokkan bagian-bagian program dalam beberapa lambang dan
Z =dengan
menghubungkan setiap lambang 1? lambang lainnya menggunakan tanda

48

selesai
panah dimana arah panah menunjukkan aliran jalannya program. Setip lambang
menunjukkan proses yang dikerjakan oleh perintah-perintah secukupnya.
Lambang dapat diisi dengan fungsi yang diterjemahkan.
Pembuatan sebuah flowchart lebih praktis dari pada pembutan sebuah
Algoritma walaupun maksudnya sama. Dengan Flowchart aliran jalannya
program dapat lebih jelas kelihatannya secara utuh.

3.1.3 Pembuatan Program (Programming)


Untuk mewujudkan sebuah program yang diinginkan, selain kemampuan
penyusunan algoritma dan flowchart maka kemampuan pemahaman perintah yang
ada merupakan salah satu syarat yang paling mutlak. Untuk penyelesaian
algoritma dan flowchart, pengetahuan umum tentang perintah sudah bisa
mencukupi tidak demikian halnya dengan pembuatan listing programnya. Pada
bagian ini kita diharuskan mengerti benar setiap perintah yang kita gunakan yaitu
meliputi fungsi perintah, cara kerjanya dan hal-hal yang di pengaruhi oleh
perintah tersebut.
Contoh 1 :
Perintah DCR reg
Fungsi mengurangi isi register dengan 1
Cara kerja mengurangi isi register dengan 1 dan
mengisikannya kembali ke register tersebut.
Format Reg Reg 1
Pengaruh Pada Flag zero dan isi register tersebut
Z=0 register masih berisi
Z=1 register kosong (nol)
Contoh 2 :
Perintah CMP Reg
Fungsi membandingkan isi Reg A dengan register yang
disebutkan
Cara kerja mengurangi isi Reg A dengan isi register yang
disebutkan, hasilnya hanyalah perubahan status Reg
Flag. Isi kedua reg tidak berubah
Format Reg A Reg X ---------> status Flag
Pengaruh tidak mengubah Reg A dan Reg X, mempengaruhi
seluruh bit status Reg. Flag.
Pengaruh suatu perintah memang tidak begitu jelas pada saat pemograman
dan penulisan listing program. Kenyataan ini menimbulkan bahwa sebuah
program telah diperkirakan akan melakukan fungsinya dengan baik berdasarkan
dengan urutan baris-barisnya. Namun pada kenyataannya saat diesksekusi atau

49
diloading ke mikroprosesor maka tejadi penyimpangan yang tak diinginkan.
Contohnya proses pengurangan antara nilai yang kecil dengan nilai yang besar
akan mempengaruhi nilai bilangan status Carry dan Sign. Biasanya kita akan
beranggapan bahwa hasil pengurangan pastilah minus atau negatif. Tetapi
anggapan ini salah, hasil tersebut bisa saja positif. Coba fikirkan!
Dengan membagi perintah berdasarkan fungsinya seperti yang dijelaskan
dimuka maka kita akan lebih mudah untuk menjumpai perintah yang kita
perlukan. Seperti dijelaskan juga didepan bahwa bagian pertama suatu program
adalah bagian persiapan atau inisialisasi, karenanya kita bisa menggunakan
perintah inisialisasi pada baris pertama program. Sebelum beralih ke bagian
proses maka kita harus melihat apakah proses yang kita kerjakan, logika atau
aritmatika atau hanya proses pemindahan biasa.
Untuk proses pengujian, pada flowchart dilambangkan dengan belah ketupat,
maka kita harus melihat pada fungsi JUMPING yang bersyarat. Pilih salah satu
yang kita perlukan sesuai status yang diinginkan.
Untuk menutup program, kita menggunakan perintah RST atau HLT. Program
ini akan menghentikan program dan menampilkan seluruh kondisi register lalu
siap menerima perintah menu utama. Bila kita tidak ingin melihat penampilan
kondisi seluruh register setelah program selesai maka kita dapat menggunakan
perintah JMP 4050 menggantikan perintah RST.

Contoh program penjumlahan desimal 8 bit.


NO. Mnemonics PENJELASAN
1 MVI B, data1 Pemasukan data yang akan dijumlahkan
2 MVI C, data2
3 MOV A, B Salah satu data harus dipindahkan ke Reg A
4 ADD C Baru dilakukan penjumlahan
5 DAA Mengubah kedalam format desimal
6 MOV D, A Pemindahan hasil ke tempatnya (Reg. D)
7 RST Selesai. Melihat hasil pada seluruh register.

Berikut ini program penghitung banyaknya bilangan ganjil:


LABEL MNEMONIC PENJELASAN
LXI H, 9000h Persiapan alamat awal blok memori
MVI C,10h Banyaknya alamat data
MVI D, 00 Set awal penghitung data ganjil
Ulang MOV A, M Ambil data yang akan diuji ke Reg. A
RAR Pindahkan Bit LSB datab ke Carry

50
JNC lompat Bila Cy = 0 berarti datanya genap dan tak
INR D
dihitung tetapi bila Cy =1 data dihitung
lompat INR L
Menaikkan penunjuk alamat berikutnya
DCR C
Apakah data masih ada? Kalau masih ada
JNZ ulang
RST ulangi kembali pengujian data ganjil
Bila data seluruhnya telah diuji maka
program dihentikan

Untuk tambahan perhatikan bentuk listing programnya. Pada contoh pertama


listing menggunakan nomor urut sedangkan pada contoh kedua menggunakan
nomor LABEL. Tentang nomor urut anda sudah mengetahuinya, sedangkan
LABEL adalah penyebutan alamat baris program untuk lebih mudah
mengingatnya. Perintah JNC lompat berarti lompat kealamat baris program yang
ditandai dengan tulisan lompat bila tidak terjadi Carry atau Cy = 0.
Bagi progamer pemula sebenarnya kebenaran program bukanlah satu-satunya
tujuan tetapi dapat menjelaskan alur jalannya program dan maksud setiap baris
program dengan benar. Bahkan saya selalu mengetahui sesuatu yang baru pada
saat program yang saya buat tidak berjalan dengan baik, dan memang inilah
namanya pengalaman. Sesorang progammer adalah orang yang memahami teoritis
dan cukup banyak membuat dan menjalankan program buatannya sendiri untuk
mendapatkan pengalaman.

3.2 Teknik Bekerja Dalam Blok Memori


Sebuah mikroprosesor tidaklah memiliki arti tanpa adanya dukungan
perangkat memori. Memori adalah syarat utama untuk memanfaatkan kepintaran
mikroprosesor. Mikroprosesor selalu identik dengan software atau pemrograman,
sedangkan software butuh tempat penyimpan, karenanya memori
sebagaiperangkat penyimpan seeolah-olah menjadi satu dengan mikroprosesor.
Walaupun pada mikroprosesor secara internal memiliki memori-memori
penyimpan data yang dikenal sebagai register, namun sebenarnya register tidak
ditujukan untuk menyimpan data tetapi hanya sebagai tempat data sementara yang
membantu dalam melaksanakan kerjanya.
Kebutuhan akan perangkat memori adalah hal yang wajib karena memang
didesain harus bekerja dengan perangkat tersebut. Hal ini dapat dibuktikan dengan
disediakannya pin-pin (kaki chip P) yang digunakan untuk dihubungkan dengan
perangkat memori. Bahkan banyaknya memori yang dapat diproses oleh

51
mikroprosesor menunjukkan salah satu kelebihannya, dan ini ditentukan oleh
banyaknya pin Address yang dimiliki oleh P tersebut.
Contohnya, sebuah chip P 8085 memiliki 16 pin Address atau disebut juga
16 bit address, ini sama dengan 2 byte (1 byte=8 bit). Ini menerangkan bahwa P
8085 dapat memproses memori sebanyak 216 (dua pangkat enam belas) memori.
Satu kilo dalam bilangan biner adalah 216 x 210 sama dengan 64 kilo memori. Bila
sebuah memori berisi bit-bit data yang pada P 8085 menggunakan 8 bit data atau
1 byte, maka jumlah total seluruh memori yang bias diproses P 8085 adalah 64
Kbyte. Misalkan 24 Kbyte memori menggunakan EPROM sedangkan sisanya
sebesar 40 Kbyte memori menggunakan RAM, maka kita hanya bisa bekerja
menulis program pada memori RAM saja yang sebesar 40 Kbyte ini.
Pada trainer set Midicom, memori EPROM diletakkan pada memori terbawah
yaitu mulai alamat 0000 sampai 5FFF sedangkan memori RAM dimulai pada
alamat 6000 sampai FFFF. Perhatikan jumlah dari 6000 sampai FFFF dapat dibagi
menjadi 10 bagian yaitu 6000-6FFF, 7000-7FFF, 8000-8FFF, 9000-9FFFF, A000-
AFFF, B000-BFFF, C000-CFFF, D000-DFFF, E000-EFFFdan memori F000-
FFFF, setiap bagian terpisah 1000 H byte. Bila kita tulis 1000 H dalam format
binery maka menjadi 1 0000 0000 0000B atau sama dengan 2 12 byte atau menjadi
4 kbyte memori. Jadi jelaslah sekarang bahwa memori dari 6000 sampai FFFF
berjumlah 40 kbyte.
Untuk memproses memori atau data yang dimiliki oleh memori dikenal 2 cara
yaitu cara langsung dan tidak langsung. Cara langsung yaitu menggunakan
perintah yang mengharuskan kita menuliskan alamat memori yang akan kita
proses. Perintah yang umum digunakan adalah LDA alamat dan STA alamat.
Sedangkan cara tidak langsung yaitu menggunakan pasangan register untuk
menunjukkan alamat memori yang akan diproses. Perintah yang umum digunakan
adalah LXI reg, LDAX reg, dan STAX reg serta perintah pemindahan yang
menggunakan register M.
Contoh :
Mengisi blok alamat 8000 sampai 8005 dengan data 00 H (mengosongkan
memori).
Langsung: Tak langsung:
MVI A,00 MVI B, 06
STA 8000 LXI H, 8000
STA 8001 MVI A, 00
STA 8002 MOV M, A

52
STA 8003 INX H
STA 8004 DCR B
STA 8005 JNZ
RST1 RST 1
Sepintas cara langsung terlihat sangat sederhana dibandingkan cara tak
langsung yang kelihatannya sedikit kompleks bagi pemula. Cobalah hitung berapa
byte memori yang dipakai oleh masimg-masing program diatas. Perintah MVI
menggunakan 2 memori, STA 3 memori jadi cara langsung menggunakan 20
memori (14H), sedangkan perintah LXI menggunakan 3 memori, MOV 1 memori,
INX 1 memori, DCR 1 memori dan JNZ 3 memori, total memori cara tak
langsung adalah 13 memori.
Sekarang bagaimana kalau diminta untuk mengosongkan memori sebanyak
50 atau 200 memori, apa yang terjadi dengan cara langsung, dan bagaimana
dengan cara yang tak langsung? Untuk cara langsung, penambahan memori yang
akan diproses berarti menambah baris program. Tidak halnya demikian pada cara
tak langsung. Kita hanya perlu mengubah perintah MVI B,06 dengan MVI
B,32 atau MVI B, FF atau menjadi harga berapa saja antara nilai 00 H FF H.
Dan sekarang terbukti bahwa bukan hanya pemakaian memori yang lebih hemat,
tetapi juga programnya menjadi lebih fleksibel dan praktis. Berikut cara tak
langsung yang sama dengan program diatas:
MVI B, 06 MVI D, 06 LXI B, 8006
LXI D, 8000 LXI B, 8000 XRA A
MVI A, 00 MVI A, 00 DCR C
STAX D STAX B STAX B
INX D INX B JNZ
DCR B DCR D RST
JNZ JNZ
RST RST

Untuk memproses memori dalam jumlah sedikit (satuan) dapat digunakan


cara langsung, tetapi kalau memori yang akan diproses hingga puluhan keatas
maka cara tidak langsung wajib dilakukan.
Bekerja dengan sejumlah memori tentunya harus ditentukan batas alamat
memori terendah dan batas yang tertinggi. Pelajarilah teknik-teknik berikut ini
dalam mengolah blok memori. Program berikut memperlihatkan beberapa cara
untuk memindahkan data dari blok memori 8000 800F ke memori 9000 900F.
LXI H, 8000 LXI D, 8000
LXI D, 9000 LXI B, 9000
MVI B, 10 MVI H, 10

53
MOV A, M LDAX D
STAX D STAX D
INX H INX D
INX D INX B
DCR B DCR H
JNZ JNZ
RST RST

LXI D, 8000 LXI H, 8000 LXI H, 8000


LXI H, 9000 LXI D, 9000 LXI D, 9000
LDAX D MOV A,M MOV A,M
MOV M, A STAX D STAX D
INX H INX H INX H
INX D INX D INX D
MOV A, E MOV A, L MVI A, 10
CPI 10 CPI 10 CMP L
JNZ JNZ JNZ
RST RST RST
Program berikut memperlihatkan 2 cara untuk saling menukarkan data antara
blok memori 8000 800F dengan 9000 900F (maksudnya isi memori 8000 dan
9000 saling dipertukarkan, begitu pula dengan memori 8001 dan 9001 dan
seterusnya).
Perhatikan contoh berikut ini, bahwa pemakaian perintah CPI ternyata dapat
menghemat pemakaian sebuah register. Menggunakan register seefisien mungkin
adalah penting.

LXI H, 8000 LXI D, 8000


LXI D, 9000 LXI B, 9000
MVI B,10 LDAX D
MOV C,M MOV L,A
LDAX D LDAX B
MOV M,A STAX D
MOV A,C MOV A,L
STAX D STAX B
INX H INX D
INX D INX B
DCR B MOV A,E
JNZ CPI 10
RST JNZ
RST

3.3 Peran Penting Register Flag

54
Tidak seperti register yang lainnya, reg.Flag tidak digunakan untuk
penyimpanan data, namun demikian register ini menyimpan 5 informasi yang
sangat penting bagi programmer. Namun begitu pun sangat jarang data register
Flag ini diambil atau diolah, bahkan kita tidak perlu mengetahui isi register Flag
ini walaupun kita menggunakan informasi yang ada padanya.
Apakah bedanya hasil dari perintah DCR A dengan SUI 01?
Contoh: hitunglah banyaknya bilangan yang lebih besar dari 05 pada blok
memori 8000-800F, hasilnya di reg.B.
Perintah yang mempengaruhi register Flag akan mengubah pengaruh dari
perintah sebelumnya. Karenanya perhatikanlah perintah apa saja yang
mempengaruhi register Flag dan status apa saja yang dapat mempengaruhinya
pada reg.Flag. Baris yang bertanda ** diatas disebut juga baris kritis. Artinya
adalah pengubahan baris tersebut dapat mengubah dan membalikkan fungsi dari
keseluruhan program.

LXI H, 8000 Perhatikan baris bertanda **, baris tersebut berisi


MVI C, 10
tersebut berisi 2 perintah yang sepintas akan
MVI B,00
MVI A, 05 memberikan hasil yang sama. Ingatlah bagaimana
CMP M
prosesor menetapkan negatip dan positip.
JNC/JP**
INR B Kebiasaannya kita akan menggunakan JP, tetapi
INX H
ini keliru yang benar adalah JNC.
DCR C
JNZ
RST

Contoh bila perintah JNC tersebut diganti dengan perintah JC maka sekarang
yang dihitung bukan lagi yang lebih besar dari 05 melainkan yang berada antara
nilai 00 sampai 05. Program-program yang memiliki fungsi berlawanan selalu
memiliki baris program kritis dan kita hanya perlu mengubah baris ini saja untuk
mendapatkan fungsi kebalikannya.

3.4 Program Tetap (Fixed) Dan Program Fleksibel


Program 1, 2 dan 3 adalah program penjumlahan decimal 1 byte. Pada
program 1, data yang dijumlahkan ditetapkan langsung di dalam program
sehingga bila ingin mengubah data kita harus mengubah program tersebut.
Program 2, data yang diproses diambil dari memori, dengan demikian kita hanya

55
mengubah isi memori bila ingin mengubah data tanpa mengubah program.
Program 3 hampir sama dengan program 2 hanya data diambil langsung dari
reg.B dan reg.C.
Program 2 dan 3 disebut program fleksibel sedangkan program 1 disebut
program tetap (fixed). Program fleksibel adalah program yang data-data utamanya
berada diluar program, tentu saja kita harus terlebih dahulu mengisi data-data
sebelum melaksanakan program. Program fleksibel inilah yang akan digunakan
sebagai program sub rutin.

Program 1 Program 2 Program 3


MVI A, 05 LDA 8000 MOV A,B
MVI B, 08 MOV B, A ADD C
ADD B LDA 8001 DAA
DAA ADD B RST
RST DAA RST 1

3.5 Teknik Penyaringan Data


Penyaringan data termasuk salah satu pengolahan data. Bentuk yang termasuk
kelompok penyaringan data adalah pemilihan data yang diinginkan dari sejumlah
data tanpa bertujuan merusak data asli. Seperti penentuan data ganjil dan genap,
pengambilan data diantara harga tertentu atau penentuan positip atau negatip.
Penyaringan data termasuk tahap pertama dalam pengolahan data karenanya data
yang diinginkan tidak boleh berubah.
Contoh berikut adalah memperlihatkan penyaringan data berdasarkan data
utuh yang disaring dan menggunakan perintah aritmatika CPI.
Contoh 1:
Menghitung data yang berharga 30 39 (ACII code untuk tombol angka 0 - 9)
pada blok memori 9000 90FF. Hasil hitungan di reg. B.
LXI H,9000 Inisialisasi blok cara tak langsung
MVI B, 00 reg. penghitung set awal = 00
MOV A,M Pengambilan data
CPI 30 Uji batas bawah penyaringan
JC Data di bawah harga tak dihitung
CPI 3A Uji batas atas penyaringan
JNC Data di atas harga dihitung
INR B Data dalam range dihitung
INR L Naikkan penunjuk alamat
JNZ Sudah habis? Belum, ulangi
RST Tampilkan isi seluruh register untuk melihat hasil
program

56
Contoh 2: Menghitung jumlah data < 50, < 30, <10 pada blok memori 9000-90FF.
Hasil nilai < 50 di reg. B, nilai <30 di reg. C, nilai <10 di reg. D
LXI H,9000 Inisialisasi awal blok
LXII B, 0000 Set penghitung awal = 00
MVI B, 00
MOV A,M Pengambilan data
CPI 50 Uji data <50
JNC Data > 50 tidak dihitung lagi
INR B Hitung data < 50
CPI 30 Uji data <30
JNC Data > 30 tidak dihitung lagi
INR C Hitung data < 30
CPI 10 Uji data <10
JNC Data > 10 tidak dihitung lagi
INR D Hitung data < 10
INR L Sudah seluruh data diperiksa? Jika belum ulangi
JNZ
perhitungan data
RST Selesai
Teknik penyaringan data lainnya dapat menggunakan perintah logika ANI,
dipakai bila memungkinkan kita melakukan penyaringan bit data.
Contoh 3: Penyaringan data ganjil atau genap.
LXI H,9000 Inisialisasi blok cara tak langsung
LXI B, 0000 Awal hitungan
MOV A,M Pengambilan data
ANI 01 Menyaring bit LSB
JNZ Bit LSB=1 berarti data ganjil
INR B Bit LSB=0 berarti data genap
JMP Hitung data berikutnya
INR C Hitung data ganjil
INR L Naikkan penunjuk alamat data berikutnya
JNZ Sudah habis? Belum, ulangi
RST Tampilkan isi seluruh register untuk melihat hasil.
3.6 Program Bagian (Sub Rutin)
Program bagian dikenal sebagai rutin, prosedur atau subrutin adalah suatu
teknik yang membagi sebuah program menjadi bagian-bagian yang lebih kecil
yang menjalankan fungsinya sendiri-sendiri. Pelaksanaan program diatur oleh
sebuah program utama. Program bagian ditulis secara terpisah-pisah, namun
pemisahan bukannya mempersulit program tetapi malah menjadi lebih mudah
untuk dimengerti. Beberapa hal yang menjadi alasan pembuatan program bagian
adalah:
1. Suatu program yang minimal digunakan sebanyak 2 kali dalam suatu
fungsi yang diinginkan.

57
2. Fungsi yang diinginkan merupakan sebuah program yang panjang ataupun
kompleks.
Syarat-syarat program bagian adalah:
1. Bersifat program fleksibel
2. Alur program berakhir dengan perintah return (RET)
Awalnya sebuah program bagian adalah program tetap yang melaksanakan
fungsinya secara lengkap. Kemudian program ini dihilangkan bagian
inisialisasinya dan menukar perintah RST 1 dengan perintah return. Nantinya
dalam pelaksanaan, inisialisasi ditulis diprogram utama baru kemudian dilakukan
pemanggilan terhadap subrutin yang sesuai.
Program bagian lebih di kenal sebagai subrutin atau sub program yang pada
akhir jalannya program ini wajib menggunakan perintah kembali (perintah RET
/return). Program di mana perintah panggilan dijalankan disebut program utama
atau main program. Program bagian dianggap selesai bila telah di temukan dan
dijalankan perintah kembali (RET atau variasi bersyaratnya) lalu jalannya
program selanjutnya akan di kembalikan ke program utama.
Pada program utama, setelah program bagian mengembalikan jalannya
program ke program utama maka program akan menjalankan baris perintah yang
berada di bawah perintah panggilan yang baru dijalankan, terlihat bagaimana alur
jalannya program seperti di tunjukan oleh tanda panah.

Program Utama Program Bagian

Baris Program 8000 Baris Program


.
. .
.
Call 8000 .
MOV A,B
Gambar 3.3 Alur jalannya program sub
. program

3.7 Program Penunda Waktu (Delay)
Dalam
RST 1 Aplikasi-aplikasi mikroposesor seringkali diperlukan program yang

dapat menghasil kan interval waktu dengan panjang tertentu. Misalnya aplikasi
RET
mikroposesor untuk mengontrol skalar pembangkit pulsa yang mempunyai
frekuensi dan durasi tertentu. Dan mengatur waktu pada proses pengiriman atau
penerimaan data yng di laksanakan secara regular (periodik).
Untuk menghasil kan interval waktu dapat di lakukan beberapa cara,yaitu:

58
Secara hardware. Dengan monostable multivibrator:
Kombinasi hardware dan software dengan menggunakan programmable
timer yang fleksible. Seperti rangkain terintregrasi 8253;
Secara software,dengan membuat program delay (subrutin delay)
Metoda hardware yaitu dengan menggunakan monostable multivibrator.
Perancang lebih menyukai penggunaan programmable timer, meskipun harganya
relatif mahal tetapi sangat mudah merancan interfacenya. Pada pemakaian
mikroposesor yang lebih sederhana, pemilihan metoda software adalah yang
paling tepat untuk membuat interval waktu. Latihan-latihan cara membuat interval
waktu dengan metoda software, yaitu dengan membuat program dekay. Pada
program delay, mikroposesor diguakan sebuah counter (penghitung). Pemakain
mikroposesor tersebut mempunyai referensi clock yang stabil. Keuntungan
pemakaian subrutin delay untuk menghasilkan interval waktu adalah sistem tidak
memerlulukan tambahan hardware meskipun secara keseluruhan pelaksanaan
program tidak menjadi lebih lambat.
Program Delay adalah program yang tidak melaksanakan pekerjaan berarti,
program ini yang dipentingkan bukan fungsinya tetapi waktu yang dihabiskan
selama menjalankan program tersebut.
Contoh:
PUSH B
POP B
PUSH B
POP B
Program di atas menyimpan data ke Stack dan mengambilnya kembali, tidak ada
yang berubah setelah program ini dijalankan, hanya waktu yang dibutuhkan
untuk mengeksekusi program ini adalah 44 T selama program ini dilaksanakan.
Program delay tentunya dipakai untuk menunda waktu pelaksanaan antara satu
pekerjaan dengan pekerjaan berikutnya, karenanya program ini berada diantara
program jadi tidak menggunakan perintah penyelesaian atau RST 1. Bila program
delay ini sering dipakai maka lebih baik menjadikannya menjadi sebuah subrutin
yaitu dengan menambahkan perintah RET diakhir perintah. Tentu saja
penambahan perintah RET ini menambah waktu tundanya sebesar T. Dalam
midicom ada rutin program delay yang beralamat OFFA. Rutin ini mengambil
data dari pasangan register DE sebagai data yang menunjukkan lamanya

59
penundaan waktu. Dengan demikian sebelum memanggil rutin delay ini kita harus
mengisi register DE dengan harga yang kita perlukan.
Contoh:
LXI D, 0100 ;menentukan lamanya waktu delay
CALL OFFA ;memanggil rutin delay midicom

3.8 Program Menggunakan Tabel


Program look up table adalah pemanfaatan tabel data dalam pembuatan
program, data-data yang akan diproses diambil melalui memori yang sebelum
program dijalankan sudah terlebih dahulu diisi. Bandingkanlah penggunaan kedua
program pada contoh berikut ini.
Program 1.
MVI A, 00
OUT 50
CALL Delay
INR A
JMP
Program 2.
LXI H, 8000
MOV A, M
OUT 50
CALL Delay
INX H
MOV A, L
CPI 10
JNZ
JMP
Program 1 diatas adalah menampilkan proses Up-Counter (Binery Counter)
pada indikator LED yang berada pada port 50. Proses Up-Counter didapat
langsung melalui program. Program 2 juga menampilkan suatu data pada
indikator LED, data yang akan ditampilkan diambil dari blok memori 8000
800F yaitu sebanyak 10 H data atau 16 data.
Program 1 lebih banyak menampilkan data bervariasi, lebih banyak dari
program 2 dengan hanya menggunakan baris program singkat dan juga pemakaian
memori yang lebih sedikit. Sedangkan program 2 membutuhkan memori yang
lebih banyak selain untuk programnya juga untuk data yang akan ditampilkannya,
semakin banyak datanya maka semakin banyak memori yang digunakannya.
Jenis program 1 ini disebut program linier dan jelas bahwa untuk
mendapatkan sejumlah data yang bersifat linier lebih praktis mendapatkannya
langsung melalui program. Jenis program 2 ini dsebut Look-up-table karena data-
data yang akan diproses diambil melalui memori yang sebelum program

60
dijalankan sudah terlebih dahulu diisi. Data yang diisi ke memori diurut layaknya
sebuah tabel yang akan dibaca. Selain kekurangannya seperti yang disebutkan di
atas, kelebihannya adalah variasi perubahan data dapat kita lakukan dengan sangat
mudah tanpa perlu mengubah programnya, juga data yang ditampilkan dapat
sesuka kita dan tentu saja ini tidak dapat dilakukan melalui pemrograman.
Kesimpulannya, bila diperlukan data linier, maka coba mendapatkannya
dengan pemrograman, tetapi bila tampak terlalu sulit dan datanya tidak terlalu
banyak maka gunakanlah program look-up table.
Jalankan contoh program berikut ini dan perhatikan serta bandingkan antara
pemrograman dan look-up-table dalam menampilkan tampilan.
LDA 8000 MVI A, 00 XRA A
OUT 50 CMC RAR / RAL
CALL Delay OUT 50 OUT 50
RRC / RLC RAR / RAL CALL Delay
JMP CALL Delay CMC
JMP JC
RAR / RAL
JMP
Bagaimana pendapat dengan program di atas? Sekarang isilah data-data setiap
baris berikut ini secara berurut mulai memori 8000 hingga data selesai (contoh,
baris1: data 00 ke memori 8000, data 18 ke 8001, data 24 ke 8002 hingga 11 data
pada memori 800A kemudian ubahlah baris program CPI 10 (pada program 2 di
atas) sesuai jumlah data setiap baris (contoh, baris1: ada 11 data (desimal), maka
menjadi CPI 0B) lalu jalankan program 2 diatas.
Baris1 : 00 , 18 , 24 , 42 , 81 , 00 , 81 , 42 , 24 , 18 , 00
Baris2 : 00 , 18 , 3C , 7E , FF , 00 , FF , 7E , 3C , 18 , 00
Baris3 : 00 , 18 , 24 , 42 , 81 , 00 , 81 , C3 , E7 , FF , 7E
3C , 18 , 00
Bagaimana pendapat anda dengan hasilnya? Jangan lupa mengganti perintah
CALL Delay! Tentu saja anda bisa membuat kreasi anda sendiri.
Program look-up-table menjelaskan kepada kita apa itu program, apa itu
data dan pentingnya memori sebagai penyimpan data.

3.9 Rangkuman
1. Secara umum ada 3 tahap untuk pembuatan/menyusun program:
- Penyusunan Algoritma
- Pembuatan Flowchart
- Pembuatan program (baris program)

61
2. Untuk memproses memori atau data yang dimiliki oleh memori dikenal 2
cara yaitu cara langsung dan tidak langsung. Cara langsung yaitu
menggunakan perintah yang mengharuskan kita menuliskan alamat
memori yang akan kita proses. Cara tidak langsung yaitu menggunakan
pasangan register untuk menunjukkan alamat memori yang akan diproses.
Untuk memproses memori dalam jumlah sedikit (satuan) dapat digunakan
cara langsung, tetapi kalau memori yang akan diproses hingga puluhan
keatas maka cara tidak langsung wajib dilakukan.
3. Program bagian dikenal sebagai rutin, prosedur atau subrutin adalah suatu
teknik yang membagi sebuah program menjadi bagian-bagian yang lebih
kecil yang menjalankan fungsinya sendiri-sendiri.

3.10 Pertanyaan
1. Buatlah program untuk menghitung data positip dan negatip pada blok
memori 9000h-90FFh. Hasil jumlah bilangan negatip di Register C, dan
jumlah bilangan positip di register B.
2. Buatlah program penyaringan data positip dan negatip

BAB IV
ANALOG INPUT OUTPUT
Pada pembahasan ini diterangkan mengenai PPI 8255, ADC dan DAC,
pemograman I/O, dan contoh aplikasi pemrograman I/O. Umumnya
mikroprosesor digunakan sebagai pengontrolan (sistem otomasi). Sinyal yang
akan dikontrol tentu saja bisa berupa sinyal digital ataupun sinyal analog. Untuk
pengontrolan analog tentu saja mikroprosesor yang bekerja dengan digital input

62
output, maka dalam bekerjanya memerlukan peralatan perantara (interface).
Interface ini berfungsi mengubah sinyal analog yang akan dikontrol atau dip roses
menjadi bentuk digital. Interface yang digunakan adalah Analog to Digital
Converter (ADC) dan Digital to Analog Converter (DAC).
Baik digital input output maupun analog input output mikroprosesor
menggunakan sebuah chip Peripheral Input Output (PIO). Perhitungan dan contoh
program yang digunakan dalam buku ini mengacu pada pemakaian trainer set
Midicom Lucass Nulle yang digunakan di Politeknik khususnya Politeknik Negeri
Lhokseumawe.

Tujuan Khusus
Mahasiswa memahami komponen input output (I/O device) yang digunakan
pada mikroprosesor.

4.1 Programmable Peripheral Interface (PPI 8255)


Intel 8255 (atau i8255) chip Programmable Peripheral Interface adalah
sebuah chip perangkat awalnya dikembangkan untuk mikroprosesor Intel 8085,
dan dengan demikian adalah anggota dari sebuah array besar chip tersebut, yang
dikenal sebagai Keluarga MCS-85. Chip ini kemudian juga digunakan dengan
Intel 8086 dan keturunannya. Ia kemudian dibuat (kloning) oleh produsen lain.
Hal ini dibuat dalam DIP 44 pin PLCC versi 40 dan dienkapsulasi. Chip ini
digunakan untuk memberikan akses CPU untuk paralel Programmable I/O, dan
mirip dengan chip tersebut lain seperti Motorola 6520 PIA (Adapter Peripheral
Interface Adapter) Teknologi MOS 6522 (Versatile Interface Adapter) dan MOS
Teknologi CIA (Complex Interface Adapter) semua dikembangkan untuk keluarga
6502. Chip seperti lainnya adalah Interface Peripheral Programmable 2655 dari
keluarga 2650 Signetics dari mikroprosesor, 6820 PIO (Peripheral Input/Output)
dari keluarga 6800 Motorola, Western Design Center 65C21 WDC, sebuah 6520
yang disempurnakan, dan banyak lainnya. The 8255 secara luas digunakan tidak
hanya di banyak komputer mikro/mikrokontroler terutama sistem Z-80 komputer
berbasis rumah, seperti SV-328 dan MSX, tapi juga dalam board sistem yang
paling dikenal asli IBM-PC, PC/XT,PC.
Namun, paling sering fungsionalitas 8255 ditawarkan sekarang tidak
diimplementasikan dengan chip 8255 sendiri lagi, tetapi tertanam dalam sebuah
chip VLSI yang lebih besar sebagai sub fungsi. Chip 8255 sendiri masih dibuat,

63
dan kadang-kadang digunakan bersama dengan sebuah kontroler mikro untuk
memperluas kemampuan I/O.

4.1.1 Fungsi Pin PPI 8255


PPI 8255 dari INTEL adalah chip paralel yang sederhana. PPI memiliki
registetr control dan tiga port terpisah yang dapat dialamti, disebut Port A, Port B,
Port C. Diakses tidaknya PPI ditentukan pada sinyal CS, dan arah akses sesuai
dengan sinyal RD dan WR. Pin A0 dan A1 menetukan register mana yang
dialamati. 8 bit buffer tristate 2 arah digunakan untuk perantara 8255 dengan
system data bus. Data dikirim atau diterima oleh buffer tergantung kepada
instruksi input atau output oleh CPU. Informasi control dan status juga dikirim
lewat buffer data bus.

Gambar 4.1 Pin 8255


Gambar dibawah ini memperlihatkan dua buah group kontrol port, yaitu
group A dan group B.

64
D7 D6 D5 D4 D3 D2 D1 D0

Gambar 4.2 Format Control Word [data sheet 8255]


Kontrol group A mengontrol mode transfer data (dari atau ke) 8 bit port A dan
4 bit dari port C upper. Sedangkan kontrol group B mengontrol mode transfer data
(dari atau ke) 8 bit port B dan 4 bit dari port C lower. Kontrol data yang dituliskan
dari kontrol register akan menentukan karakteristik pengoperasian PPI. Pada
gambar tersebut terlihat D5-D7 digunakan untuk mengontrol grup B. D7
menentukan port C lower (PC0-PC3), logic1 diprogram untuk masukan
sedangkan logic 0 diprogram sebagai keluaran. D6 menentukan port B (PB0-
PB7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai
keluaran. D5 digunakan untuk memilih mode port B yang diinginkan, yakni mode
0 atau mode 1. D1 sampai D4 digunakan untuk mengontrol grup A. D4
menentukan port C upper (PC4-PC7), logic 1 diprogram sebagai masukan dan
logic 0 dipogram sebagai keluaran. D3 menentukan port A (PA0-PA7), logic1
diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. D1 dan
D2 menentukan mode untuk group A; bila 00 berarti mode 0, bila 01 berarti mode
1, dan bila 1X berarti mode 2. Mode 0 dinamakan simple input/output. Bila
diprogram sebagai keluaran, data yang ada di port keluaran akan ditahan,

65
sedangkan bila diprogram sebagai port masukan, masukan ini tidak ditahan.
Sedangkan D0 adalah mode set flag. D0 ini harus selalu berlogik 1 agar PPI dapat
beroperasi.
PPI 8255 adalah IC yang dirancang untuk membuat port masukan dan
keluaran paralel, IC ini mempunyai 24 bit I/O yang terorganisir menjadi 3 port 8
bit (24 jalur) dengan nama Port A, Port B, dan Port C. Port A dan port B dapat
digunakan sebagai 8-bit input/output port. Port C dapat digunakan sebagai port 8-
bit input/output atau sebagai dua 4-bit input/output port atau untuk menghasilkan
sinyal jabat tangan (handshake) untuk port A dan B.
Tiga port selanjutnya dikelompokkan sebagai berikut:
1. Grup A terdiri dari bagian port A dan port C bagian atas
2. Grup B terdiri dari port B dan bagian bawah port C.
Delapan baris data (D0-D7) yang tersedia (dengan data buffer 8-bit) untuk
membaca/menulis data ke port atau kontrol register di bawah status RD (pin 5)
dan WR(pin 36), adalah sinyal aktif rendah untuk membaca dan menulis operasi
masing-masing alamat.
Konfigurasi dari 24 jalur I/O ini bisa digunakan untuk masukan, keluaran,
ataupun bidirectional (dua arah). Pada I/O yang dikontrol secara software akan
lebih mudah bila dibandingkan dengan pengontrolan secara hardware. Untuk
memilih port 8255 digunakan dua buah address pin, yaitu A1 dan A0, dengan
kombinasi sebagai berikut:
A1=0; A0=0; ==> memilih port A
A1=0; A0=1; ==> memilih port B
A1=1; A0=0; ==> memilih port C
A1=1; A0=1; ==> memilih Control Word ( CW )
Sinyal kontrol "CS" (pin 6) digunakan untuk mengaktifkan chip 8255. CS
harus dibuat rendah pada saat pembacaan atau penulisan pada PPI ini, yaitu,
ketika CS = '0', 8255 diaktifkan. Input RESET (pin 35) terhubung ke sistem
(seperti 8085, 8086, dll) reset sehingga ketika sistem di-reset, semua port
diinisialisasi sebagai jalur input. Sinyal reset bila aktif akan membersihkan
seluruh register internal PPI dan membuat PPI berfungsi dalam mode masukan
(mode input). Hal ini dilakukan untuk mencegah 8255 dan/atau periferal
terhubung menjadi mismatch port. Hal ini dijelaskan sebagai berikut. Misalkan
perangkat input terhubung ke 8255 di port A. Jika dari operasi sebelumnya, port
diinisialisasi sebagai port output dan jika 8255 tidak diatur ulang sebelum
menggunakan konfigurasi saat ini, maka ada kemungkinan kerusakan baik

66
perangkat input atau 8255 atau keduanya karena keduanya 8255 dan perangkat
yang terhubung akan mengirimkan data. Register kontrol atau logika kontrol atau
register control word adalah 8-bit register yang digunakan untuk memilih mode
operasi dan input/output status port.
Pemilihan konfigurasi port masukan atau keluaran pada IC 8255 ini dilakukan
dengan cara mengirim control word melalui D7 s/d D0 pada saat A1 dan A0
masing-masing berlogik 1.
Ada 2 mode operasi 8255:
1. Input/output mode
2. Bit set/reset mode
Tabel 4.1 Tabel kebenaran operasi 8255
A1 A0 RD WE CS Keterangan
0 0 0 1 0 Port A ke bus data
0 1 0 1 0 Port B ke bus data
1 0 0 1 0 Port C ke bus data
0 0 1 0 0 Bus data ke port A
0 1 1 0 0 Bus data ke port B
1 0 1 0 0 Bus data ke port C
1 1 1 0 0 Bus data ke bus kontrol
X X X X X Bus data three state
1 1 0 1 0 Ilegal
X X 1 1 0 Bus data three state

4.1.2 Pengoperasian PPI 8255.


Pengoperasian PPI 8255 ditentukan oleh mode input/output. Mode operasi
PPI 8255 dioperasikan dalam 3 mode:
1. Mode 0
2. Mode 1
3. Mode 2
Mode 0
Dalam mode ini, port dapat digunakan untuk input/output operasi sederhana
tanpa handshaking/strobe. Jika kedua port A dan B diinisialisasi dalam mode 0,
kedua bagian port C dapat digunakan bersama baik sebagai port 8-bit tambahan,
atau sebagai port 4-bit secara terpisah. Karena dua bagian dari port C adalah
independen, mereka dapat digunakan seperti yang setengah diinisialisasi sebagai

67
port input sementara setengah lainnya diinisialisasi sebagai output port. Fitur
Input/output mode 0 adalah sebagai berikut:
1. O/p are latched.
2. I/p are buffered not latched.
3. Port tidak memiliki kemampuan handshake atau interupsi.
Mode 1
Ketika kita ingin menggunakan port A atau port B untuk input dan output
jabat tangan (strobed), maka port harus diinisialisasi dalam mode 1 (port A dan
port B dapat dinisialisasi untuk operasi dalam mode yang berbeda, yaitu, untuk
misalnya, port A dapat beroperasi dalam mode 0 dan port B dalam mode 1).
Beberapa pin dari port C difungsikan sebagai jalur strobe.
Untuk port B di mode ini (terlepas dari apakah bertindak sebagai port input
atau output), PC0, PC1 dan PC2 berfungsi sebagai jalur strobe. Jika port A
diinisialisasi sebagai mode 1 port input, maka PC3, PC4, PC5 sebagai sinyal
strobe. PC6 dan PC7 digunakan sebagai input/output.
Mode 1 yang mendukung handshaking memiliki fitur berikut:
1. Dua port yaitu port A dan B dapat digunakan sebagai 8-bit I/O port.
2. Setiap port menggunakan tiga jalur port c sebagai sinyal strobe dan tersisa
dua sinyal dapat berfungsi sebagai I/O port.
3. Didukung Interrupt logika
4. Input dan Output data terkunci (Latched)
Mode 2
Hanya port A yang dapat diinisialisasi dalam mode ini. Port A dapat
digunakan transfer data dua arah. Artinya data dapat menjadi Input atau Output
pada kedelapan jalur (PA0 PA7). Pin PC3 - PC7 digunakan sebagai jalur strobe
untuk port A. Sisa pin pada port C (PC0 - PC2) dapat digunakan sebagai jalur
input/output jika group B diinisialisasi pada mode 0. Bila port B dalam mode 1,
maka PC0-PC2 digunakan sebagai strobe untuk port B.
Bit set/reset (BSR) mode
Pada mode ini hanya port B yang dapat digunakan (output port). Masing-masing
jalur pada port C (PC0 - PC7) dapat di-set/reset sesuai dengan perintah pada
command word register. Tida ada efek yang terjadi pada mode input-output. Bit-
bit individual port C dapat diset/reset dengan mengirim sinyal OUT ke register
control.

68
Format Mode Input/Output
1. Gambar ini menunjukkan format kontrol word dalam mode
input/output. Mode ini dipilih dengan membuat D7 = '1'.
2. D0, D1, D3, D4 adalah masing-masing untuk lower port C, port B,
upper port C dan port A. Ketika D0 atau D1 atau D3 atau D4 adalah
"SET", port yang bersangkutan bertindak sebagai port input. Untuk
misalnya, jika D0 = D4 = '1 ', lower port C dan port A bertindak
sebagai port input. Jika bit ini "RESET", maka port yang bersangkutan
bertindak sebagai port output. Misalnya, jika = D1 = D3 '0 ', maka port
B dan port C upper bertindak sebagai port output.
3. D2 digunakan untuk pemilihan mode untuk grup B (Port B dan Port C
Lower). Ketika D2 = '0 ', mode 0 dan ketika D2 = '1', mode 1.
4. D5, D6 digunakan untuk pemilihan mode untuk kelompok A (Upper
Port C dan Port A). Formatnya adalah sebagai berikut:
D6 D5 mode
0 0 0
0 1 1
1 x 2

Contoh:
Jika port B dan upper port C dinisialisasi sebagai port input dan lower port C dan
Port A sebagai Output (semua dalam mode )), tentukan status control word.
1. Karena input/ouput mode, D7 = '1'.
2. Pilih Mode bit: D2, D5, D6 semua '0' untuk operasi mode 0.
3. Port B akan dioperasikan sebagai input port, maka D1 = '1'.
4. Upper port C sebagai input port, maka, D3 = '1'.
5. Port A dioperasikan sebagai output port, maka, D4 = '0'.
6. Lower port C sebagai output port, maka D0 = '0'.
Format Mode Input/Output, maka control word adalah "8A (hex)"

BSR mode format


1. Gambar menunjukkan format control word dalam BSR mode. Mode ini
dipilih dengan membuat D7='0'.
2. D0 digunakan untuk bit set/reset. D0= '1', port C SET, n D0 = '0', port C
RESET.
3. D1, D2, D3 digunakan untuk memilih port C bit tertentu yang nilainya dapat
diubah dengan menggunakan bit D0 sebagaimana disebutkan di atas. D4, D5,
D6 tidak digunakan. Pemilihan bit C port dilakukan sebagai berikut:

69
Tabel 4.2 Pemilihan Port C
D3 D2 D1 Bit/pin of port C selected
0 0 0 PC0
0 0 1 PC1
0 1 0 PC2
0 1 1 PC3
1 0 0 PC4
1 0 1 PC5
1 1 0 PC6
1 1 1 PC7
Contoh:
Jika bit ke 5 (PC5) port C adalah SET, tentukan status control word.
1. Since it is BSR mode, D7 = '0'.
2. Since D4, D5, D6 are not used, assume them to be '0'.
3. PC5 has to be selected, hence, D3 = '1', D2 = '0', D1 = '1'.
4. PC5 has to be set, hence, D0 = '1'.
Format untuk mode BSR, maka control word adalah "0B (hex)".

4.2 Analog to Digital Converter (ADC) dan Digital to Analog Converter


(DAC)
Mikroprosesor 8085 bekerja dengan 8 bit data. Dengan tegangan referensi
yang dimiliki ADC/DAC 10 Volt rentang tegangan sebesar 20 volt, dengan 8 bit
data berarti memiliki 255 level, maka ketelitian yang dimiliki ADC/DAC:
20 Vpp/255 level = 78,431 mV/level

4.2.1 ADC Dan DAC Pada Midicom

Midicom memang dibuat untuk mempelajari cara bekerjanya microprosessor


dalam fungsinya untuk pengontrolan. Karenanya ia dilengkapi dengan
kelengkapan pengontrolan untuk mempermudah bagi yang memakainya.
Pengontrolan disini ditujukan untuk menguasai sistem otomatisasi. Karena
memang pada system inilah kehandalan dan kelebihan yang dimiliki setiap
microprosessor.
Sinyal yang akan dikontrol tentu saja bisa berupa sinyal sinyal digital
ataupun sinyal-sinyal analog dan untuk mengantisipasi hal ini maka midicom
dilengkpai fasilitas untuk memproses sinyal-sinyal tersebut.
Untuk pengontrolan dan pemrosesan sinyal-sinyal digital atau disebut dengan
digital input output. Midicom dilengkapai sebuah port input beserta simulasinya

70
memakai saklar, juga port output beserta indikatornya memakai lampu LED. Hal
ini telah kita bahas.
Untuk pengontrolan analog tentu saja midicom yang bekerjanya secara digital
memerlukan peralatan (interfase) perantara yang mengubah sinyal analog yang
akan dikontrol atau diproses menjadi yang disebut ADC (Analog to Digital
Converter ) dan DAC (Digital to Analog Converter).
ADC digunakan Midicom untuk membantunya dalam meng-akses sinyal
sinyal input analog. Artinya agar Midicom bisa mengotrol sinyal input analog
maka ia harus memiliki ADC. Sedangkan bila ia ingin mengontrol suatu peralatan
yang bekerja secara analog maka Midicom memerlukan bantuan DAC. Midicom
menyebutnya dengan analog input output. Namun demikian hal tersebut tidak
menjadi penghalang untruk menguasai pemograman input output Midicom ini,
tentu saja bila anda benar-benar mengikuti tulisan ini.

4.2.2 Teoritis ADC/DAC Pada Midicom


Secara khusus, bahwa ADC ataupun DAC yang digunakan oleh midicom
adalah 8 bit ADC/DAC. Karena midicom bekerja dengan 8 bit data. Kemudian
yang khusus lagi adalah bahwa tegangan referensi yang dimiliki ADC/DAC pada
midicom adalah 10 volt. Yaitu memiliki rentang tegangan sebesar 20 volt, mulai
dari +10 volt sampai -10 volt.
Mulailah kita menghitung ketelitian yang dimiliki ADC/DAC ini. Dengan 8
bit data berarti kita memiliki 255 level. Berdiri mulai dari level terendah yaitu -10
sampai level tertinggi +10 volt dibagi menjadi 255 level. Ini berarti ketelitian
setiap level adalah:

= 78,431 mV/level
Hal ini menerangkan kepada kita bahwa perubahan minimum sinyal analog yang
bisa dijamin terdeteksi oleh midicom adalah 78,125 mV. Apabila terjadi
perubahan tegangan di bawah level tersebut maka tidak dapat dipastikan
terdeteksi oleh midicom.
Contoh:
Pada level tegangan 4.000 volt midicom mendeteksi sinyal ini dalam harga 33 H.
Bila terjadi kenaikan level tegangan mulai dari 4.000 volt sampai dengan 4,077
volt maka midicom masih tetap mendeteksinya sebagai nilai 33 H. Setelah
mengetahui resolusinya maka kita melihat kembali konversinya dalam harga

71
heksa decimal. Masih ingat dengan istilah sign atau bilangan positif atau negative
pada midicom ini. Benar bila anda berkata bahwa bilangan yang memiliki bit
MSB bernilai satu berarti itu menunjukkan level negative. Jadilah bilangan yang
bermulai 80 H s/d FF H adalah bilangan yang menunjukkan level negative
sedangkan bilangan 00 H s/d 7F H adalah bilangan yang menunjukkan level
positif. Kemudian, bilangan manakah yang paling negatif dan paling positif
lihatlah kurva di bawah ini:

Level Tegangan (V)

10

Konversi Heksa
Desimal

80 FF 00
7F
Gambar 4.3 Kurva Konversi Nilai Tegangan Ke Heksa Desimal

Nilai terkecil adalah 80 H dengan konversinya -10 volt dan nilai terbesar
adalah 7F dengan konversinya +10 volt. Apakah
-10benar harga terkecil -10 volt dan
terbesar +10 volt. Ingatkah anda dengan kesalahan resolusi bit? Baik, sekarang
kita perjelas bahwa 8 bit itu menunjukkan adanya 256 angka tetapi hanya
memiliki 255 level. Mengapa ? kalau anda saya tanya ada berapa angka antara 0
sampai 5, tentu 6 angka yaitu 0,1,2,3,4, dan 5 lalu ada berapa level yang terjadi
antara 0 sampai 5 tersebut? Tentu hanya ada 5, yaitu 0 ke 1, 1 ke 2, 2 ke 3, 3 ke 4,
dan 4 ke 5.
Sekarang kita kembali ke resolusi, 7F sama dengan 127 desimal mari kita
resolusikan ketegangannya :
V = resolusi x level = 78,431 mV x 127
= 9,961 volt
Yang kita dapat ternyata harga tertinggi adalah 9,961volt. Begitu juga halnya
dengan harga negative adalah -9,961 volt.
Lalu cobalah lihat: 78,431 : 2 = 39 mv (setengah resolusi). Bagaimana
hasilnya bila harga maksimum kita yang +9,961 volt ditambahkan dengan harga

72
setengah resolusi? Jadi kesalahan ADC maupun DAC adalah setangah resolusi
atau setengah bit.

4.2.3 Terminal Penghubung Input/Output ADC/DAC


Untuk berhubungan dengan alat-alat yang dikontrol maka diesediakan pin-pin
output untuk pengkabelan. Pin output untuk digital output port 50 terletak di atas
lampu led indicator. Sedangkan pin output port 50 terletak di atas lampu led
indekator. Sedangkan pin output untuk analog input output terletak dibagian
paling atas ditandai dengan pin anin (pin adc input / analog input) dan anout (pin
dac/ analog output). Selain itu digunakan juga pin bersamanya yaitu ANGND
(analog ground) yang terletak di sebelah pin ground.
Contoh: untuk mendeteksi sinyal analog, maka hubungkan pin out ANIN ke
sinyal yang dideteksi. Begitu juga untuk mengontrol suatu alat serial kontrol
temperature, maka hubungan pin out ANOUT ke input alat yang dikontrol lalu
dihubungkan ANGND ke ground alat yang dikontrol.

4.3 Pemograman Analog Input Output


Karena input output menggunakan PIO 8255 yang sama untuk digital dan
analog maka kita hanya dapat menggunakan secara bergantian untuk memilikinya,
kita harus memberikan perintah kepada PIO 8255 terlebih dahulu, tentu saja
melalui pemograman dan ini disebut inisialisasi port.
Inisialisasi digital yaitu :
MVI A,A2
OUT 53
Untuk inisialisasi analog yaitu :
MVI A, A2
OUT 53
MVI A, 08
OUT 53
MVI A,04
OUT 52

Untuk inisialisasi normal (reset PIO 8255 ) yaitu ;


MVI A, 00
OUT 52

Contoh 1:
MVI A, A2 : inisial pemakaian ADC / DAC
OUT 53
MVI A, 08
OUT 53
MVI A,04

73
OUT 52
IN 51 : mengambil level input ADC / ANIN dan
meletakkan harga hexa a di reg. A, mengulang
kembali data dari ADC
JMP
Jalankan program di atas, gunakan perintah step. Setelah menjalan perintah
IN 51 maka lihatlah nilai di register A. Gunakan sebuah power supply 5 v dan
multimeter digital.
Aturlah tegangan powersuply pada tegangan +5V, kemudian hubungkan +
supply ke pin ANIN lalu ground power supply ke pin ANGND midicom.
Jalankanlah program contoh di atas, berapa harga register A? Ubah harga
tegangan supply menjadi +6 Volt berapa nilai register A?
Sekarang pindahkan kabel dari pin + power supply ke pin power supply,
lalu set pada tegangan -5V dan -6V. Jalankan program dengan menu step, setelah
sampai In 51 lihatlah nilai register A. ubah harga tegangan supply lalu jalankan
step sampai IN 51 berikutnya. Begitulah selanjutnya sampai anda memahami
pemakaian dan perhitungan ADC berikut.

Bahasan : Untuk +6 v harga reg.A adalah

= 76,5 decimal +40 H

Untuk -5 v harga reg. A adalah

= -63,75 decimal = 0 40 H

= 00 H 40 H = CO H
Untuk 6 v harga reg. A adalah

= - 76,5 decimal = 0 H

= B3 H
Contoh 2 : MVI A,A2 : inisialisasi pemakaian ADC/DAC
OUT 53
MVI A,08
OUT 53
MVI A, 04
OUT 52
LDA 9000 : mengambil data heksa dari memory
OUT 50 ; mengeluarkan nilai heksa ke output
RST 1 : ( DAC ) dan mengeluarkan level analog ke
pin ANOUT

74
Untuk kemudahan isilah memory 9000 dengan 40, lalu jalankan program
contoh 2 di atas. Ukurlah tegangan output pada pin ANOUT dengan voltmeter.
Apakah benar = 5 volt. Ubahlah memory 9000 dengan data 4D, CO atau B3
lakukanlah hal yang sama seperti hal di atas. Apakah kesimpulan anda ?.
Kesalahan kecil bisa saja tejadi pada DAC ini. Karena adanya tegangan keluaran
walaupun kita mengeluarkan level 00 dari reg.A ke DAC di atas. Secara teroritis
harga ourput 00 volt tapi kenyataaannya bisa saja berada pada level -50 mv
sampai 20 mv. Dengan demikian harga-harga berikutnya akan beracu ke tegangan
awal ini. Misalnya pada nilai 00 H level output DAC adalah -40 mv maka nilai 01
H level output DAC adalah (-40 mv + 78 mv ) = 38 mv. Ingatlah, bahwa bilangan
negative adalah komplemen ke dua dari bilangan positif .

4.4 DAC SEBAGAI SUMBER SINYAL


Untuk percobaan ini diperlukan sebuah osiloskop untuk melihat sinyal yang
dihasilkan oleh midicom melalui bantuan DAC. Hubungannya adalah mengukur
sinyal analog keluaran dari pin ANAOUT dan AGND dengan terminal
pengukuran dan ground pada osiloskop. Lihatlah gambar sinyal berikut ini:
---------------------------------------------------------------------------------
+5V 10 Vpp
0 ------------------------------------------------------------------------------------------
-5V ----------------------------------------------------------------------------
Gambar 4.3 Bentuk sinyal segi empat
Sinyal segi empat diatas adalah sinyal yang akan kita keluarkan dan kita
tampilkan ke osiloskop melalui DAC.
Program 1 : inisialisasi
MVI A,40 ;mengeluarkan level +5 v
OUT 50
MVI C,FF ;waktu tunda atau lebar pulsa positif
DCR C
JNZ
MVI A,CO ;mengeluarkan level -5 v
OUT 50 ;waktu tunda atau lebar pulsa negatif
MVI C,FF
DCR C
JNZ ; ulangi level +5 V
JMP

75
Karena kita akan sering mengggunakan program inisialisasi pemakaian
analog input output, maka baiknya program inisialisasi tersebut dibuat menjadi
subrutin, yaitu dengan mmenambahkan perintah RET diakhir program inisialisasi
tersebut seperti berikut, dan tulislah program berikut dialamat 9000 H.
9000 MVI A, A2 ; inisialisasi
OUT 53
MVI A,08
OUT 53
MVI A, 04
OUT 52
RET
Tulislah program 1, jangan lupa memanggil program inisialisasi. Jalankanlah
program tersebut dengan perintah GO. Ukurlah sinyal ANOUT dengan
osiloskop. Bagaimana tampilan yang ada? Cobalah mengubah harga waktu tunda
atau lebar pulsa dengan mengubah harga reg. C. Jalankan kembali program.
Lihatlah gambar sinyal berikut ini :
+5 V---------------------------------------------------------------------------------
----------------------------------------------------------------------------
-5 V ---------------------------------------------------------------------------
Gambar 4.5 Sinyal gigi gergaji

Sinyal gigi gergaji diatas adalah sinyal yang akan kita tampilkan.
Program 2: CALL inisialisasi
MVI A, CO ; level awal -5 V
OUT 50 ; keluarkan level
MVI C, FF
DCRC
JNZ
INR A ; menaikkan level secara llinier
CPI A,41 ; level maksimum +5 V
JNZ ; bila mmencapai maksimum maka
JMP Proses terulang kembali
Perhatikanlah program 2, banyaknya Up- Counter, kita hanya memperhatikan
level awal dan akhirnya saja. Tentu saja anda bisa mengubah amplitudonya
dengan cara tersebut atau mengubah frekuensinya dengan mengubah harga waktu
tunda.
Dengan program 3 ini, gunakan voltmeter digital untuk mengukur tegangan
keluaran ANOUT. Jalankan program diatas, gunakan tombol () untuk menaikkan
level. Tegangan atau tombol () untuk menurunkan level tegangan dan tombol
home seperti biasanya kita gunakan untuk menyelesaikan program.

Program 3 : CALL inisialisasi

76
MVI B,00 ; penyimpanan level awl 00
MVI A,00 ; level awal 0 volt
OUT 50 ; keluarkan level ke DAC
CALL OFF1 ; tunggu tombol ditekan
MOV A, C ; ambil kode ASCII tombol
CPI 1A ; uji penekanan tombol ()
JNZ ;tombol ()berarti level dinaikkan
INR B
MOV A,B
JMP
CPI OA ; uji penekanan tombol ( )
JNZ ;tombol () berarti level diturunkan
DCR B
MOV A, B
JMP
CPI OF ; uji penekanan tombol home
Bila bukan ulangi penekanan tombol.
JNZ
JMP 4050 ; selesai

4.5 Dasar Pengontrolan Motor Stepper


Motor stepper termasuk salah satu motor DC yang operasionalnya dibidang
robotic sudah lama dikenal. Motor DC yang umum menggunakan belitan yang
disatukan yang dicatu dari dua kabel positif dan negatif. Perubahan polaritas kabel
akan mengubah gerakan motor ke arah yang berlawanan (seperti motor pemutar
pita rekaman). Lain halnya dengan stepper yang terdiri dari 4 belitan yang terpisah
pencantuannya melalui kabel tersendiri untuk mencatu setiap belitan, karenanya
pada dasarnya stepper ini memiliki 6 buah kabel untuk mencatu gerakannya. Dua
buah kabel pencatu adalah kabel bersama yang disatukan dan dihubungkan ke
catu tegangan penggerak berpolaritas positip. Konfigurasi motor stepper ini
terlihat pada gambar dibawah ini.

L1 L2 L3 L4 L1 L2 L3 L4

77
Gambar 4.6 Motor stepper unipolar dengan common yang digabung

Tabel 4.3 Pergerakan motor stepper


No L1 L2 L3 L4
1 0 0 1 1
2 1 0 0 1
3 1 1 0 0
4 0 1 1 0

Biasanya kabel moteor stepper terpisah menjadi 3 kabel dan 3 kabel. Dengan
mengukur harga tahanan antar kabel maka kita dapat menemukan kabel yang akan
disatukan (kabel bersama). Harga tahanan lilitan biasanyan tertulis pada label
stepper tersebut misalnya 70 ohm. Kedua kabel bersma ini dihubungkan ke positip
power. Umumnya power untuk stepper adalah 12 VDC. Karena kedua kabelnya
dihubungkan ke positip power maka kini tinggal 4 kabel lagi. Perhatikanlah
gambar motor stepper dan tabel pergerakan di atas, ada 4 lilitan yang kutub-
kutubnya terhubung pada 4 kabel yang kini kita bahas. Untuk menggerakkan
stepper maka setiap lilitan harus mendapat catuan tegangan seperti yang di
tunjukkan oleh tabel diatas. Bit 0 menyatakan kabel tersebut tidak terhubung ke
positip maupun negatip atau ground, sedangkan bit 1 menyatakan kabel terhubung
ke polaritas negatip ataupun ground. Perhatikan lagi urutan lilitan yang sengaja
disilang penyusunannya yaitu L1, L3, L2 lalu l4. Hal ini disusun demikian agar
mempermudah pengontrolan pemberian catuan ataupun pergerakannya.
Dengan memberikan urutan catuan seperti tabel diatas yang dimulai dari
nomor 1 hingga nomor 4, maka stepper akan bergerak ke kanan. Bila urutannya
diubah dari nomor 4 hingga nomor 1, maka stepper akan bergerak ke kiri.
Perhatikan pergerakan bit-bit pada tabel tersebut, mulai nomor 1 hingga
nomor 4, maka terlihat bahwa bit-bit tersebut digeser ke kanan, hal ini layaknya
sebuah Ring Counter yang bergerak ke kanan. Masalahnya sekarang adalah dari
ke-4 yang tersisa. Kita tidak dapat dengan pasti memastikan langsung yang
manakah L1, L2, L3 ataupun L4. Karenanya untuk pertama sekali bila ternyata
stepper tidak bergerak atau hanya berdetak-detak saja, maka kemungkinan antara
L1 dan L2 atau L3 dan L4 ada yang terbalik pemasangannya.
Motor stepper hanya dapat bekerja dengan catuan minimum 12 VDC dan
memakai arus listrik yang cukup besar, karenannya stepper ini tidak dapat
dikendalikan langsung menggunakan komponen IC atau langsung dicatu oleh

78
komputer. Kita harus menggunakan suatu perangkat pembantu untuk mengatasi
hal ini yang disebut DRIVER. Driver adalah alat bantu yang menaikan level
tegangan dan arus sinyal penggerak sesuai dengan beban yang dikendalikan.

4.5.1 Pengontrolan Dengan Midicom


Konfigurasi hubungan antara motor stepper dengan driver dan power supply
terhadap mikrokomputer diperlihatkan di atas yang terdiri dari 3 bagian yaitu
motor stepper sebagai alat yang dikontrol, modul driver 12 VDC sebagai
pengggerak stepper dan alat pengontrol gerakan stepper. Alat pengontrol bisa
hanya berupa rangkaian kecil Ring counter biasa, tetapi kita akan menggunakan
midicom sebagai alat pengontrolnya karena kita akan memanfaatkan kelebihan-
kelebihan mikroprosesor dalam menangani setiap pengontrolan.
Yang perlu dikerjakan midicom sangat sederhana, yaitu memberikan bit-bit
pengontrol sebagaimana ditunjukkan oleh tabel. Pekerjaaan ini tentu saja sama
halnya dengan membuat program sebuah Ring counter dengan data 33H, seperti
berikut ini:

MVI A, 33 : data awal posisi bit penggerak


OUT 50 : keluarkan bit kontrol ke driver
LXI D, 0050 : perlambatan penggerak motor
CALL OFFA : bergerak ke kanan ataupun ke kiri
RRC/RLC : ulangi terus pergerakan
JMP

Bila peralatan telah disusun seperti konfigurasi di atas, maka jalankanlah


program Ring counter di atas, bila memakai perintah RRC maka stepper akan
bergerak/berputar ke kanan, sebaliknya bila tidak menggunakan perintah RLC
maka akan bergerak ke kiri. bila stepper tidak berputar dan hanya berdetak-detak
saja atau pergerakannya tidak stabil maka cobalah tukar tempat /posisi L3 dan L4,
bila salah juga tukar posisi L1 dan L2, bila tidak mau juga periksalah modul
drivernya.

4.5 2 Karakteristik Stepper Lainnya


Stepper telah bergrak, kekiri dan kekanan, apakah selesai kerja kita dengan
motor stepper? Ini hanyalah awal kerja kita untuk beranjak kepada kelebihan
motor stepper dari motor DC umumya. Motor DC yang umum juga bisa bergerak

79
ke kiri atau ke kanan, lalu apa bedanya? Kelebihan motor stepper adalah
ketelitian posisi putarannya yaitu dapat berhenti seketika dengan tepat pada sudut
yang kita inginkan. Andai motor DC umum yang sedang berputar kita balikan
polaritasnya, maka pasti masih tersisa beberapa putaran sebelum ia berputar
kebalikannya.
MVI A,33 : data awal pergerakan
CALL OFF1 : tunggu ada tombol yang ditekan
OUT 50 : kirim bit kontrol ke driver
RRC/RLC : arah pergerakan ke kanan atau ke kiri
JMP : ulangi terus
Jalankan program diatas, sebelumnya tandailah posisi awal putaran stepper,
kemudian etelah menjalankan program di atas tekanlah sembarang tombol,
stepper akan bergerak memutar setiap kita tekan sembarang tombol. Hitunglah
berapa banyak kita telah menekan tombol hingga stepper berada pada posisinya
semula. Tahukah anda maksudnya?
Tentu saja kita sedang menghitung ketelitian stepper kita pada setiap stepnya.
Ketelitian stepper didasarkan pada besarnya derajat pergerakan setiap stepnya
(satu kali gerakan).
Contoh bila stepper memerlukan 48 kali gerakan untuk kembali ke posisinya

semula, maka ketelitiannya adalah:

Ketelitian stepper = = 7,5derajat/step

Semakin kecil derajat setiap step gerakan itu berarti semakin tinggi ketelitian
stepper tersebut dalam mengontrol pergerakannya. Banyaknya step untul satu
putaran (3600) menujukkkan juga banyaknya posisi yang dapat kita capai. motor
stepper dengan 7,50 sama dengan memiliki 48 posisi selama satu putaran,
sedangkan stepper dengan 1,20 memiliki 300 posisi selama satu putaran.
Jalankanlah program berikut ini, namun sebelumnya isilah memori pada
alamat 9000 H dengan banyaknya step selama 1 putaran, contoh bila banyaknya
step selama 1 putaran adalah 48 step maka isilah memori 9000 H dengan angka 30
H atau bila hanya 24 step isilah dengan 18 H pada memori tersebut. Tulislah
program berikut pada alamat memori dibawah 9000 H.
Program ini hanyalah program revisi dari program sebelumnya, disini
dilengkapi dengan indikator gerakan yang menampilkan setiap gerakan stepper

80
dalam bentuk tampilan di layar sebanyak step setiap 1 putaran, setelah satu
putaran maka tampilan akan diulangi lagi. Ingatlah pada rutin OFEE yang
menampilkan kode ASCII yang berada di reg C terdekat dengannya. Anda bisa
saja mengubah karakter apa yang akan digunakan untuk dijadikan tampilan
indikator gerakan di layar dengan mengubah isi reg C tersebut dengan kode ASCII
karakter yang anda inginkan.

MVI B, 33 : Inisialisasi bit kontrol


MVI C,OC : besihkan layar, kursor di kiri atas
CALL OFF : Inisialisasi karakter penampil gerakan
MVI C,7F : ambil data banyaknya step satu putaran
LDA 9000 : tambah 1 agar hitungan looping benar
INR A : data gerakan disimpan ke reg E
MOV E, A : ambil bit kontrol dan bergerak ke kanan
MOV A, B : arah gerakan ke kanan
OUT 50 :posisi bit kontrol disimpan di reg B
RRC : tampilkan karakter tanda pergerakan
MOV B, A : mengulangi sebanyak step 1 putaran
CALL OFFE : ulangi dari awal lagi
DRC E
JNZ
JMP

4.5.3 Pengontrolan Dengan 2 Buah Motor Stepper


Dikarenakan sebuah motor stepper dapat kita gerakkan hanya dengan
menggunakan 4 bit pengontrol maka kita sebenarnya dapat pula menggerakkan
dua buah stepper sekaligus menggunakan 8 bit kontrol karena kita memiliki port
output 8 bit.
Dengan program sebelumnya kita dapat kita dapat melihat bahwa port 50 yang
terdiri dari 8 bit dapat kita kelompokkan menjadi 4 bit LSB dan 4 bit MSB.dengan
menggunakan program sebelumnya kita melihat antara 4 bit LSB ataupun 4 bit
MSB sebagai pengontrol sebuah stepper atau 8 bit tersebut untuk menggerakkan 2
buah stepper dengan arah dan kecepatan yang sama tentunya.
Contoh.
Program berikut ini menunjukkan bagaimana kita bisa menggerakkan 2 buah
stepper sekaligus dengan arah yang berlawanan tetapi dengan kecepatan yang
sama.

81
MVI A,33 ;mengisi data kontrol awal ke memori penyimpan data
kontrol stepper 1 dan 2
STA F000
STA F001
OUT 50 ;kirimkan data kontrol awal ke driver
LDA F000 ;mengambil data stepper 1,mengubahnya untuk pergerakan
berikutnya (ke kanan)
RRC
STA F000 ; menyimpan kembali data kontrol stepper 1
ANI OF ; stepper satu di gerakkan oleh 4 bit LSB
MOV B, A ; 4 bit LSB untuk stepper 1 disimpan di B
LDA F0001 ;mengambil data stepper 2, mengubahnya untuk pergerakan
berikutnya RLC (ke kiri)
STA F001 ; menyimpan kembali data kontrol stepper 2
ANI F0 ; 4 bit MSB untuk menggerakkan stepper 2
ORA B ; 4 bit LSB dan MSB disatukan untuk menggerakkan
kedua stepper sekaligus
OUT 50
LXI D,0010 ; perlambatan pergerakan stepper
CALL OFFA
JMP ; ulangi terus

Secara teknisnya untuk menggerakkan sebuah stepper kita harus menggeser 8


bit data (pemakaian perintah RRC atau RLC).karenanya kita tidak bisa
menggunakan data bersama untuk stepper 1 dan 2.Data pengontrol steper 1
diletakkan di suatu memori(F000 H)dan data pengontrol stepper 2 di memori
lainnya (F001 H).Masing-masing data kontrol diolah tersendiri dengan cara
mengambil pada tempatnya dan setelah diolah dikembalikan kembali,dengan
demikian data yang tersimpan adalah data terakhir yang diolah.
Seperti penjelasan pertama di atas,bahwa 4 bit LSB ataupun 4 bit MSB data
adalah sama,maka kita mengambil 4 bit LSB stepper 1 dan 4 bit MSB stepper 2
untuk disatukan dan diberikan bersama ke driver penggerak.Untuk inilah
digunakan perintah ANI OF dan ANI FO lalu kemudian digunakan ORA B untuk
menggabungkan 4 bit LSB stepper 1 dan 4 bit MSB stepper 2 dalam satu byte
pengontrol driver penggerak.Pelajarilah teknik di atas dengan seksama,
bertanyalah kepada pengajar hingga benar-benar memahami.
Program menggerakkan 2 stepper secara prinsip sama tekniknya dengan
program menggerakkan sebuah stepper dengan kontrol melalui keyboard
sebelumnya. Perbedaannya terletak pada teknik penyatuan bit bit kontrol kedua

82
stepper sebelum di keluarkan ke port 50 dan menggerakan stepper. Pemakaian reg.
D dan reg.E sebagai penyimpanm tempat kontrol yang bersesuaian untuk masing-
masing stepper jelas diperlukan.
Stepper 1 yang digerakkan oleh 4 bit sebelah kanan terminal 50 (4 bit LSB)
hanya memiliki 4 bit LSB itu saja pada register D sedangkan 4 bit MSB nya
sengaja dikosongkan untuk tempat 4 bit MSB stepper 2. Jadi perintah ANI 0F dan
ANI F0 di maksudkan untuk menyaring 4 bit yang bersesuaian yang di pakai
setiap stepper. Maksudnya walaupun bit pengontrol stepper 1 dan 8 bit yang di
ambil dari memori F000 namun yang di pakai hanya 4 bit LSB nya saja, jadi
untuk di tampilkan 4 bit MSBnya tidak perlu disertakan. Cobalah pelajari dan
perhatikan kembali program tersebut. Untuk membuat program lebih menarik,
maka anda bisa menggambarkan menunya di layar lengkap dengan informasi
tombol-tombol yang digunakan dan fungsinya. Demikianlah bahasan kita
sementara tentang pemakaian midicom untuk pengontolan motor stepper, semoga
anda dapat memahaminya dan dapat mengembangkanya untuk aplikasi yang lain.

4.6 Rangkuman
1. Programmable Peropheral Interface (PPI 8255) digunakan untuk memberikan
akses CPU untuk parallel programmable I/O.
2. Mode kerja PPI 8255 dioperasikan dalam 3 mode:
- Mode 0: Basic I/O
- Mode 1: Strobed I/O
- Mode 2: Directional Bus
3. Agar mikroprosesor dapat mengakses sinyal input analog maka diperlukan
ADC (Analog to Digital Converter), sedangkan untuk mengontrol peralatan
analog diperlukan DAC (Digital to Analog Converter).

4.7 Pertanyaan
1. Berapakah harga tegangan keluaran DAC bila data hexa yang dikeluarkan
adalah 92 H, atau berapakah harga tegangannya yang terdeteksi oleh midicom
bila hasil konversi ADC adalah 92H (maksudnya sama).
2. Berapa pula harga tengangan untuk nilai hexa nya 34 H?
3. Berapa nilai Hexa jika tegangan yang dikeluarkan DAC adalah 5 volt?
4. Buatlah program untuk bisa menggerakkan 2 stepper derngan menggunakan
keyboard. Setiap nsetiap stepper menggunakan 2 tombol untuk penggerak
kekiri ataupun kekanan ,karena program ini menggunakan 4 tombol keyboard
yaitu tombol[] tombol[]untuk pengontrolan stepper1dan tombol[]dan

83
tombol[]untuk stepper2.Program ini sengaja di pisah menjadi satu program
utama dan satu subrutin atau anda bisa saja menyatukannya.

BAB V
MIKROPROSESOR 8088

Pada bab ini dijelaskan gambaran umum mikroprosesor 8088 berupa


arsitektur, blok diagram dan cara kerja mikroprosesor 8088.
Mikroprosesor 8088 adalah multipurpose mikroprosesor yang
diimplementasikan dengan teknologi N-channel, depletion load, silicon gate
(HMOS-II). Dipasarkan dengan format 40-pin CERDIP (Ceramic Dual Inline
Package). Mikroprosesor ini termasuk keluarga mikroprosesor 8 bit dan 16 bit.
Mikroprosesor Intel 8088 kompatibel secara langsung dengan software yang
didesain untuk mikroprosesor 8086 dan 8080/8085, dan secara hardware juga
kompatibel dengan mikroprosesor 8080/8085. Mikroprosesor 8088 adalah
merupakan turunan dari mikroprosesor 8086 yang diperkenalkan oleh Intel
Corporation tahun 1978, dengan perbedaan utama pada lebar bus data, jika 8086
lebar bus data internal 16 bit dan lebar bus data memori eksternal 16 bit,
sedangkan 8088 lebar bus data internal 16 bit, sedangkan lebar memori eksternal
hanya 8 bit.
Perangkat sistem minimum merupakan rangkaian elektronik yang terdiri dari
sistem internal (software) dan sistem eksternal (hardware). Sistem internal berupa

84
sejumlah instruksi program dan data, sedangkan system eksternal berupa
perangkat keras yang terdiri dari ROM (Read Only Memory), RAM (Random
Acces Memory), buffer, mikroprosesor, I/O device dan peralatan lain yang
menunjang. Sistem minimum adalah penerapan mikroprosesor pada suatu
rangkaian digital, dengan komponen minimal sehingga sistem mikroprosesor
dapat bekerja. Mikroprosesor bekerja dalam system minimum artinya tidak
menggunakan IC co prosesor 8087 untuk menghitung floating point [Rahmad
setiawan, 2005]

Tujuan Khusus
Mahasiswa mampu menjelaskan arsitektur, fungsi masing-masing blok diagram
serta menjelaskan cara kerja mikroprosesor 8088.

5.1 Mikroprosesor 8088


Mikroprosesor 8088 mulai diperkenalkan oleh Intel Corporation pada tahun
1978. Mikroprosesor ini mengawali sejarah perkembangan mikroprosesor Intel
selanjutnya, seperti 80186, 80286, 80386, 80486, Intel Pentium I, sampai 2006 :
Intel Quad-core Xeon X3210/X3220. Semua instruksi yang terdapat pada
mikroprosesor 8088 sepenuhnya dapat dijalankan pada mikroprosesor-
mikroprosesor Intel tersebut. Karena itu, untuk memahami perancangan hardware
dan software pada PC sekarang, ada baiknya jika Anda lebih dahulu memahami
perancangan hardware dan software pada mikroprosesor 8088 ini.
Mikroprosesor 8088 mempunyai 8 bit jalur data dan 20 bit jalur alamat. Jalur
data memiliki pin yang sama dengan jalur alamat, artinya pada saat tertentu
digunakan sebagai jalur data dan pada saat yang lain digunakan sebagai jalur
alamat. Karena satu pin memiliki dua fungsi, yaitu sebagai jalur data dan jalur
alamat maka digunakanlah sistem time multiplexing, yaitu penggunaan jalur yang
sama untuk fungsi dan waktu yang berbeda, sehingga tidak bisa data dan alamat
dikirim pada saat yang bersamaan. Mikroprosesor 8088 dibuat dalam bentuk IC
dengan kaki sebanyak 40 pin (jenis DIP 40).
Ada dua mode yang dapat digunakan pada mikroprosesor 8088, yaitu mode
minimum dan mode maksimum. Pena yang menjadi penentu penggunaan mode
adalah pena MN/MX. Mode minimum biasanya digunakan untuk sistem yang
sederhana yang umumnya menggunakan prosesor pada satu PCB. Sedangkan

85
mode maksimum umumnya digunakan untuk sistem yang lebih kompleks yang
menggunakan multi I/O dan memori yang terpisah serta dapat pula digunakan
dengan co-prosesornya (co-prosesor untuk 8088 adalah 8087).
Mikroprosesor 8088 mampu mengalamati memori sampai 1 MB. Memori ini
digunakan untuk menyimpan kode biner dari instruksi yang akan dijalankan oleh
P, selain itu memori juga digunakan untuk menyimpan data secara sementara.
Dengan tambahan unit I/O memungkinkan P 8088 untuk menerima data dari luar
(operasi input) ataupun mengirim data keluar (operasi output).

Gambar 5.1 Diagram Pin Mikroprosesor 8088

86
Gambar 5.2 Diagram pewaktuan siklus RD/WR ketika terjadi operasi I/O dan
Memori oleh P 8088
5.2 Konfigurasi Pena P 8088
Gambar di atas memperlihatkan diagram pewaktuan yang menunjukkan
siklus baca tulis ketika terjadi operasi I/O dan Memori oleh P. Seluruh
penjelasan tentang pena-pena pada mikroprosesor 8088 ini akan selalu mengacu
pada diagram pewaktuan tersebut. Pena pada P 8088 ada yang tidak dipengaruhi
oleh perubahan mode baik mode maksimum ataupun mode minimum dan ada
pula pena yang berfungsi hanya pada saat mode maksimum.
Pena yang tidak dipengaruhi oleh perubahan mode baik mode maksimum
ataupun mode minimum, diantaranya adalah:
1. Bus alamat (AD0-AD7, A8-A15, dan A16/S3-A19/S6). Mikroprosesor
8088 mempunyai 20 pin jalur alamat sehingga dapat menjangkau 2 20 (1
MByte) lokasi memori. Pena-pena ini hanya berfungsi pada saat T1 (lihat
diagram pewaktuan). Pada saat T2 sampai T4 ada sebagian pin yang
berfungsi sebagai data dan juga sebagai status.
2. Bus data (AD0-AD7). Mikroprosesor 8088 mempunyai jalur data
sebanyak 8 pin dan bisa digunakan secara biderectional (dua arah). Hal ini
berarti mikroprosesor ini memberikan fasilitas input-output sebanyak 28 =

87
256 byte. Pin-pin ini berfungsi sebagai jalur data hanya pada saat T2-T4.
Pada saat T1 berfungsi sebagai jalur alamat.
3. Kontrol baca (RD). Sinyal ini aktif rendah. Jika pena ini berlogic nol
berarti P sedang melaksakan pembacaan data. Sinyal ini aktif
dipertengahan T2 dan kembali tidak aktif dipertengahan T4.
4. Clock (CLK). Yaitu masukan sinyal detak yang diberikan dari luar untuk
mensinkronkan segala kegiatan pada P. Miroprosesor 8088 dapat bekerja
pada frekuensi clock 4,77 MHz atau 8 MHz untuk versi turbo.
5. Kontrol waktu tunggu (READY). Sinyal READY ini disampel pada sisi
naik T2. Jika sinyal READY ini berlogic 0 berarti akan disisipkan
TW/Twait antara T3 dan T4. Hal ini terus diulangi sampai sinyal READY
diberi logika 1. Sinyal ini biasanya digunakan jika ada hardware lain yang
memiliki kecepatan lebih lambat dari kecepatan P ketika sedang bekerja
dalam keadaan normal.
6. Reset sistem (RESET). Sinyal ini aktif tinggi. Bila logika 1 diberikan pada
pena ini, mikroprosesor akan menghentikan segala kegiatan yang sedang
terjadi saat itu. Semua register akan dibuat 0 kecuali register code segment
dibuat FFFF0H (akan dijelaskan pada penjelasan segment register ).
7. Interupsi (INTR dan NMI). INTR dan NMI (Non Maskable Interrupt)
adalah permintaan interupsi yang dipanggil secara hardware. Sinyal INTR
merupakan sinyal aktif tinggi, sedangkan NMI dapat aktif menggunakan
trigger sisi naik dari sinyal clock. INTR tidak akan berfungsi jika interupsi
flag dikosongkan (menggunakan instruksi CLI ), sedangkan NMI tidak
dapat dihalangi dengan instruksi CLI.
8. Kontrol tunggu test (TEST). Untuk mengaktifkan sinyal TEST, digunakan
instruksi WAIT. Jika pin ini berlogic 1 ketika P sedang menjalankan
instrruksi WAIT, CPU akan berada pada keadaan idle mode, artinya
mikroprosesor tidak melakukan kegiatan apa-apa sebelum pin ini berlogic
0. Jika pin ini berlogic 0 kembali, maka pelaksanaan instruksi akan
dilanjutkan.
9. Status (A16/S3-A19/S6). Sinyal status digunakan untuk mendeteksi suatu
keadaan-keadaan atau operasi-operasi yang sedang berlangsung,
diantaranya pengambilan instruksi, membaca memori, menulis memori,
dan operasi-operasi yang lain. Sinyal ini dikeluarkan pada saat keadaan
T2-T4. Definisi dari status S4 dan S3 ditunjukkan pada Tabel berikut ini.

88
Tabel 5.1 Sinyal Status
S4 S3 Yang dijangkau saat terjadi siklus bus
0 0 Extra segment (ES)
0 1 Stack segment (SS)
1 0 Code segment (CS)
1 1 Data segment (DS)
10. Catu daya (VCC dan GND). Mikroprosesor 8088 membutuhkan Vcc =
+5V yang masih bisa bertoleransi sebesar 10% dari +5 V.
Sinyal yang berfungsi hanya pada mode minimum (mode maksimum tidak
digunakan) adalah:
1. Sinyal tulis (WR). Sinyal ini aktif rendah. Jika sinyal ini berlogic 0, berarti
P sedang melaksanakan operasi tulis data ke unit memori atau I/O. Sinyal
ini aktif pada saat T2-T4.
2. Sinyal kontrol memori dan I/O (IO/M). Jika pena ini berlogika 0, berarti
saat ini pada siklus bus sedang berlangsung operasi input/output. Jika pena
ini berlogic 1, berarti saat ini pada siklus bus sedang berlangsung operasi
memori.
3. Address Latch Enable (ALE). Sinyal ini digunakan sebagai penahan
alamat yang baru masuk dalam suatu proses siklus mesin. Sinyal ini dapat
digunakan untuk dimultipleks dengan alamat, data, dan status. Sinyal ini
mengeluarkan logic 1 pada saat clock T1.
4. Pengiriman dan penerimaan data (DT/R). Jika sinyal ini berlogic 1, arah
data adalah dari P menuju keluar. Jika sinyal ini berlogic 0 maka arah
data dari luar menuju P.
5. Data Enable (DEN). Sinyal ini biasanya digunakan untuk meng"on"kan
buffer (latch) yang dihubungkan kebus data.
6. Interrupt Acknowledge ( INTA ). Sinyal ini secara khusus digunakan
sebagai tanggapan terhadap suatu instruksi INTR.
7. Hold Request (HOLD). Bila logika 1 diberikan pada pena HOLD, P akan
menghentikan kegiatan dan melepas bus yang berhubungan dengan unit
memori dan I/O, sehingga hal ini memberikan kesempatan bagi proses lain
untuk mengambil alih sistem.
8. Hold Acknowledge (HLDA) Sinyal ini digunakan sebagai pengakuan dari
P bahwa sinyal HOLD telah diterima dan sistem dapat diambil alih oleh
prosesor lain.
Sinyal yang berfungsi hanya pada saat mode maksimum adalah:

89
1. Status siklus bus (S0, S1, S2). Sinyal ini merupakan keluaran yang akan
diberikan oleh IC lain yang berfungsi sebagai bus kontroler.
2. Kunci (LOCK). Sinyal ini akan mengeluarkan logika 0 selama
pelaksanaan instruksi LOCK sehingga akan mencegah prosedur lain
menjangkau sistem.
3. Status antrian (QS0, QS1). Sinyal ini akan memberitahu informasi apa
yang telah dipindahkan dan informasi apa yang ada dalam antrian sewaktu
terjadi siklus clock sebelumnya.
4. Local Bus Control (RQ/ GT1 dan RQ/ GT0). Sinyal ini menggantikan
fungsi HOLD dan HLDA pada mode minimum.

5.3 Arsitektur Internal P 8088


Arsitektur internal P 8088 dibagi menjadi dua bagian, yaitu BIU (Bus
Interface Unit) dan EU (Execution Unit). BIU berfungsi untuk menjalankan
operasi bus seperti menjemput instruksi, membaca data dan menulis ke memori,
menerima input dan mengeluarkan output ke unit periferal. Dari BIU ini,
dihasilkan bus data sebanyak 8 bit. Untuk menjalankan fungsinya, BIU memiliki
register segment, register komunikasi internal, pointer instruksi, antrian kode
objek instruksi, bus alamat, dan bus kontrol logika. EU berfungsi untuk
menterjemahkan dan menjalankan instruksi.

5.4 Register 8088


Mikroprosesor 8088 mempunyai 4 kelompok register internal yaitu register
data (general purpose register), register penunjuk instruksi (intruction pointer
register), , register segment (segment register), serta flag register.

5.4.1 Register Data (General Purpose Register).


Register data pada P 8088 dibagi menjadi 4 kelompok register yang
semuanya berfungsi untuk penyimpanan data secara sementara. Keempat
kelompok register ini adalah register AX, BX, CX. dan DX. Register AX, BX,
CX, dan DX merupakan register data 16 bit. Register 16 bit dari kelompok ini
mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing-
masing bagian terdiri dari 8 bit, yaitu register data AH dan AL (untuk AX), BH
dan BL (untuk BX), CH dan CL (untuk CX), dan DH dan DL (untuk DX).
Akhiran H menunjukkan High dan akhiran L menunjukkan Low.

90
Selain berfungsi sebagai penyimpan data serba guna yang dapat digunakan
secara bebas oleh pemogram, register-register tersebut memiliki juga fungsi-
fungsi lainnya secara khusus, yaitu:
Register AX (Accumulator) biasanya digunakan pada operasi aritmatika
(perkalian dan pembagian), dan operasi I/O 16 bit.
Register BX (Base) biasanya digunakan untuk menunjukkan suatu alamat offset
dari suatu segment, menyimpan basis alamat dari data sebagai
referensi dari instruksi translate (XLAT).
Register CX (Count) biasanya digunakan untuk menunjukkan banyaknya
looping yang akan terjadi, sebagai register pencacah secara implicit
dalam beberapa instruksi.
Register DX (Data) biasanya digunakan untuk menampung sisa hasil pembagian
16 bit serta pada operasi I/O secara tidak langsung (16 bit)

5.4.2 Register Penunjuk dan Register Indeks (Indeks and Pointer Register).
Pointer register mencakup register base, register indek, program counter dan
stack pointer. Group pointer dan indek terdiri dari register IP, SP, BP, SI dan DI.
Mikroprosesor 8088 mempunyai dua buah register pointer (register SP dan
BP) serta dua buah register indeks (register SI dan DI).
SP (Stack Pointer) digunakan untuk mengalamati stack. Data yang terdapat pada
SP (Stack Pointer) memungkinkan pemogram untuk menjangkau lokasi
memori dari stack segment. Stack pointer yang berpasangan dengan stack
segment (SS : SP) digunakan untuk menunjukkan alamat dari stack RAM
(Random Access Memory). Stack RAM ini biasanya digunakan untuk
menyimpan informasi yang berhubungan dengan operasi stack, seperti isi PC,
alamat kembali (return address) pada instruksi CALL, dan akumulator.
Penyimpanan informasi pada stack RAM menggunakan sistem LIFO (Last In
First Out), artinya data yang terakhir dimasukkan (PUSH) merupakan data
pertama yang akan diambil (POP).
BP (Base Pointer), register serba guna yang digunakan untuk mengalamati array
dari data dalam stack. BP berpasangan dengan register stack segment (SS)
digunakan untuk mencatat suatu alamat di memori tempat data.
SI (Source Indeks) digunakan untuk mengalamati sumber data secara indirect
untuk digunakan dalam instruksi string.

91
DI (Destination Indeks) secara normal digunakan untuk mengalamati data tujuan
dan instruksi string, juga digunakan untuk menyimpan offset suatu operand
selama berlangsungnya suatu operasi string.
IP (Instruction Pointer) register penunjuk instruksi merupakan register 16 bit
yang berfungsi untuk menunjukkan lokasi instruksi berikutnya yang akan
dijalankan. Register IP ini berpasangan dengan CS (code segment) dimana
penulisannya adalah sebagai berikut [CS : IP]. Jadi lokasi alamat yang
ditunjuk bergantung pada code segment yang terdapat pada segment register.

5.4.3 Register Segment (Segment Register).


Mikroprosesor 8088 menghasilkan 20 bit alamat sehingga dapat menjangkau
1 MB lokasi memori (220 = 1048576 Byte atau disingkat 1 MB). Namun pada P
8088 register yang tersedia hanya 16 bit (216 = 64 KB), sehingga register indek dan
pointer tidak cukup lebar untuk mengalamati keseluruhan memori secara
langsung. Untuk menjangkau alamat 1 MB, maka memori pada P 8088
menggunakan segmen.
Segmen memori adalah sebuah blok memori sebanyak 64 KB yang dialamati
oleh register khusus yang disebut register segmen. Segment-segment register ini
adalah: Code Segment (CS), Data Segment (DS), Stack Segment (SS), dan Extra
Segment (ES).
CS (Code segment) digunakan untuk menyimpan kode program. Register ini
terutama diubah dengan instruksi jump, call, atau return. Alamat dari instruksi
selanjutnya yang akan dilaksanakan ole 8088 dibangkitkan dengan
menambahkan isi dari instruction pointer dengan isi dari CS x 16.
DS (Data segment) digunakan untuk menyimpan data program.
ES (Extra segment) digunakan untuk menyimpan segment data tambahanhanya
untuk operasi string.
SS (Stack segment) memori yang bdigunakan untuk stack menyimpan alamat
kembalinya interupsi dan subrutin.
Keempat register diatas menunjuk kelokasi masing-masing segment. Karena
register segment hanya terdiri dari 16 bit, sedangkan memori yang dapat
dijangkau sebanyak 20 bit, maka unit BIU (Bus Interface Unit) akan menambah 4
bit lagi pada LSB. Sebagai contoh, jika register ES=2721H, maka register akan
menunjuk kelokasi 27210H. Setiap segment hanya dapat menampung 64 KB
lokasi memori, sehingga jika CS=A000H, maka lokasi memori untuk Code
Segment dimulai dari A0000H sampai AFFFFH (64 KB).

92
Setiap kali catu daya dihidupkan, P berada dalam keadaan sembarang
dimana semua register berisi data yang tidak dapat diramalkan. Hal ini
memungkinkan terjadinya pembacaan maupun penulisan lokasi memori yang acak
pula. Karena itu semua register P harus dibuat nol kecuali Code Segment register
dibuat FFFF0H, sehingga P akan menjemput instruksi yang berada pada alamat
fisik FFFF0H. Jadi dengan memberikan sinyal RESET ketika pertama kali
dihidupkan, P akan selalu menjemput instruksi pada lokasi FFFF0H. Setelah
menempatkan suatu instruksi pada lokasi tersebut, maka instruksi itu merupakan
instruksi yang pertama kali dijalankan ketika P dinyalakan atau ketika diberi
sinyal RESET.

5.4.4 Flag Register.


Flag register merupakan register 16 bit, namun pada P 8088 yang digunakan
hanya 12 bit, yaitu 9 bit untuk status dan 3 bit untuk kontrol. Diagram blok flag
register adalah sebagai berikut:
X X X X OF DF IF TF SF ZF X AF X PF X CF
b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
Fungsi masing-masing register tersebut adalah:

jika berlogik 1 berarti terdapat carry atau borrow pada MSB (Most
CF
Significant Bit) yang terjadi selama operasi aritmatika. Jika berlogik
(Carry Flag)
0 berarti tidak terdapat carry atau borrow.
PF
jika berlogik 1 berarti 8 bit terendah menghasilkan paritas genap dan
(Parity
jika manghasilkan paritas ganjil PF akan berlogik 0
Flag)
jika berlogik 1 berarti terdapat carry pada bit ke 4 pada register AL
AF dan bila tidak akan berlogic 0. Register ini biasanya digunakan pada
(Auxillary operasi BCD, seperti perintah AAA. ZF (Zero Flag), jika berlogic 1
Carry Flag) maka operasi aritmatika menghasikan sisa 0, jika berlogic 1 maka
tidak menghasilkan 0
SF jika digunakan bilangan bertanda bit ini akan bernilai 1. Sedangkan
(Sign Flag)
bila SF berlogik 0 berarti bilangan diperlakukan sebagai bilangan
tidak bertanda. Bilangan bertanda dibagi menjadi bilangan positif
(+) dan bilangan negatif (-). Pada bilangan bertanda, bit terakhir (bit
ke-16) diperlakukan sebagai tanda (+) atau tanda(-). Jika bit terakhir

93
tersebut bernilai 1 berarti bilangan tersebut negatif dan jika bit
terakhir bernilai 0 berarti bilangan tersebut positif
TF jika berlogik 1 berarti berada pada keadaan single step. Keadaan ini
(Trace Flag) digunakan pada program Debug

IF jika berlogik 1 berarti Maskable Interrupt Request dapat dilakukan.


(Interrupt Jika berlogik 0 maka permintaan interupsi tidak dapat dipenuhi oleh
Flag) CPU
OF jika terjadi Over Flow pada operasi aritmatika, bit ini akan bernilai
(Over Flow 1. Dan jika tidak terjadi Over Flow pada operasi aritmatika, bit ini
Flag) akan bernilai 0
DF jika berlogik 1 berarti pada instruksi string nilai register akan
(Direction diturunkan secara otomatis dan jika berlogik 0 maka akan dinaikkan
Flag) secara otomatis
X Tidak digunakan

5.5 Alamat Relatif dan Alamat Absolut


Didalam suatu segment, alamat dimulai dari 0000H sampai FFFFH (64KB).
Alamat ini disebut juga alamat relatif/offset. Sedangkan alamat absolut dari
0000H s/d FFFFH adalah 00000H s/d FFFFFH. Berikut kita lihat cara
pengkonversian alamat relatif kealamat absolut. Pengkonversian dapat dilakukan
dengan menggeser nilai segment sebanyak 4 bit kekiri dan kemudian dijumlahkan
dengan nilai offset. Atau cara yang lebih sederhana adalah dengan mengalikan
nilai segment dengan 2 pangkat 4 (10H) kemudian dijumlahkan dengan nilai
offset. Cara ini dikembangkan dari besarnya selisih segment yang satu dengan
yang berikutnya sebesar 2 pangkat 4 (10H). Lihatlah contoh dibawah ini:
Alamat relatif : 1357H : 2468H 1356H : 2478H
Pengkonversian : 13570H 13560H
2468H 2478H
__________+ __________+
Alamat absolut : 159D8H 159D8H
Pada kedua contoh diatas terlihat jelas alamat relatif 1357H : 2468H sebenarnya
menunjukkan lokasi yang sama didalam memori (alamat absolutnya) dengan
alamat relatif 1356H : 2478H yang disebabkan adanya overlapping.

5.6 Generator Clock Untuk Mikroprosesor 8088

94
Tidak seperti 8085, mikroprosesor 8088 tidak mempunyai pembangkit clock
sendiri, ia harus diberi clock dari luar. Miroprosesor 8088 dapat bekerja pada
frekuensi clock 4,77 MHz atau 8 MHz (untuk versi turbo). Mikroprosesor 8088
juga membutuhkan sinyal sinkronisasi reset terhadap clock. Untuk memenuhi
persyaratan diatas, tersedia dipasaran IC yang telah dirancang sebagai generator
clock yaitu IC 8284 (Anda dapat saja menggunakan pembangkit-pembangkit
clock yang lain, asalkan sesuai dengan spesifikasi clock untuk 8088). Gambar
dibawah ini memperlihatkan pena-pena dari IC 8284.

Gambar 5.3 Pin IC 8284


Arti pena-penanya adalah sebagai berikut:

Vcc Catu daya + 5V


GND Ground
X1&X2 Masukan untuk crystal eksternal
Keluaran osilator yang mempunyai frekuensi yang sama dengan
OSC
frekuensi crystal
Sinyal clock untuk dikirimkan keP.Sinyal ini mempunyai frekuensi
CLK
2/3 dari frekuensi crystal dengan siklus kerja 33%
Sinyal ini mempunyai frekuensi dari frekuensi yang dikeluarkan
PCLK
pena CLK, dan memiliki siklus kerja 50%
Pena ini merupakan penentu referensi untuk clock. Jika pena ini
F/ C berlogic 1, maka clock mendapat sumber dari pena EFI, sedangkan
jika berlogic 0 mendapat sumber dari pena OSC
Masukan frekuensi eksternal yang digunakan untuk sebagai sumber
EFI
clock
Sinkronisasi clock yang digunakan untuk sinkronisasi beberapa IC
CSYNC
8284. Jika menggunakan crystal pena ini dibuat 0

95
RES Digunakan untuk sinyal menghasilkan reset
Digunakan menghasilkan sinyal reset untuk P setelah
RESET
disinkronisasi dahulu dengan RES dan CLK
Sinyal ini berfungsi untuk memberitahukan P bahwa unit I/O dan
READY
memori siap untuk mengirim atau menerima data
AEN1 dan
Sinyal ini digunakan untuk membangkitkan keadaan tunggu ke P
RDY1
AEN2 dan Sama dengan pena AEN1 dan RDY1, sinyal ini digunakan untuk
RDY2 membangkitkan keadaan tunggu ke P
Sinkronisasi untuk memilih tipe masukan yang diberikan pada IC
ASYNC
8284
Untuk membangkitkan sinyal clock pada IC 8284 ini ada 2 cara, cara pertama
yaitu dengan memasang crystal pada masukan X1 dan X2 serta dengan
memberikan logic 0 pada pena F/C. Cara yang kedua adalah dengan memberikan
frekuensi eksternal pada pena EFI dan pena F/C dibuat 1.

5.7 Contoh Aplikasi


Programming:
Membuat suatu program dengan instruksi mesin untuk melakukan kalkulasi:
DX = AX + BX CX, dimana data untuk register AX diambil dari memori
dengan alamat 0007, data untuk register BX adalah 1234H, data untuk register CX
diambil dari top-of-stack hasil kalkulasi terakhir harus ada di register DX.
Program:
MOV AX,[0007]
MOV BX,1234
POP CX
ADD AX,BX
SUB AX,CX
MOV DX,AX

Jika SS=DS=0FF0 dan SP=FFF7, dimana isi memori:


0FF0:0000 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
0FF0:FFF0 00 11 22 33 44 55 66 77 88 99 AA BB CC DD
EE FF

96
maka isi dari register AX, BX, CX, dan DX setelah program selesai dieksekusi
adalah:
AX =1234(H) CX =8877(H)
BX = 1234(H) DX = 1234(H)

5.8 Rangkuman
1. Ada dua mode yang dapat digunakan pada mikroprosesor 8088, yaitu mode
minimum dan mode maksimum.
2. Arsitektur internal P 8088 dibagi menjadi dua bagian, yaitu BIU (Bus
Interface Unit) dan EU (Execution Unit). BIU berfungsi untuk menjalankan
operasi bus seperti menjemput instruksi, membaca data dan menulis ke
memori, menerima input dan mengeluarkan output ke unit periferal. EU
berfungsi untuk menterjemahkan dan menjalankan instruksi.
3. Sinyal status digunakan untuk mendeteksi suatu keadaan atau operasi yang
sedang berlangsung, diantaranya pengambilan instruksi, membaca memori,
menulis memori, dan operasi-operasi yang lain.
4. Mikroprosesor 8088 mempunyai 4 kelompok register internal yaitu register
data (general purpose register), register penunjuk instruksi (intruction pointer
register), register segment (segment register), serta flag register.
5. Tidak seperti 8085, mikroprosesor 8088 tidak mempunyai pembangkit clock
sendiri, ia harus diberi clock dari luar. Miroprosesor 8088 dapat bekerja pada
frekuensi clock 4,77 MHz atau 8 MHz (untuk versi turbo). Mikroprosesor
8088 juga membutuhkan sinyal sinkronisasi reset terhadap clock.

5.9 Pertanyaan
1. Register tracing
Diberikan suatu program:
0F00:0100 MOV BX,0007
0F00:0103 MOV AX,[BX]
0F00:0105 ADD AX,BX
0F00:0107 PUSH AX
0F00:0108 PUSH BX
0F00:0109 JZ 0111
0F00:010B AND AH,BL
0F00:010D JZ 0109

97
0F00:010F MOV [BX],AX
0F00:0111 MOV [BX+1],AX
0F00:0114
dimana isi memori sebelum program dijalankan adalah:
0FF0:0000 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E
0F
0FF0:0010 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
1F
dan isi register sebelum program dijalankan adalah:
AX=0000 BX=0000 CX=0000 DX=0000 SP=0017 BP=0000 SI=0000
DI=0000
DS=0FF0 ES=0FF0 SS=0FF0 CS=0F00 IP=0100 NV UP EI PL NZ NA PO
NC
Tentukan isi dari register AX, BX, IP, SP, dan ZF setiap kali suatu instruksi
selesai dieksekusi.
2. Setelah semua instruksi dijalankan, tentukan isi memori.
3. Berikan contoh instruksi 5 type addressing mode yang ada pada 8088.
4. Jelaskan alasan diperlukannya segmentasi pada uP8088.
5. Jelaskan jenis-jenis bus yang ada beserta fungsinya pada uP8088.

DAFTAR PUSTAKA

98
1] John Uffenbeck, Microcomputer and Microprocessor The 8080, 8085, and Z80
Programming, Interfacing and Troubleshooting, Prentice Hall, 7th Rd, 1985

2] Lucass Null, Midicom Microcomputer Trainer Set, order- No. SO 5159-1A.

3] Rahmad Setiawan, 2006, Mikroprosesor 8088, Graha IlmuYogyakarta.

4] Rahmad Setiawan, 2006, Teknik Interface, Graha Ilmu Yogyakarta.

5] ,8255 INTEL DATASHEET.

6] ., 8085 INTEL DATASHEET.

7] ., 8088 INTEL DATASHEET.

8] , IC 8284 DATASHEET.

9] (http://en.wikipedia.org/wiki/File:Intel_8085_arch.svg)

TAKARIR

1. Mikroprosesor: adalah suatu chip IC (Integrated Circuit) yang di


dalamnya terkandung rangkaian ALU (Arithmetic Logic Unit) rangkaian
CU (Control Unit) dan Register. Mikroprosesor disebut juga dengan CPU
(Central Processing Unit).
2. Mikrokomputer: Mikrokomputer adalah interkoneksi antara
mikroprosesor (CPU) dengan memori utama (main memory) dan antar

99
muka input-output (I/O interface) yang dilakukan dengan menggunakan
sistem interkoneksi bus.
3. Mikrokontroler adalah chip yang didalamnya terkandung sistem
interkoneksi antara Mikroprosesor, RAM, ROM, I/O interface, dan
beberapa peripheral.
4. CPU (Central Processing Unit): Nama lain mikroprosesor yaitu suatu
unit sebagai pusat pengolahan data.
5. Mikroprosesor 8085: Mikroprosesor ini termasuk keluarga mikroprosesor
8 bit data.
6. Aritmatika Logic Unit (ALU): berfungsi untuk mengerjakan perintah
perintah logika dan operasi aritmetika dalam memproses data.
7. Control Unit (CU): berfungsi untuk mengambil dan mendekodekan
instruksi dari memori program dan membangkitkan sinyal kendali yang
diperlukan.
8. Register: berfungsi untuk sebagai tempat penyimpanan sementara data,
alamat, kode instruksi dan bit status berbagai operasi mikroprosesor.
9. Sistem Bus: merupakan jalur penghubung antar alat pada komputer yang
digunakan sebagai media dalam proses melewatkan data pada suatu
proses.
10. Volatile: Berkas data atau program akan hilang jika catudaya/listrik
padam.
11. Non Volatile: Berkas data atau program tidak akan hilang sekalipun listrik
padam.
12. ROM (Read Only Memory): Memori yang hanya dapat dibaca bersifat
non volatile.
13. RAM (Random Access Menory): Meori yang dapat ditulis dan dibaca,
bersifat Volatile
14. PROM (Programmable ROM): Memori yang hanya dapat diisi satu kali
saja
15. EPROM (Erasable PROM): PROM yang dapat dengan bantuan sinar
matahari.
16. EEPROM(Electrically EPROM): memori yang dapat dihapus dengan
perintah sinyal listrik.
17. Byte: Kumpulan dari 8 buah bit.
18. Word: Kumpulan dari 16 buah bit (2 byte).
19. Accumulator: Register 8 bit yang merupakan bagian dari ALU,
digunakan untuk menyimpan data 8 bit dan untuk melakukan operasi
aritmatika dan logis.

100
20. Register Bendera: Register yang berisi status program yang dijalankan.
21. Inisialisasi: Baris program yang mempersiapkan segala register yang akan
digunakan
22. Program: sebagai satu kesatuan dari urutan perintah-perintajh yang
disusun sedemikian rupa untuk mewujudkan fungsinya.
23. Sub rutin: suatu teknik yang membagi sebuah program menjadi bagian-
bagian yang lebih kecil untuk menjalankan fungsinya sendiri-sendiri.
24. PPI 8255: Chip Programmable Peripheral Interface.
25. I/O device: Komponen input output di luar mikroprosesor.
26. ADC (Analog to Digital Converter): membantu mengakses sinyal input
analog.
27. DAC (Digital to Analog Converter): Membantu nikroprosesor
mengontrol suatu peralatan yang bekerja secara analog.
28. Mikroproseor 8088: Mikroprosesor ini termasuk keluarga mikroprosesor
8 bit dan 16 bit yaitu lebar bus data internal 16 bit, sedangkan lebar
memori eksternal hanya 8 bit.

PENJURUS

No Daftar Kata Halaman

1 Mikroprosesor 1, 2,3

2 Mikrokomputer 2

3 Mikrokontroler 3

4 Mikroprosesor 8085 8

5 Central Processing Unit (CPU) 1

6 Aritmatika Logic Unit (ALU) 1, 21, 22

7 Control Unit (CU) 1, 21, 22

8 Register 1, 21

9 Sistem Bus 16

101
10 Volatile 22

11 Non Volatile 22

12 ROM 22

13 RAM 22

14 PROM 23

15 EPROM 23

16 EEPROM 23

17 Byte 29

18 Word 29

19 Accumulator 31

20 Register Bendera 33

21 Inisialisasi 54

22 Program 54

23 Sub rutin 59, 69

24 PPI 8255 75

25 I/O device 75

26 ADC 85

27 DAC 85

28 Mikroprosesor 8088 91

102
103

Anda mungkin juga menyukai