DASAR-DASAR MIKROPROSESOR
Tujuan Khusus
Mahasiswa mampu menjelaskan perkembangan dan teknologi, arsitektur,
fungsi masing-masing blok diagram serta menjelaskan cara kerja mikroprosesor
8085.
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.
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.
7
lebih kecil, kecepatan (clock speed) yang lebih lambat, dan harga yang lebih
murah daripada processor Intel jenis Pentium.
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)
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.
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.
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).
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.
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.
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).
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.
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
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.
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.
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.
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:
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
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
A <-- B
A <---A + C
D <----- A 47
selesai
Gambar 3.1 Flowchart program penjumlahan data 8 bit
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.
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.
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
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
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
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.
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.
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.
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.
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
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.
63
dan kadang-kadang digunakan bersama dengan sebuah kontroler mikro untuk
memperluas kemampuan I/O.
64
D7 D6 D5 D4 D3 D2 D1 D0
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
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)"
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)".
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.
= 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:
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.
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.
= -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 .
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.
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
L1 L2 L3 L4 L1 L2 L3 L4
77
Gambar 4.6 Motor stepper unipolar dengan common yang digabung
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.
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
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.
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
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
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.
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).
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.
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.
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.
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
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.
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.
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
8] , IC 8284 DATASHEET.
9] (http://en.wikipedia.org/wiki/File:Intel_8085_arch.svg)
TAKARIR
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
1 Mikroprosesor 1, 2,3
2 Mikrokomputer 2
3 Mikrokontroler 3
4 Mikroprosesor 8085 8
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
24 PPI 8255 75
25 I/O device 75
26 ADC 85
27 DAC 85
28 Mikroprosesor 8088 91
102
103