Upload
yuyus-takhkik
View
3.165
Download
17
Embed Size (px)
Citation preview
MIKROPROSESOR 8085 SEMESTER 3
BAB 1
PENDAHULUAN
1.1 SEKILAS TENTANG MIKROPROSESOR 8085
Pada dasarnya sistem berbasis mikroprosesor terdiri atas kumpulan lokasi
penyimpanan digital yang sangat tersruktur dan sangat besar disertai sebuah
komponen pengendali pusat. Lokasi penyimpanan digital disebut memori,
sedangkan pusat pengendali adalah mikroprosesor itu sendiri. Pada siklus
pelaksanaan computer, isi beberapa lokasi memori ini dipindahkan atau
dimanipulasi. Untuk sistem yang dipelajari disini, lokasi memorinya berukuran 8
bit.
Setiap memori dikenali melalui sebuah alamat. CPU atau mikroprosesor
yang bertindak sebagai pusat pengendali, juga memiliki lokasi penyimpanan
tersendiri, panjangnya 8-bit. Isi lokasi ini juga dapat dipindahkan atau
dimanipulasi selama siklus mesin. Lokasi penyimpanan di dalam prosesor disebut
register. Register merupakan lokasi penyimpanan data sementara.
Register di dalam mikroprosesor sangat penting dalam operasinya.Karena
register berada dalam mikroprosesor , maka ia dapat dimanipulasi dengan cepat
tanpa memperhatikan chip lainnya. Meskipun detail arsitektur register internal
mikroprosesor berbeda antara yang satu dengan lainnya,tetapi beberapa jenis
register bersifat umum. Misalnya PC (Program Counter) yang berisi alamat
perintah berikutnya yang harus diambil. Ukurannya menentukan banyaknya
memori yang dapat menyimpan perintah atau program. Untuk berbagai
mikraprosesor yang umum, sebagai contoh, 8080, 8085, Z80, 1802, 6502 atau
6800, memiliki PC berukuran 16-bit yang memberikan jumlah lokasi maksimum
sebesar 65.536. Untuk lebih jelas tentang register akan dibahas pada uraian
berikutnya.
Teknik Telekomunikasi Nir Kabel 1
MIKROPROSESOR 8085 SEMESTER 3
Intel 8085 dikembangkan dari mikroprosesor 8080 yang juga dikembangkan
oleh Intel. Banyak kesamaan yang dimiliki oleh prosesor 8 bit dengan prosesor 8
bit lainnya , seperti Zilog Z80. Zilog Z80 dapat dioperasikan dengan baik
menggunakan instruksi yang ada pada 8080. Blok diagram arsitektur dari 8085
diperlihatkan oleh gambar di bawah ini.
Gambar1. Blok Diagram bagian dalam 8085
ALU dalam 8085 menerima masukan dari dua register, yaitu dari
akumulator (Register A) and register sementara (TMP). Akumulator selain
bertindak sebagai sumber untuk ALU juga bertindak sebagai tujuan keluaran dari
berbagai hasil operasi ALU. Register TMP diisi dengan data dari lokasi lainnya
selama operasi berlangsung. Perintah khusus ini menentukan berapa besar byte
sumber data tersebut. Oleh sebab itu pemrogram tidak dapat mengakses secara
Teknik Telekomunikasi Nir Kabel 2
MIKROPROSESOR 8085 SEMESTER 3
langsung register TMP ini, sehingga register ini disebut juga sebagai register tak
tampak.
ALU melaksanakan penjumlahan, pengurangan dan berbagai operasi
logika khusus pada pasangan byte masukan dalam register A dan register TMP.
ALU juga membangkitkan flag bit yang disimpan dalam register bendera.
Perubahan bit bendera lainnya yang dihasilkan oleh ALU adalah bendera
nol (zero), bendera tanda (sign), bendera sisa tambahan (auxiliary carry), dan
bendera paritas (parity). Bendera nol akan di-set jika hasil operasi yang dilakukan
oleh ALU adalah nol. Bendera ini bermanfaat bila kita melakukan pengujian
apakah nilai kedua byte sama. Dengan cara mengurangkan kedua nilai tersebut,
kemudian memeriksa apakah bendera nol di-set. Bendera sisa tambahan akan di
set apabila hasil penjumlahan pada bit 3 memberikan sisa (carry). Bendera ini
akan sangat berguna saat kita melakukan opersai aritmatika biner terkode
decimal (BCD). Bendera paritas akan di-set apabila suatu hasil operasi logika
satu yang jumlahnya genap dan me-reset bendera paritas apabila hasilnya berisi
logika satu yang jumlahnya ganjil.
ALU juga dapat melakukan operasi logika pada kedua byte masukannya.
Operasi logika ini antara lain adalah operasi AND, OR, NOT dan XOR. Register
flag juga dipengaruhi oleh operasi logika ini, dan setiap hasilnya akan disimpan di
akumulator.
Mikroprosesor INTEL 8085 merupakan prosesor 8-bit yang diproduksi oleh
perusahaan INTEL yang berada di California USA. Prosesor 8085 ini merupakan
prosesor sederhana (simple prosesor) yang memiliki kurang dari 80 instruksi.
Intel 8085 berkembang dari mikroprosesor 8080 yang populer. Prosesor 8-
bit ini memiliki banyak kesamaan dengan mikroprosesor 8-bit lainnya, seperti
Zilog Z80. Z80 dapat beroperasi dengan baik menggunakan perintah 8080. Lebih
lanjut lagi, berbagai mikroprosesor lainnya berbagi kesamaan dengan seri 8080
dan 8085. Kesamaan itu tetap ada pada komponen yang lebih maju seperti 80186,
80286, bahkan 80386. Memori secara fungsional berisi 2 jenis informasi :
program dan data.
Teknik Telekomunikasi Nir Kabel 3
MIKROPROSESOR 8085 SEMESTER 3
Program merupakan serangkaian informasi yang telah disandikan dalam
bentuk biner, sehingga bias tinggal dalam memori elektronik.
Program menetapkan urutan langkah yang harus dilakukan oleh computer. Di
bawah pengawasan unit pengendali, masing – masing instruksi berurutan pada
sebuah program diambil dan disimpan dalam sebuah register khusus unit
pengendali, dimana instruksi – instruksi tersebut akan dikode dan dilaksanakan.
Misal, instruksi khas dapat berupa penjumlahan isi dua buah register dan
menyimpan hasilnya pada register ketiga.
Data yang terdapat dalam memori diproses oleh ALU ( Arithmetic and
Logical Unit ), unit aritmatik dan logika. Data bias mempunyai berbagai format.
Biasanya, data berupa angka atau huruf yang dipresentasikan dalam sistem biner.
Istilah memori biasanya menunjukkan berbagai macam jenis memori. Dan dua
jenis yang hamper selalu dipakai : memori utama ( main memory ) dan memori
masal ( mass memory ). Memori utama digunakan untuk menyimpan program
yang sedang dilaksanakan dan data yang diperlukan atau dihasilkan sewaktu
pelaksanaannya.
Memori misal dipakai untuk menyimpan program dan data atau sebagian
daripadanya yang tidak segera dibutuhkan oleh CPU ataupun yang tidak dapat
ditampung oleh memori utama. Mengakses memori masal memperlambat kerja
computer, terutama bila akses sedanmg diperlukan. Idealnya sebuah program
disimpan dalam memori masal secara permanent dan dimuat dalam main memory
untuk pelaksanaan. Peralatan memori masal yang khas → piringan ( disk ), kaset
dan pita magnetic.
Dua tipe logika memori ( berdasarkan kemungkinan akses ) :
- Dihubungi secara acak ( Random Access Memory / RAM ) bisa dibaca atau
ditulis.
- Memori hanya untuk dibaca ( Read Only Memory / ROM ) begitu data telah
dimasukkan.
RAM tidak mudah terhapus ( non volatail ), tidak bias dipakai untuk
menyimpan sementara. Sekali tulis, isinya tetap. Isi RAM mudah terhapus
(volatail) dan akan kehilangan isinya jika catu daya terputus. Akibatnya,
Teknik Telekomunikasi Nir Kabel 4
MIKROPROSESOR 8085 SEMESTER 3
diperlukan penyimpanan permanent pada sistem seperti ROM atau memori masal
magnetis, atau keduanya.
REGISTER PADA MIKROPROSESOR 8085
Pada prosesor INTEL 8085 terdapat 8 register 8-bit yang dapat diakses oleh
pemrogram ,yaitu:
Register A sebagai “Accumulator Register 8 bit”
Register B
Register C
Register D
Register E
Register F sebagai “Flag Register”
Register H
Register L
Perlu diingat, terdapat satu register 8-bit yang diperuntukkan bagi internal
sistem(tidak diakses oleh user), yaitu register 1 (disebut sebagai “Instruction
Register’). Pada saat prosesor mengambil kode instruksi dari unit memori ,
pertama-tama menempatkan kode instruksi tersebut pada register 1 tersebut
sebelum melaksanakan tahap “instruction decoding”.
Dari ke 8 register tersebut, ada 6 register yang dapat membentuk 3 pasangan
register (register pair) yang memiliki kapasitas penyimpanan data 16 bit, ketiga
pasangan register tersebut adalah:
Pasangan register BC
Pasangan register DE
Pasangan register HL yang berfungsi sebagai accumulator 16-bit.
Teknik Telekomunikasi Nir Kabel 5
MIKROPROSESOR 8085 SEMESTER 3
Ketiga pasangan register ini sangat penting untuk menunjuk pada alamat
tempat data dalam unit memori yang akan diakses oleh prosesor (berfungsi
sebagai register pointer).
Pasangan register BC
Pasangan register DE
Pasangan register HL
Selain pasangan register !6-bit diatas, prosesor INTEL 8085 juga memiliki
register 16 bit yang lain, yaitu:
Register Program Counter (Register PC )
Register Stack Pointer (Register SP )
REGISTER FLAG
Register Flag (Register F) merupakan register “status” pada prosesor 8085.
Register ini memiliki 8-bit tetapi INTEL hanya memanfaatkan 5-bit sebagai bit-
bit status prosesor. Posisi dari kelima bit tersebut adalah :
B7 B6 B5 B4 B3 B2 B1 B0
Keterangan :
Bit S (Sign-bit) yang berada pada bit ke-7 merupakan bit tanda, bit S ini akan
berada pada posisi “Set” (S=1) jika hasil operasi aritmatika atau logika yang
prosesnya dilakukan pada ALU menghasilkan nilai negative. Sebaliknya, bit S
akan berada pada posisi “Reset” atau “Clear” (S= 0) jika hasil operasi
Teknik Telekomunikasi Nir Kabel
Reg B Reg C
Reg D Reg E
Reg H Reg L
S Z - Ac - P - Cy
6
MIKROPROSESOR 8085 SEMESTER 3
aritmatika atau logika yang prosesnya dilakukan pada ALU menghasilkan nilai
bukan negatif .
Bit Z (Zero-bit) ini berada pada bit ke-6 pada Flag register, bit ini
memperlihatkan apakah hasil suatu operasi aritmatika ataupun logika yang
tersimpan dalam akumulator nilainya nol. Bit ini akan “Set” (Z=1) jika hasil
operasi aritmatika maupun logika yang dilakukan dalam ALU adalah nol.
Sebaliknya, Bit ini akan “Reset” (Z=0) jika operasi aritmatika atau logika yang
dilakukan pada ALU nilainya tidak nol.
Bit Ac (Auxiliary carry-bit) berada pada bit ke-6, merupakan bit yang
menunjukkan ada atau tidaknya “carry” dari posisi B3 ke posisi B4 pada
operasi penjumlahan yang dilakukan di ALU. Pada prosesor Z-80 “auxiliary
carry Flag” ini disebut sebagai “half carry” (HC). Ac akan set (AC=1) jika
pada suatu proses penjumlahan terdapat carry dari posisi bit B3 ke B4.
Sebaliknya Ac akan reset (Ac=0) jika pada suatu proses penjumlahan tidak
terjadi carry dari posisi bit B3 ke B4. Jadi , bit Ac ini akan sangat penting pada
saat prosesor mengolah data BCD.
Bit P (Parity-bit) berada pada bit ke-2, merupakan bit “flag” yang
menunjukkan ganjil atau genapnya jumlah logik 1 pada hasil operasi logika
atau aritmatika yang dilakukan pada ALU. P akan set (P=1) jika jumlah logik
satu yang terdapat pada hasil operasi adalah genap (contoh : 1001 0011, 0000
0101, 1111 0110, dll). Dan sebaliknya P akan reset (P=0) jika jumlah logik 1
yang terdapat pada hasil operasi adalah ganjil (contoh : 1110 1100, 0010 0000,
1111 0001, dll).
Bit Cy (Carry-bit ) yang berada pada posisi bit 0 merupakan bit flag yang
menunjukkan ada atau tidaknya ”carry” atau “borrow” pada posisi B7 (bit
MSB) dalam suatu operasi aritmatika . Cy berfungsi sebagai bit carry pada
opersi penjumlahan dan sebagai bit borrow pada operasi pengurangan. Cy
akan set (Cy=1) jika pada posisi bit terbesar (MSB) dihasilkan carry atau
borrow. Sebaliknya Cy akan reset (Cy=0) jika pada posisi bit terbesar (MSB)
tidak dihasilkan carry ataupun borrow.
Teknik Telekomunikasi Nir Kabel 7
MIKROPROSESOR 8085 SEMESTER 3
INSTRUCTION SET
Untuk dapat menggunakan suatu mikroprosesor, maka kita harus
mengetahui set instruksi dari mikroprosesor yang bersangkutan. Set instruksi dari
suatu mikroprosesor berisikan daftar seluruh instruksi-instruksi yang dapat
dilakukan oleh mikroprosesor tersebut..
Pada mikroprosesor 8085 terdapat lebih dari 70 instruksi yang terbagi menjadi
beberapa kelompok instruksi, yaitu :
1. kelompok instruksi transfer data
2. kelompok instruksi aritmatika
3. kelompok instruksi logika
4. kelompok instruksi “shift” dan “rotate”
5. kelompok instruksi pencabangan (“branch”)
6. kelompok instruksi input / output dan kontrol
1.3.1 Instruksi Transfer Data
Pada bab ini akan sedikit dibahas mengenai instruksi-instruksi kelompok
transfer data, seperti “MOVE”, “MOVE IMMEDIATE” (MVI), “LOAD”,
“STORE”, dan “EXCHANGE”.
Di antara semua kelompok instruksi pada mikroprosesor 8085, kelompok
instruksi transfer data menunjukkan bagaimana cara memindahkan data 8 bit dari
suatu register ke register lain.
Kelompok instruksi transfer data terdiri dari : MOV, MVI, STA, LDA,
STAX, LDAX, SPHL, XCHG, XTHL, SHLD, dan LXI. Instruksi-instruksi
tersebut tidak mengubah isi register flag.
Fungsi Instruksi MOV dan MVI
Kelompok terbesar dari instruksi transfer data adalah kelompok instruksi
“MOVE”. Kelompok instruksi “MOVE” terdiri dari semua instruksi pemindahan
data 8 bit (1 byte) dari suatu register ke register lain atau dari suatu memori ke
register. Register tujuan selalu dituliskan sebelum tanda koma dan register sumber
dituliskan setelah tanda koma.
Teknik Telekomunikasi Nir Kabel 8
MIKROPROSESOR 8085 SEMESTER 3
Misalnya, instruksi MOV r1, r2 adalah instruksi untuk mentransfer data dari r2
(register sumber) ke r1 (register tujuan). Pengertian kata “mentransfer” di sini
adalah “menggandakan” atau “mengkopi”, karena pada akhir pelaksanaan
instruksi, isi register tujuan jadi sama dengan isi register sumber.
Contoh :
Pada instruksi MOV A, B, jika pada sebelum instruksi tersebut dilakukan isi
register A ad;ah 3C dan isi register B adalah 7F.
Register A B
Data 3C 7F
Flowchart
Program
Alamat
Kode
Operasi Mnemonik
6000 78 MOV A, B
6001 CF RST 1
Maka setelah instruksi MOV A, B dilaksanakan, isi register A = isi register
B = 7F.
Instruksi MOV r, M berfungsi untuk mentransfer data dari lokasi memori
yang alamatnya berada pada pasangan register HL ke suatu register 8 bit. Untuk
memindahkan data dari suatu lokasi memori ke suatu register 8 bit dapat
digunakan instruksi MOV r, M. Alamat memori M ditunjukkan oleh isi pasangan
register HL.
Teknik Telekomunikasi Nir Kabel 9
START
A B
STOP
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Untuk mentransfer data 8 bit dari lokasi memori pada alamat 8000 ke
register B, pertama, isilah register HL dengan 8000 (misalnya dengan instruksi
LXI H, 8000), kemudian susulkan instruksi MOV B, M.
Register HL
Memori 8000
Data 4C
Flowchart
Program
Alamat Kode Operasi Mnemonik
7000 21 00 80 LXI H, 8000
7003 46 MOV B, M
7004 CF RST 1
Setelah instruksi MOV B, M tersebut dilaksanakan, maka isi register B akan
sama dengan isi (data 8 bit) yang berada pada alamat memori 8000 = 4C.
Instruksi MOV M, r merupakan kebalikan dari instruksi MOV r, M.
Instruksi MOV M, r ini akan memindahkan data 8 bit yang berada pada suatu
register ke suatu lokasi memori yang alamatnya ditunjukkan oleh pasangan
register HL.
Teknik Telekomunikasi Nir Kabel 10
START
HL 8000B M
STOP
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Untuk mentransfer data 8 bit dari register D ke lokasi memori dengan
alamat A000, pertama isilah register HL dengan A000 (misalnya dengan instruksi
LXI H, A000), kemudian berikan instruksi MOV M, D.
Register D
Data 7F
Memori A000
Flowchart :
Program :
Alamat Kode Operasi Mnemonik
8000 21 00 A0 LXI H, A000
8003 72 MOV M, D
8004 CF RST 1
Setelah instruksi MOV M, D ini dilaksanakan, maka isi memori alamat
A000 akan sama dengan isi register D = 7F.
Selain instruksi-instruksi “MOVE” seperti tersebut di atas, mikroprosesor
8085 juga mempunyai kelompok instruksi “MOVE IMMEDIATE”, yaitu
instruksi “MVI r, data 8 bit” dan instruksi “MVI M, data 8 bit”.
Contoh :
Instruksi MVI B, 5C akan mengisi register B dengan data 8 bit 5C
(B5C). Instruksi MVI M, 8 bit, digunakan untuk mengisi data 8 bit pada suatu
lokasi memori yang alamatnya ada pada register HL.
Teknik Telekomunikasi Nir Kabel 11
START
LXI H, A000M D
STOP
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Instruksi MVI M, 4F akan mengisi lokasi memori yang alamatnya berada
pada pasangan register HL dengan data 4F (M 4F).
Fungsi Instruksi STA dan LDA
Instruksi “STA alamat” diperguanakan untuk menyimpan data yang
berada pada akumulator (register A) ke dalam unit memori pada lokasi alamat
(4digit heksadesimal dari belakang mnemonik STA).
Contoh :
Instruksi “STA D45F” akan menyimpan isi akumulator ke dalam unit
memori pada alamat D45F. Instruksi “LDA alamat” digunakan untuk
memindahkan data 8 bit dari unit memori lokasi alamat tertentu ke akumulator
(register A).
Teknik Telekomunikasi Nir Kabel 12
START
B 5C
STOP
START
M 4F
STOP
START
[D45F] A
STOP
MIKROPROSESOR 8085 SEMESTER 3
Register A
Data 4C
Memori D45F
Contoh :
Instruksi “LDA D888” akan memindahkan data yang berada pada alamat
D888 ke akumulator (register A).
Fungsi instruksi STAX dan LDAX
Instruksi “STAX rp” digunakan untuk menyimpan isi akumulator ke
lokasi memori yang alamatnya ditunjukkan oleh suatu pasangan register (rp).
Contoh :
Instruksi “STAX B” akan menyimpan isi akumulator ke lokasi memori
yang alamatnya ditunjukkan oleh pasangan register BC.
Teknik Telekomunikasi Nir Kabel
Memori D888
Data 7F
Register A
13
START
A [D888]
STOP
START
[BC] A
STOP
MIKROPROSESOR 8085 SEMESTER 3
Instruksi “LDAX rp” berfungsi mengisi akumulator dengan data 8 bit dari
lokasi memori yang alamatnya ditunjukkan oleh suatu pasangan register.
Contoh :
Instruksi “LDAX D” akan mengisi akumulator dengan data 8 bit dari
lokasi memori yang alamatnya ditunjukkan oleh pasangan register DE.
1.3.2 Instruksi Aritmatika
Instruksi aritmatika contohnya adalah penjumlahan, penguranagan,
penambahan dengan 1 (increment) dan pengurangan dengan 1 (decrement).
Umumnya perintah penjumlahan dan pengurangan melibatkan register A
(akumulator) dan register prosesor lainnya atau lokasi memori. Operasi
penambahan dengan 1 atau pengurangan dengan satu umumnya dapat dilakukan
dalam berbagai register dan lokasi memori melalui penggunaan mode
pengalamatan yang berbeda. Setiap operasi ini dapat dilakukan dalam beberapa
cara yang berbeda, sehingga pemrograman dapat menyesuaiakan perintah yang
digunakan pada aplikasi tertentu.
Mikroprosesor terdiri atas sejumlah bit status yang disebut bendera atau flag.
Bendera di set atau di reset tergantung pada hasil perintah tertentu.Pemrogram
dapat menggunakan bendera untuk membantu pengolahan data.
Teknik Telekomunikasi Nir Kabel 14
START
A [rp]
STOP
START
A [DE]
STOP
MIKROPROSESOR 8085 SEMESTER 3
Pada bagian ini terdapat berbagai intruksi aritmatika diantaranya : ADD, ADI,
ADC, ACI, SUB, SUI, SBB, SBI, INR, DCR, INX, DCX, DAD dan DAA.
Intruksi ADD dan SUB
Intruksi ADD dipergunakan untuk melakukan operasi penjumlahan 8 bit.
Pada operasi tersebut , isi register A (akumulator) akan ditambahkan dengan isi
register 8 bit atau isi lokasi memori yang alamatnya ditunjukan oleh pasangan
register HL.
Contoh : ADD B
Perintah ini menyebabkan isi register B ditambahkan ke isi register A
(akumulator). Hasil penjumlahan akan disimpan dalam register A (akumulator.
Register B tidak berubah sehingga :
A ← A + B
Setelah perintah ADD, bit flag akan berubah sebagai berikut :
S → menyala jika hasilnya negative (MSB dari A = 1)
Z → menyala jika hasilnya nol (A semuanya nol)
AC → menyala jika sisa dihasilkan dari bit 3 (untuk pemakaian BCD)
CY → menyala jika sisa dihasilkan dari bit 7 (sisa keluar MSB)
P → menyala jika hasil merupakan paritas genap
Tabel dibawah menunjukan contoh lain penggunaan intruksi ADD pada register
yang lain :
Mnemonik Symbol operasi
ADD A A ← A + A
ADD B A ← A + B
ADD C A ← A + C
ADD D A ← A + D
ADD E A ← A + E
ADD H A ← A + H
ADD L A ← A + L
ADD M A ← A + M atau A ← A + HL
Teknik Telekomunikasi Nir Kabel 15
MIKROPROSESOR 8085 SEMESTER 3
Intruksi SUB dipergunakan untuk melakukan operasi pengurangan 8
bit.Pada operasi tersebut, isi register A (akumulator) akan dikurangi dengan isi
register 8 bit, atau isi lokasi memori yang alamatnya ditunjukan oleh pasangan
register HL.
Contoh:
SUB C
Intruksi tersebut menyebabkan isi dari register A (akumulator) dikurangi oleh isi
dari register C. Hasil pengurangan akan disimpan di register A (akumulator).
A ← A - C
Contoh-contoh yang lain dapat dilihat pada table berikut :
Mnemonik Symbol operasi
SUB A A ← A – A
SUB B A ← A – B
SUB C A ← A – C
SUB D A ← A – D
SUB E A ← A – E
SUB H A ← A – H
SUB L A ← A – L
SUB M A ← A – M
Intruksi ADI dan SUI
Instruksi ADI dipergunakan untuk menambahkan isi register A (akumulator)
dengan data 8 bit secara langsung (immediate data).
Contoh :
ADI 2Fh
Disini 2Fditambahkan ke isi register A (akumulator). Hasilnya disimpan di
register A (akumulator) dan semua flag dapat berubah.
A ← A + 2Fh
Intruksi SUI dipergunakan dipergunakan untuk mengurangkan isi register A
(akumulator) dengan data 8 bit secara langsung (immediate data).
Contoh :
Teknik Telekomunikasi Nir Kabel 16
MIKROPROSESOR 8085 SEMESTER 3
SUI 5Ch
Disini 5C mengurangi isi register A (akumulator). Hasilnya disimpan di register A
(akumulator) dan semua flag dapat berubah.
A ← A – 5C
Jika hasil penjumlahan atau hasil pengurangan lebih besar dari 7Fh (+12 desimal)
atau lebih kecil dari 80h (-128 desimal), maka carry/borrow bit akan set (Cy = 1)
Intruksi ADC dan SBB
Instruksi ADC dipergunakan untuk menambah isi register dengan data 8 bit
dan mengikutsertakan carry BIT (Cy) dari operasi sebelumnya. Data 8 bit tersebut
dapat diambil dari suatu register atau suatu lokasi memori yang alamatnya
ditunjukan oleh register HL.
Contoh :
ADC M
Isi lokasi memori yang ditunjukan oleh pasangan HL, dijumlahkan ke register A
(akumulator), dan bit sisa ditambahkan k eke LSB hasil jumlahnya. Hasil
penjumlahan disimpan di register A, dan semua bendera dipengaruhi.
A ← A + (HL) +Cy
Contoh penjumlahan bilangan 24 bit (tiga byte). Masing-masing bilangan akan
memerlukan tiga lokasi memori dan total operasi penjumlahan akan memerlukan
tiga penjumlahan 8 bit terpisah, seperti diperlihatkan dalam gambar berikut :
Teknik Telekomunikasi Nir Kabel 17
MIKROPROSESOR 8085 SEMESTER 3
Contoh lain penggunaan instruksi ADC pada berbagai register ditunjukan dalam
table di bawah ini:
Mnemonik Simbol operasi
ADC A A ← A + A +Cy
ADC B A ← A + B +Cy
ADC C A ← A + C +Cy
ADC D A ← A + D +Cy
ADC E A ← A + E +Cy
ADC H A ← A + H +Cy
ADC L A ← A + L +Cy
ADC M A ← A + (HL) +Cy
Instruksi SBB berfungsi untuk mengurangi isi register A dengandata 8 bit
dan mengikutsertakan Borrow bit (Cy) dari operasi sebelumnya. Data 8 bit
tersebut dapat diambil dari suatu register atau suatu lokasi memori yang
alametnya ditunjukan oleh register HL.
Contoh: SBB D
Menyebabkan : A ← A – D – Cy
Contoh lainnya ditunjukan dalam tabel di bawah:
Mnemonik Simbol operasi
SBB A A ← A – A – Cy
SBB B A ← A – B – Cy
SBB C A ← A – C – Cy
SBB D A ← A – D – Cy
SBB E A ← A – E – Cy
SBB H A ← A – H – Cy
SBB L A ← A – L – Cy
SBB M A ← A – (HL) – Cy
Teknik Telekomunikasi Nir Kabel 18
MIKROPROSESOR 8085 SEMESTER 3
Instruksi ACI dan SBI
Instruksi ACI berfungsi untuk menambah isi register A dengan data 8 bit
secara langsung (immediate data) dan mengikutsertakan carry bit (Cy) dari
operasi sebelumnya.
Contoh:
ACI 4Ch
Menyebabkan isi register A (akumulator) akan ditambah 4Ch dan carry.
A ← A + 4Ch + Cy
Instruksi SBI berfungsi untuk mengurangi isi register A dengan data 8 bit
langsung (immediate data) dan mengikutsertakan Borrow bit (Cy) dari operasi
sebelumnya.
Contoh :
SBI 3Dh
Menyebabkan isi register A dikurangi dengan data 3D dan Borrow.
A ← A – 3D - Cy
Instruksi ADD, ADI, ADC, SUB, SBI, SUI dan SBB akan mempengaruhi regidter
flag (S, Z, AC, P, dan Cy).
Instruksi INR dan INX
Perintah penambahan 1 sebenarnya hanya menambahkan isi suatu lokasi
(register atau memori) dengan 1. Untuk 8085 da 2 perintah yaitu INR dan INX.
Semua flag kecuali Cy (sisa) dipengaruhi oleh perintah INR dan tidak ada bendera
yang dipengaruhi oleh perintah INX.
INR dipergunakan untuk menambah (menaikan) dengan 1 isi dari suatu
register 8 bit atau lokasi memori yang alamatnya ditunjukan oleh regidter HL.
Contoh :
INR B
Perintah ini menyebabkan isi register B ditambah dengan satu, atau :
B ← B + 1
Teknik Telekomunikasi Nir Kabel 19
MIKROPROSESOR 8085 SEMESTER 3
Contoh lain diperlihatkan pada tabel di bawah ini :
Mnemonik Simbol operasi
INR A A ← A + 1
INR B B ← B + 1
INR C C ← C + 1
INR D D ← D + 1
INR E E ← E + 1
INR H H ← H + 1
INR L L ← L + 1
INR M (HL) ← (HL) + 1
INX dipergunakan untuk menambah dengan 1 isi suatu pasangan register
(16 bit register).
Contoh :
INX D
Menyebabkan isi pasangan register DE ditambah dengan 1.
DE ← DE + 1
Contoh lain ditunjukan dalam tabel dibawah ini :
Mnemonik Simbol Operasi
INX B BC ← BC + 1
INX D DE ← DE + 1
INX H HL ← HL + 1
INX SP SP ← SP + 1
Instruksi DCR dan DCX
DCR dipergunakan untuk mengurangi dengan 1 isi dari suatu register 8 bit
atau suatu lokasi memori yang alamatnya ditunjukan oleh register HL.
Contoh : DCR C
Menyebabkan isi register C dikurangi dengan 1 atau :
C← C – 1
Teknik Telekomunikasi Nir Kabel 20
MIKROPROSESOR 8085 SEMESTER 3
Contoh lain ditunjukan dalan tabel dibawah ini :
Mnemonik Simbol operasi
DCR A A ← A - 1
DCR B B ← B - 1
DCR C C ← C - 1
DCR D D ← D - 1
DCR E E ← E - 1
DCR H H ← H - 1
DCR L L ← L -1
DCR M (HL) ← (HL) - 1
DCX dipergunakan untuk mengurangi dengan 1 isi suatu pasangan register
(16 bit register).
Contoh :
DCX H
Menyebabkan isi pasangan register HL dikurangi dengan 1, atau :
HL ← HL - 1
Contoh lain dapat dilihat pada tabel di bawah ini :
Mnemonik Simbol Operasi
DCX B BC ← BC - 1
DCX D DE ← DE - 1
DCX H HL ← HL - 1
DCX SP SP ← SP - 1
Instruksi INR dan DCR akan mempengaruhi atau mengubah bit – bit dari register
flag seperti S, Z dan AC tetapi tidak mempengaruhi bit Cy. Instruksi INX dan
DCX tidak mempengaruhi bit – bit dari register flag.
Instruksi DAD
Instruksi DAD dipergunakan untuk menambahkan isi pasangan register HL
dengan isi suatu pasangan register pada operasi penjumlahan16 bit.
Contoh :
Teknik Telekomunikasi Nir Kabel 21
MIKROPROSESOR 8085 SEMESTER 3
DAD D
Menyebabkan isi pasangan register HL ditambahkan dengan pasangan register
DE.
HL ← HL + DE
Contoh lain dapat dilihat pada tabel di bwah :
Mnemonik Simbol Operasi
DAD B HL ← HL + BC
DAD D HL ← HL + DE
DAD H HL ← HL + HL
DAD SP HL ← HL + SP
Instruksi DAD akan mempengaruhi bit Cy dari register flag.
1.3.3 Instruksi Geser
Instruksi-instruksi geser digunakan untuk menggeser isi register A.
Instruksi-instruksi geser hanya mempengaruhi Carry flag (CY). Instruksi-instruksi
geser terbagi menjadi :
1). RAR ( Rotate A Right through carry )
RAR adalah instruksi yang digunakan untuk menggeser isi register A ke
kanan melalui carry flag. LSB dari data yang berada pada register A akan mengisi
carry flag, sedangkan isi carry flag sebelumnya pindah menjadi MSB.
Contoh :
Sebelum instruksi RAR
Isi register A = 10001111(2) = 8F(16)
Carry flag = 0
Setelah instruksi RAR
Teknik Telekomunikasi Nir Kabel 22
MIKROPROSESOR 8085 SEMESTER 3
Isi register A = 01000111(2) = 47(16)
Carry flag = 1
2). RAL ( Rotate A Left through carry )
RAL adalah instruksi yang digunakan untuk menggeser isi register A ke kiri
melalui carry flag. MSB dari data yng berada pada register A akan mengisi carry
flag, sedangkan isi carry flag sebelumnya pindah menjadi LSB.
Contoh :
Sebelum instruksi RAL
Isi register A = 10001111(2) = 8F(16)
Carry flag = 0
Setelah instruksi RAL
Isi register A = 00011110(2) = 1E(16)
Carry flag = 1
3). RRC ( Rotate A Right )
RRC adalah instruksi yang digunakan untuk menggeser isi register A ke
kanan. LSB akan mengisi MSB dan juga akan mengisi carry flag, sedangkan data
sebelumnya yang ada di carry flag akan hilang.
Cy
Teknik Telekomunikasi Nir Kabel 23
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Sebelum instruksi RRC
Isi register A = 10001111(2) = 8F(16)
Carry flag = 0
Setelah instruksi RRC
Isi register A = 11000111(2) = C7(16)
Carry flag = 1
4). RLC ( Rotate A Left )
RLC adalah instruksi yang digunakan untuk menggeser isi register A ke kiri
MSB akan mengisi LSB dan juga akan mengisi carry flag, sedangkan data
sebelumnya yang ada di carry flag akan hilang.
Cy
Contoh :
Sebelum instruksi RLC
Isi register A = 10001111(2) = 8F(16)
Carry flag = 0
Setelah instruksi RLC
Isi register A = 00011111(2) = 1F(16)
Carry flag = 1
Teknik Telekomunikasi Nir Kabel 24
MIKROPROSESOR 8085 SEMESTER 3
1.3.4 Instruksi Logika
1). Instruksi Logika AND
Instruksi logika and terbagi menjadi 3 :
1. ANA M ( And Memory with A )
ANA M adalah instruksi yang digunakan untuk melakukan operasi logika
and antara isi register A dengan memori. Kemudian hasil operasi disimpan secara
otomatis di register A.
Contoh :
Sebelum instruksi ANA M
Isi register A = 10101110(2) = AE(16)
Isi memori alamat 7000 = 01101100(2) = 6C(16)
Setelah instruksi ANA M
Isi register A = 00101100(2) = 2C(16)
2. ANA R ( And Register with A )
ANA R adalah instruksi yang digunakan untuk melakukan operasi logika
and antara isi register A dengan isi suatu register lain. Kemudian hasil operasi
disimpan secara otomatis di register A.
Contoh :
Sebelum instruksi ANA R
Isi register A = 01011000(2) = 58(16)
Isi register B = 10010011(2) = 93(16)
Setelah instruksi ANA R
Isi register A = 00010000(2) = 10(16)
3. ANI ( And Immediate with A )
ANI adalah instruksi yang digunakan untuk melakukan operasi logika and
antara isi register A dengan konstanta. Kemudian hasil operasi disimpan secara
otomatis di register A.
Teknik Telekomunikasi Nir Kabel 25
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Sebelum instruksi ANI
Isi register A = 01110010(2) = 72(16)
Konstanta = 10011001(2) = 99(16)
Setelah instruksi ANI
Isi register A = 00010000(2) = 10(16)
Instruksi logika AND mempengaruhi isi register flag, yaitu Zero flag (Z),
Sign flag (S), Parity flag (P), Carry flag selalu dalam kondisi reset (CY = 0) dan
Auxiliary Carry selalu dalam kondisi set (AC = 1).
2). Instruksi Logika OR
Instruksi logika or terbagi menjadi 3 :
1. ORA M ( Or Memory with A )
ORA M adalah instruksi yang digunakan untuk melakukan operasi logika or
antara isi register A dengan memori. Kemudian hasil operasi disimpan secara
otomatis di register A.
Contoh :
Sebelum instruksi ORA M
Isi register A = 10101110(2) = AE(16)
Isi memori alamat 8000 = 01101100(2) = 6C(16)
Setelah instruksi ORA M
Isi register A = 11101110(2) = EE(16)
2. ORA R ( Or Register with A )
ORA R adalah instruksi yang digunakan untuk melakukan operasi logika or
antara isi register A dengan isi suatu register lain. Kemudian hasil operasi
disimpan secara otomatis di register A.
Contoh :
Teknik Telekomunikasi Nir Kabel 26
MIKROPROSESOR 8085 SEMESTER 3
Sebelum instruksi ORA R
Isi register A = 01011000(2) = 58(16)
Isi register D = 10010011(2) = 93(16)
Setelah instruksi ORA R
Isi register A = 11011011(2) = DB(16)
3. ORI ( Or Immediate with A )
ORI adalah instruksi yang digunakan untuk melakukan operasi logika or
antara isi register A dengan konstanta. Kemudian hasil operasi disimpan secara
otomatis di register A.
Contoh :
Sebelum instruksi ORI
Isi register A = 01110010(2) = 72(16)
Konstanta = 10011001(2) = 99(16)
Setelah instruksi ORI
Isi register A = 11111011(2) = FB(16)
Instruksi logika OR mempengaruhi isi register flag, yaitu Zero flag (Z), Sign
flag (S), Parity flag (P), Carry flag selalu dalam kondisi reset (CY = 0) dan
Auxiliary Carry selalu dalam kondisi reset (AC = 0).
3). Instruksi Logika Exclusive OR
Instruksi logika exclusive or terbagi menjadi 3 :
1. XRA M ( Exclusive Or Memory with A )
XRA M adalah instruksi yang digunakan untuk melakukan operasi logika
exclusive or antara isi register A dengan memori. Kemudian hasil operasi
disimpan secara otomatis di register A.
Teknik Telekomunikasi Nir Kabel 27
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Sebelum instruksi XRA M
Isi register A = 10101110(2) = AE(16)
Isi memori alamat 9000 = 01101100(2) = 6C(16)
Setelah instruksi XRA M
Isi register A = 11000010(2) = C2(16)
2. XRA R ( Exclusive Or Register with A )
XRA R adalah instruksi yang digunakan untuk melakukan operasi logika
exclusive or antara isi register A dengan isi suatu register lain. Kemudian hasil
operasi disimpan secara otomatis di register A.
Contoh :
Sebelum instruksi XRA R
Isi register A = 01011000(2) = 58(16)
Isi register C = 10010011(2) = 93(16)
Setelah instruksi XRA R
Isi register A = 11001011(2) = CB(16)
3. XRI ( Exclusive Or Immediate with A )
XRI adalah instruksi yang digunakan untuk melakukan operasi logika
exclusive or antara isi register A dengan konstanta. Kemudian hasil operasi
disimpan secara otomatis di register A.
Contoh :
Sebelum instruksi XRI
Isi register A = 01110010(2) = 72(16)
Konstanta = 10011001(2) = 99(16)
Setelah instruksi XRI
Isi register A = 11101011(2) = EB(16)
Teknik Telekomunikasi Nir Kabel 28
MIKROPROSESOR 8085 SEMESTER 3
Instruksi logika Exclusive Or mempengaruhi isi register flag, yaitu Zero flag
(Z), Sign flag (S), Parity flag (P), Carry flag selalu dalam kondisi reset (CY = 0)
dan Auxiliary Carry selalu dalam kondisi reset (AC = 0).
1.3.5 Instruksi Percabangan
Pada mikroprosesor 8085 terdapat instruksi pencabangan, yang digunakan
apabila kita ingin melakukan perintah yang sama berulang kali. Proses tersebut
dinamakan proses ‘loop’, caranya adalah dengan menguji salah satu bit yang
terdapat pada register flag. Apabila ingin menguji atau memeriksa salah satu bit
pada register flag, maka sebelumnya terlebih dahulu harus diberikan instruksi
yang akan mempengaruhi isi dari register flag.
Instruksi pencabangan dibagi menjadi dua, yaitu :
Pencabangan bersyarat (conditional) → Perintah : JC, JNC, JZ, JNZ, JP,
JM, JPE, JPO.
Pencabangan tidak bersyarat → Perintah : JMP (jump) dan CALL.
1). JC (Jump if Carry Set)
Perintah ini digunakan apabila kita ingin menguji carry bit. Jika carry bit
berlogika “1”, maka program akan melompat ke alamat yang ditulis pada perintah
“JC addr”.
2). JNC (Jump if Carry Not Set)
Perintah ini digunakan apabila kita ingin menguji carry bit. Jika carry bit
berlogika “0”, maka program akan melompat ke alamat yang ditulis pada perintah
“JNC addr”.
3). JM (Jump if Minus)
Perintah ini digunakan apabila kita ingin menguji sign bit. Program akan
melompat pada alamat tertentu apabila sign bit berlogika “1”. Contohnya : JM
8005h (apabila sign bit berlogika “1” maka program akan melompat ke alamat
Teknik Telekomunikasi Nir Kabel 29
MIKROPROSESOR 8085 SEMESTER 3
8005h, sedangkan apabila sign bit berlogika “0” maka program akan berlanjut ke
alamat di bawah perintah JM.
4). JP (Jump if plus)
Perintah ini digunakan apabila kita ingin menguji sign bit. Jika sign bit
berlogika “0’, maka program akan melompat ke alamat yang ditulis setelah
perintah JP.
5). JZ (Jump if Zero)
Perintah ini digunakan apabila kita ingin menguji zero bit. Jika zero bit
berlogika “1” maka program akan melompat ke alamat yang ditulis setelah
perintah JZ.
6). JNZ (Jump if not zero)
Perintah ini digunakan apabila kita ingin menguji zero bit. Jika zero bit
berlogika “0’ maka program akan melompat ke alamat yang ditulis setelah
perintah JNZ.
7). JPE (Jump if Even Parity)
Perintah ini digunakan apabila kita ingin menguji parity bit. Jika parity bit
berlogika “1”, artinya jumlah logika satu dari suatu data hasil operasi yang
mempengaruhi register flag berjumlah genap, maka program akan melompat ke
alamat yang ditulis setelah perintah JPE.
8). JPO (Jump if Parity Odd)
Perintah ini digunakan apabila kita ingin menguji parity bit. Jika parity bit
berlogika “0”, artinya jumlah logika satu dari suatu data hasil operasi yang
mempengaruhi register flag berjumlah ganjil, maka program akan melompat ke
alamat yang ditulis setelah perintah JPO.
Teknik Telekomunikasi Nir Kabel 30
MIKROPROSESOR 8085 SEMESTER 3
9). JMP (Jump)
Perintah ini digunakan apabila kita ingin melompat ke alamat tertentu, akan
tetapi tanpa melibatkan proses pengujian terhadap bit-bit yang terdapat pada
register flag. Oleh karena itu, perintah jump dimasukkan ke dalam perintah
pencabangan tak bersyarat.
10). CALL
Perintah ini digunakan apabila kita ingin menggunakan suatu subrutin.
Contohnya CALL 8000h, apabila perintah ini dilakukan maka program akan
melompat ke suatu subrutin yang alamatnya 8000h, dan setelah subrutin selesai
digunakan maka program akan kembali ke alamat di bawah alamat yang berisi
CALL 8000h. Apabila perintah CALL 8000h ditulis pada alamat 9000h maka
setelah subrutin digunakan, program akan kembali ke alamat 9001h.
PROGRAM UTAMA
SUBRUTIN
Teknik Telekomunikasi Nir Kabel 31
LXI H,B204..
CALL 9000MOV A,B
LXI B,B204..
MOV B,CRET
MIKROPROSESOR 8085 SEMESTER 3
Contoh Program :
1) Buat diagram alir dan program untuk mencari bilangan ganjil terkecil yang
ada pada blok memori alamat B204h s/d B23Ch. Simpan hasil pencarian pada
register B. Tempatkan program mulai alamat 8000h.
Flowchart Program
Alamat Op-code Label Mnemonik
8000 21 04 B2 LXI H,B204
8003 06 FF MVI B,FF
8005 7E L1 MOV A,M
8006 4F MOV C,A
8007 E6 01 ANI 01
8009 CA 12 80 JZ L2
800C 79 MOV A,C
800D B8 CMP B
899E D2 12 80 JNC L2
8011 47 MOV B,A
8012 2C L2 INR L
8013 7D MOV A,L
8014 FE 3D CPI 3D
8016 CA 05 80 JZ L1
8017 CF RST 01
Teknik Telekomunikasi Nir Kabel 32
START
HL← B204 B ← FF
A ←M C ← A A ←A Λ 01
Z=1
A ← C A ÷ B
Cy=0
B ← A
L ← L + 1 A ← L A ÷ 3D
STOP
Z=1
MIKROPROSESOR 8085 SEMESTER 3
2) Buat bagan alir dan program untuk mendeteksi kesalahan pariti dari data
input yang disimpan pada blok memori I. Asumsikan data tersebut sebagai
data hasil pengiriman dari pihak lain dan telah dilengkapi dengan bit parity
untuk sistem pariti genap.Simpan hasilnya pada blok memori II dengan
mengisi data 00h untuk data yang benar dan mengisi data FFh untuk data
yang salah. Alamat blok memori I =A000h s/d A00Fh, dan alamat blok
memori II = B000h s/d B00Fh, serta alamat program mulai dari alamat
8000h.
Flowchart Program
Teknik Telekomunikasi Nir Kabel
Alamat Op-code Label Mnemonik
8000 21 0F A0 LXI H,A00F
8003 7E L1 MOV A,M
8004 C6 00 ADI 00
8006 3E 00 MVI A,00
8008 EA 0D 80 JPE L2
800B 3E FF MVI A,FF
800D 26 B0 L2 MVI H,B0
800F 77 MOV M,A
8010 26 A0 MVI H,A0
8012 2D DCR L
8013 F2 03 80 JP L1
8016 CF RST 1
33
START
HL← A00F
A ←M A ← A + 00 A ←00
S=0
A← FF
H ← B0 M ← A
H ← A0 L ← L - 1
STOP
P=1
MIKROPROSESOR 8085 SEMESTER 3
1.3.5 Instruksi IN dan OUT
Instruksi IN dan OUT berfungsi untuk mengatur lalu lintas dengan peralatan
I/O. Dalam instruksi OUT, sumber selalu accumulator. Dalam instruksi IN, tujuan
adalah accumulator. Di belakang kode operasi IN dan OUT kita hanya perlu
mencantumkan nomor pintu (gate number) saja, yaitu alamatnya peralatan I/O
(kemana data harus dibawa atau dari mana data harus diambil).
Di dalam mikroprosesor 8085, alamat I/O port adalah 51H dan 50H. Untuk
alamat saklar 8 bit adalah 51H (alamat port dihubungkan ke saklar). Sedangkan
alamat LED 8 bit adalah 50H (alamat port 50 dihubungkan dengan LED).
Contoh :
1. Buatlah diagram alir dan program untuk mengaktifkan 8 bit LED secara
bergantian mulai dari posisi MSB sampai ke LSB dengan selang waktu 1
detik.
~ Flowchart
Teknik Telekomunikasi Nir Kabel 34
MIKROPROSESOR 8085 SEMESTER 3
~ Program
Alamat Op-Code Label Mnemonik
8000 3E 80 MVI A,80
8002 D3 50 L1 OUT 50
8004 11 E8 03 LXI D,03E8
8007 CD FA 0F CALL FFA
800A 0F RRC
800B D2 02 80 JNC L1
800E 3E 00 MVI A,00
8010 D3 50 OUT 50
8012 CF RST 1
1.4 Sistem Bilangan
Teknik Telekomunikasi Nir Kabel 35
MIKROPROSESOR 8085 SEMESTER 3
Dalam mempelajari sistem bilangan dalam digital, kita tidak mengenal
adanya bilangan negatif. Oleh karena itu, kita harus merubah bilangan negatif ke
sebuah sistem bilangan. Sistem bilangan ini menggunakan sign bit yang
berfungsi menunjukkan bilangan itu positif atau negatif. Jika positif sign bit
berlogik 1.
Sistem-sistem bilangan itu adalah
1. SBN
2. Komplemen 1
3. Komplemen 2
4. Komplemen 9
5. Komplemen 10
6. Komplemen 15
7. Komplemen 16
1). SBN
SBN termasuk bilangan biner murni. Bedanya dengan komplemen 1 dan
komplemen 2 adalah pemberian bit tambahan pada MSB yang disebut sign bit
pada SBN.. Fungsinya adalah membedakan bilangan itu positif atau negatif. Jika
suatu biner bernilai negatif, maka sign bit bernilai logik 1.
2). Komplemen 1
K’1 dan K’2 merupakan bilangan biner murni yang hanya terdiri dari 2
kondisi 0 (mati) dan 1 (hidup). Jika suatu bilangan biner bernilai negati, maka
nilai-nilai logik pada bilangan tersebut menjadi bernilai logik kebalikannya. Logik
0 menjadi 1 dan logik 1 menjadi 0.
Contoh :
Biner = - 01001011
SBN = 1 01001011
K’1 = 1 10110100
3). Komplemen 2
K’2 hampir mirip seperti K’1, hanya saja ditambahkan 1 pada LSB-nya.
Persamaan K’2 :
K’2 = K’1 + 1.
K’1 = K’2 - 1
Teknik Telekomunikasi Nir Kabel 36
MIKROPROSESOR 8085 SEMESTER 3
Contoh :
Biner = - 001010111
SBN = 1 001010111
K’1 = 1 110101001
4). Komplemen 9
K’9 dan K’10 merupakan bilangan basis 10 atau yang kita kenal sebagai
bilangan desimal. Jika sign bit suatu bilangan desimal 1 (bernilai negatif), maka
nilai K’9-nya adalah hasil pengurangan dengan angka 9 pada setiap bit (angka)
bilangan desimal itu.
Persamaan K’9 :
Desimal Murni Komplemen 9
0 9
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0
Contoh :
Desimal murni = 842952
K’9 = 157047
5). Komplemen 10
Cara mencari nilai K’10 hampir sama seperti mencari K’9. K’10 didapatkan
dari hasil penjumlahan K’9 dengan 1 pada LSB-nya.
Persamaan K’10 :
K’10 = K’9 + 1
K’9 = K’10 - 1
Contoh :
Teknik Telekomunikasi Nir Kabel 37
MIKROPROSESOR 8085 SEMESTER 3
Desimal murni = 78529
K’9 = 21470
K’10 = 21471
6). Komplemen 15
K’15 dan K’16 merupakan bilangan yang berbasis 16. Komplemen dari
suatu bilangan heksadesimal adalah pasangan dari bilangan heksa yang jika
dijumlahkan bernilai f (15 desimal).
Persamaan K’9 :
Heksadesimal K’9 Heksadesimal K’9
0 F 8 7
1 E 9 6
2 D A 5
3 C B 4
4 B C 3
5 A D 2
6 9 E 1
7 8 F 0
Contoh :
Heksadesimal = A742B
K’9 = 58BD4
7). Komplemen 16
K’9 dapat dicari dengan menambah 1 pada LSB bilangan tersebut.
Persamaan K’16
K’16= K’15 + 1
K’15 = K’16 – 1
Contoh :
Heksadesimal = 2B930
K’15 = D46CF
Teknik Telekomunikasi Nir Kabel 38
MIKROPROSESOR 8085 SEMESTER 3
BAB 2
PROGRAM DAN APLIKASI
MIKROPROSESOR
2.1 OPERASI ARITMATIKA
2.1.1 Penjumlahan
Contoh pemrogramannya :
1. Buatlah program Penjumlahan 2 bilangan BCD 2 Decade (00-99)
Bilangan 1 ada di Reg B.
Teknik Telekomunikasi Nir Kabel 39
MIKROPROSESOR 8085 SEMESTER 3
Bilangan 2 ada di Reg C
Simpan hasil penjumlahan pada reg HL?
Jawab:
Cat : Karena pada mikroprosesor melakukan operasi baik penjumlahan
maupun pengurangan dalam system komplemen dua. Sehingga
Teknik Telekomunikasi Nir Kabel
OP - CODE MNEMONIC SIMBOL OPERASI
2600 MVI H,00 H 00
68 MOV L,B L B
7D MOV A,L A L
81 ADD C A A + C
27 DAA A BCD
6F MOV L,A L A
7C MOV A,H A H
CE00 ACI 00 A A + 00 + Cy
27 DAA A BCD
67 MOV H,A H A
CF RST 1 STOP
40
START
H 00L B
A LA A + CA BCDL AA HA A + 00 + CyA BCDH A
STOP
MIKROPROSESOR 8085 SEMESTER 3
mikroprosesor 8085 menyediakan instruksi DAA yang memberikan
factor koreksi pada saat kita bekerja dengan menggunakan data
decimal (BCD), sedangkan pada heksadesimal tidak perlu
menggunakan factor koreksi.
2. Sama dengan soal no 1 tapi penjumlahannya bilangan Hexadecimal (00-FF).
Jawab :
Sama hanya tinggal buang faktor koreksi bilangan BCD (DAA).
5. Buatlah diagram alir dan program untuk menambahkan 2 data 16 bit yang
berada pada register BC dan DE. Simpan hasil penjumlahan pada reg HL.
Teknik Telekomunikasi Nir Kabel
OP - CODE MNEMONIC SIMBOL OPERASI
2600 MVI H,00 H 00
68 MOV L,B L B
7D MOV A,L A L
81 ADD C A A + C
6F MOV L,A L A
7C MOV A,H A H
CE00 ACI 00 A A + 00 + Cy
67 MOV H,A H A
CF RST 1 STOP
41
START
H 00L B
A LA A + CL AA HA A + 00 + CyH A
STOP
MIKROPROSESOR 8085 SEMESTER 3
2.1.2 Pengurangan
1). Buatlah diagram alir dan program untuk mengurangkan data yang ada pada
reg B dan reg C (BCD dan heksadesimal) simpan hasilnya pada reg D.
Heksadesimal BCD
Cat : Karena dalam INTEL 8085 tidak ada program pengurangan secara
langsung, maka datnya harus diubah. Pada BCD, nilainya dijadikan
Teknik Telekomunikasi Nir Kabel 42
MNEMONICSMOV A,CADD EDAAMOV L,AMOV A,BADC DDAAMOV H,ARST 1
MIKROPROSESOR 8085 SEMESTER 3
dalam K’9, kemudian baru dikurangkan dengan Reg yang diinginkan
setelah itu jadikan K’10 dengan cara menambahkan dengan 01.dan
tifak lupa menggunakan factor koreksi. Sedangkan pada data
heksadesimal nilainya dijadikan dalam K’15.
2). Buatlah diagram alir dan program untuk mendapatkan perhitungan
berdasarkan persamaan aritmatika sbb :
Diagram alir
Teknik Telekomunikasi Nir Kabel 43
A = B + C – D – E + H
MNEMONICSMVI A, 99SUB DADI 01DAAADD BDAAMOV L, AMVI A, 99SUB EADI 01DAAADD CDAAADD HDAAADD LDAARST 1
MIKROPROSESOR 8085 SEMESTER 3
2.1.3 Perkalian
1). Buatlah diagram alir dan program untuk perkalian 2 data BCD 2 digit yang
ada pada reg B dan reg C. Hasil kali disimpan pada reg HL dengan metoda
penjumlahan berulang.
Teknik Telekomunikasi Nir Kabel 44
LABEL MNEMONICSLXI HL, 0000MOV A, BCPI 00JZ L2MOV A, CCPI 00JZ L2MOV D, C
L1 MOV A, LADD BDAAMOV L, AMOV A, HADC 00DAAMOV H, AMVI A, 99ADD DDAAMOV D, AJNZ L1
L2 RST 1
MIKROPROSESOR 8085 SEMESTER 3
Metoda pergeseran dan penjumlahan
Contoh :
2). Buatlah flowchart dan program untuk mengalikan data berikut :
Data 1
Register B
Data 2
Register C
Hasil kali
Register HL
01 D4 00D4
34 56 1178
FF 10 0FF0
C3 00 0000
FF FF FE01
Flowchart:
Teknik Telekomunikasi Nir Kabel 45
MIKROPROSESOR 8085 SEMESTER 3
LXI SP,FFFF
LXI H,0
PUSH B
MVI D,0
MOV E,B
MVI B,08
LUP1 : MOV A,C
RRC
MOV C,A
JNC LUP2
DAD D
LUP2 : XCHG
DAD H
XCHG
DCR B
JNZ LUP1
POP B
RST 1
Pada metoda ini Register C digeser ke kanan, diperiksa per bit mulai bit
yang paling kanan sampai bit yang paling kiri.
Perkalian dengan Metode Pergeseran dan Penjumlahan
Contoh : 14 * 4 = 56 (10)
1110
0100 x
0000
0000
Teknik Telekomunikasi Nir Kabel 46
MIKROPROSESOR 8085 SEMESTER 3
1110
0000 +
0111000 = 56 (10)
Metode Penjumlahan
14 * 10 = 140 (10)
reg B 1110
reg C 1010 x
0000
1110
0000
1110 +
10001100 = 140 (10)
Pada metode pergeseran, register pengali yang menjadi acuan. Ada 2
kondisi yang harus dilakukan, yaitu : jika bit 0, geser register B ke kiri sebanyak
satu posisi, jika bit 1, register B tambahkan ke register A yang digunakan sebagai
penyimpan hasil operasi.
Contoh : reg B = 1110
reg C = 1010
reg B1 = 11100
reg B2 = 111000
reg B3 = 1110000
reg A = 0000 11100 +
11100
1110000 +
10001100
Penjelasan penyelesaian :
Nilai LSB yang pertama adalah yang paling kanan bernilai bit 0, maka
geser register B ke kiri sebanyak satu posisi, sehingga didapatkan :
Register B1 = 11100
Nilai LSB yang berikutnya bernilai bit 1, maka tambahkan register B ke register A
yang digunakan untuk menyimpan hasil operasi, maka didapatkan :
Teknik Telekomunikasi Nir Kabel 47
MIKROPROSESOR 8085 SEMESTER 3
Register B2 = 11100 Catatan : Isi register A awalnya adalah 0
Nilai bit selanjutnya adalah bit 0, maka isi register B harus di geser ke kiri satu
kali :
Register B3 = 111000
Nilai bit yang terakhir adalah bit 1, geser register B kemudian tambahkan isi
register B yang telah digeser tadi dengan nilai yang telah ada pada register A tadi
sebagai hasil operasi terdahulu, maka didapatkan :
Register B4 = 1110000
Maka didapatkan hasil dari seluruh operasi = 10001100 = 140 (10)
Contoh soal perkalian biner :
Buat diagram alir dan program untuk mengalikan 2 data biner 4 bit yang
berada pada register B dan register C. Simpanlah hasil kali pada register A. (range
data pada register B dan register C = 00H s/d 0FH)
Flowchart :
Teknik Telekomunikasi Nir Kabel
Alamat Op Code Mnemonik
A000 XX XX MVI A, 00
A002 XX XX MVI D, 04
A004 XX XX MOV A, C
A006 XX RRC
A007 XX XX MOV C, A
A009
XX
XXXX JNC A011
A00C XX XX MOV A, E
A00E XX ADD B
A00F XX XX MOV E, A
A011 XX XX MOV A, B
A013 XX ADD A
A014 XX XX MOV B, A
A016 XX DCR D
A017
XX
XXXX JNZ A004
A01A XX XX MOV A, E
A01C CF RST 1
48
START
A 00D 04
A CRRC
C A
A EA A + B
E A
A BA A + A
B A
D D - 1
Z = 0
A E
STOP
Cy = 0
MIKROPROSESOR 8085 SEMESTER 3
Penjelasan :
Pada soal diminta program dan “flowchart” untuk mengalikan 2 data biner
4 bit yang berada pada register B dan register C. Hasilnya akan disimpan pada
register A, oleh karena itu isi register A harus dikosongkan terlebih dahulu dengan
instruksi A 00 (MVI A, 00).
Kita membutuhkan satu register tambahan misalkan register D untuk
menampung data biner 4 bit dengan menambahkan instruksi D 04 (MVI D,
04).
Ambil satu data yang berada pada register C yang merupakan faktor
pengalinya, sebagaimana pada teori terdahulu bahwqa faktor pengali digeser ke
kanan untuk mengetahui LSB tersebut memiliki bit 0 atau bit 1. Simpan pada
akumulator dengan instruksi A C (MOV A, C).
Kemudian geser data pada akumulator tersebut untuk mengetahui LSB-nya
bit 0 atau bit 1, dengan memeriksa “carry”-nya, dimana data tersebut digeser ke
Teknik Telekomunikasi Nir Kabel 49
MIKROPROSESOR 8085 SEMESTER 3
kanan satu posisi melalui instruksi RRC.
Simpan hasil pergeseran tersebut pada register akumulator kembali dengan
instruksi C A (MOV C, A).
Periksa isi “carry” tersebut, apabila isi “carry” tersebut memiliki bit 1 berarti
operasi dilanjutkan ke instruksi yang ada di bawahnya., dan apabila “carry” = 0,
maka instruksi yang akan dilakukan adalah jump ke alamat A011.
Sebagaimana operasi sebelumnya apabila “carry” = 1 maka operasi
dilanjutkan ke instruksi yang ada di bawahnya, yaitu A E (MOV A, E). Di sini
kita membutuhkan register E untuk menyimpan data sementara.
Tanbahkan data yang ada pada register A dengan data pada register B
dengan instruksi A A + B (ADD B), sebagaimana teori terdahulu bahwa kalau
“carry” = 1, register B tambahkan pada akumulator. Kemudian pindahkan ke
register E kembali E A (MOV E, A)
Pindahkan data pada register B ke akumulator A B (MOV A, B),
kemudian tambahkan kembali dengan isi pada akumulator A A + A (ADD A),
kemudian pindahkan kembali ke register B, B A (MOV B, A).
Turunkan isi register D, karena sudah dipakai sebanyak satu kali D D – 1
(DCR D).
Periksa “zero flag” yang menandakan operasi telah selesai, jika bit “zero
flag” = 0 maka pindahkan isi register E ke akumulator sebagai hasil
pengoperasian sesuai dengan soal yang diminta, jika “zero flag” = 1, “jump” ke
alamat A004 untuk mengulang operasi sampai didapatkan hasil yang benar.
2.1.4 Pembagian
Ada 2 metoda dalam pembagian biner , yaitu :
1. Metoda Pengurangan Berulang
2. Metoda Pergeseran dan Pengulangan
1. Buatlah diagram alir dan program untuk membagi bilangan biner 8
bit yang ada pada register B dengan bilangan biner 8 bit lain yang
ada di registerC.Simpan hasil bagi pada register H dan sisa bagi
pada register L.
Teknik Telekomunikasi Nir Kabel 50
MIKROPROSESOR 8085 SEMESTER 3
Metoda Pengurangan Berulang
Buatlah Flowchat dan Program untuk pembagian biner miurni bit berikut :
Yang dibagi
Register B
Pembagi
Register C
Sisa bagi
Register H
Hasil bagi
Register L
0E D4 05 07
A7 04 03 29
DF 12 07 0C
FlowChart
Teknik Telekomunikasi Nir Kabel
LABEL MNEMONICSMVI H, 00MOV L, BMOV A, CCPI 00JZ L2
L1 MOV A,LCMP CJC L2MOV A, LSUB CMOV L, AINR HJNC L1
L2 RST 1
51
MIKROPROSESOR 8085 SEMESTER 3
Program
MVI L,00
MOV H,B
LUP1 : MOV A,H
CNP C
JC STP
SUB C
MOV H,A
INR L
JMP LUP1
STP : RST 1
Metoda pergeseran dan pengurangan
Contoh : Buatlah Flowchart dan program untuk pembagian berikut :
Teknik Telekomunikasi Nir Kabel
Yang dibagi
Register B
Pembagi
Rgister C
Sisa bagi
Register B
Hasil bagi
Register L
55 55 00 01
A7 04 03 29
0E D4 05 07
52
MIKROPROSESOR 8085 SEMESTER 3
LXI SP,FFFF
MVI H,0
MOV L,B
PUSH B
MVI B,08
LUP : DAD H
MOV A,H
CMP C
JC LUP2
INR L
SUB C
MOV B,A
LUP : DCR B
JNZ LUP1
POP B
RST 1
Teknik Telekomunikasi Nir Kabel 53
Contoh Program
Pengurangan BCD
Buatlah bagan alir dan program untuk pengurangan berikut :
4782 harus diubah ke dalam bentuk komplemen 10 ﴾K’10﴿ yaitu dengan
mengurangkan 9999 dengan 4782 kemudian ditambah 1.
Jadi komplemen dari 4782 adalah 5218. Kemudian untuk mencari hasil
pengurangan yaitu menjumlahkan 8523 dengan 5218.
MVI A,99
SUI 82
MOV L,A
MVI A,99
SUI 47
MOV H,A
MVI A,01
ADD L
DAA
MOV L,A
MVI A,00
ADC H
DAA
MOV H,A
MOV A,L
ADI 23
DAA
MOV L,A
MOV A,H
ACI 83
DAA
MOV H,A
RST 01
2.2 UNIT MEMORI
Fungsi Program Counter
Register Program Counter (Reg PC) merupakan register 16-bit yang
berfungsi untuk menunjukkan alamat tempat tersimpannya kode operasi yang
akan dieksekusi oleh prosesor. Jadi PC selalui berisikan tempat tersimpannya
kode instruksi berikutnya yang akan dilakukan oleh prosesor. Saat prosesor
sedang melaksanakan instruksi yang pertama, maka pada saat itu PC telah berisi
alamat tempat tersimpannya kode instruksi yang kedua. Pada keluarga prosesor
INTEL 8086 register ini diberi nama Instrucion Pointer (Register IP).
Fungsi Stack Pointer
Register Stack Pointer (Reg SP) merupakan register 16-bit yang berfungsi
untuk menunjukkan alamat tempat tersimpannya “puncak data” dalam stack.
Stack adalah bagian dari unit memori yang digunakan sebagai tempat
penyimpanan data sementara. Data yang disimpan atau diamankan de dalam stack
berasal dari register 16-bit.
Sistem Stack pada mikroprosesor ada dua macam,yaitu:
First In First Out (FIFO)
Last IN First Out (LIFO)
Pada prosesor-prosesor INTEL, sistem stack yang digunakan umumnya
LIFO. Pada siatem stack ini, data yang akan pertama keluar dari stack adalah data
yang masuk terakhir de dalam stack tersebut. Kapasitas data yang masuk maupun
keluar pada sistem stack tersebut adalah 16-bit.
Tentang unit memori pada mikroprosesor 8085
Agar komputer dapat bekerja, diperlukan suatu program untuk
menjalankannya. Program tersebut harus disimpan dengan cara tertentu agar
komputer dapat mengakses setiap perintah secara berurutan. Selain itu juga
diperlukan penyimpanan data selama pelaksanaan program. Jenis memori yang
digunakan di sini harus “cepat” karena langsung mempengaruhi kecepatan
pelaksanaan program. Karena memori ini menyimpan informasi dengan jumlah
bit yang relative kecil, biay per detik tidak menjadi masalah.
Di sisi lain, seringkali perlu penyimpanan blok informasi berjumlah besar
untuk jangka waktu yang lama. Dalam hal ini diperlukan beberapa jenis
penyimpanan missal yang biaya per bit-nya harus sangat rendah, meskipun harus
dibayar dengan bertambahnya waktu akses.Oleh karena itu, lebih dari satu jenis
memori diperlukan dalam hampir semua penerapan.
Sebelum menggunakan mikroprosesor
8085 ini, kita harus tahu dan mengenal peta
memori yang ada pada sistem tersebut. Dengan
mengenal peta memori tersebut kita dapat
menempatkan program ke alamat yang tepat
yaitu memori yang memang tersedia khusus
untuk pemakai (user).
Untuk melakukan operasi yang
berhubungan dengan mikraprosesor ini, kita
biasa menggunakan semacam
simulator yang sering disebut “trainer
MIDICOM 8085”. Peta memorinya bisa dilihat
seperti gambar berikut:
EPROM 2718
PROGRAM MONITOR
EPROM 2718
UNTUK PERLUASAN
PROGRAM MONITOR
RAM 4464
MEMORI KERJA
MONITOR
RAM 4464
DAERAH KERJA
BASIC
RAM 4464
“USER” RAM
RAM 4464
“USER” RAM
RAM 4464
“USER” RAM
RAM 4464
“USER” RAM
RAM 4464
“USER” RAM
2.2.1 Interfacing Memory Unit
Contoh :
Merancang suatu rangkaian decoder (dengan 2 cara basic gates dan chip
decoder) untuk menghubungkan processor yang memiliki 16 saluran alamat
dengan unit memori yang memiliki IC memori dengan input chip select ‘active
low’ sebagai berikut :
EPROM1 = 2 KByte
EPROM2 = 2 KByte
RAM1 = 4 KByte
RAM2 = 4 KByte
a.
Input Output
A13 A12 A11 X3 X2 X1 X0
Y0 0 0 0 1 1 1 0
Y1 0 0 1 1 1 0 1
Y2 0 1 0 1 0 1 1
Y3 0 1 1 1 0 1 1
Y4 1 0 0 0 1 1 1
Y5 1 0 1 0 1 1 1
Y6 1 1 0 d d d d
Y7 1 1 1 d d d d
X0 = A11 + A12 + A11
X1 = A13 + A12 + A11
X2 = A12
X3 = A13
b.
2.2.2 Operasi Pada Blok Memori
Operasi pada blok memori merupakan operasi yang sering dilakukan
terutama pada program-program yang ditulis dalam bahasa rakitan
(assembly).Operasi ini berkaitan dengan dengan data-data yang berada pada satu
atau lebih blok memori. Program-program yang berhubungan dengan operasi ini
misalnya, mengosongkan blok memori, mengisi blok memori dengan data yang
berurutan, dan membalik urutan data.
Sebenarnya, suatu lokasi memori terdiri dari sejumlah elemen penyimpan
informasi yang biasa disebut flip-flop.Sehingga tidak tepat jika kita akan mengisi
suatu blok memori dengan data 00h dan kita menyebutnya dengan mengosongkan
data. Lokasi memori tidak pernah kosong, tetapi berisi data 00h,artinya output
seluruh flip-flop di lokasi memori tersebut adalah nol.
Untuk lebih menyederhanakan program untuk mengisi suatu blok memori
dengan data-data heksadesimal yamg berurutan digunakan “loop”.Data-data yang
diisikan pada masing-masing lokasi memori umumnya berasal dari suatu register
yang digunakan sebagai penghitung (counter). Register penghitung tersebut mula-
mula diisi dengan suatu dat awal yang nilainya merupakan nilai data pada alamat
terkecil dari blok memori yang digunakan. Isi register penghitung tersebut akan
dipindahkan pada lokasi memori pertama dalam blok memori. Kemudian isi
register penghitung dinaikkan dan diisikan pada lokasi memori berikutnya.
Begitulah langkah-langkah tersebut terus diulang sampai seluruh lokasi memori
terisi semua.
Bila kita ingin mengisi suatu blok memori dengan data-data desimal yang
berurutan caranya sama dengan mengisi blok memori dengan data-data
heksadesimal seperti diatas, hanya perlu menambahkan faktor koreksi agar
penghitung selalu menjadi data BCD (decimal) yaitu dengan menuliskan instruksi
DAA.
Program lain yang sering digunakan pada operasi blok memori adalah
membalik urutan suatu data blok memori, artinya data yang ada pada alamat
terkecil suatu blok memori ditukarkan dengan data yang ada pada alamat terbesar
suatu blok memori. Lalu data kedua dari memori bagian atas ditukar dengan data
kedua dari blok memori bagian bawah. Begitulah seterusnya hingga semua data
pada suatu blok memori terbalikl urutannya.Untuk lebih jelasnya lihat gambar :
Data 1
Data 2
Data 3
Data 4
Data 5
Data 5
Data 4
Data 3
Data 4
Data 5
data sebelum dieksekusi data sesudah dieksekusi
Berikut ini akan diberikan beberapa contoh soal dan penyelesaiannya untuk
lebih memahami tentang operasi blok memori ini.
Contoh 1 : (tentang pengosongan / mengisi suatu blok memori dengan data 00h )
Buatlah diagram alir dan program untuk mengisi suatu blok memori dengan
dat 00h mulai alamat A000h sampai A000h ,dan tulis program saudara mulai
alamat 1000h.
Jawaab
Flowchart :
Program :
ALAMAT KODE OPERASI LABEL MNEMONIK
7000h 3E 00 A←00h MVI A,00h
7002h 21 00 A0 HL←A000h LXI H,A000h
7005h 0E 00 C←C-1 MVI C,00h
7107h 77 M←A MOV M,A
7008h 23 HL←HL +1 INX H
7009h 0D C←C-1 DCR C
700Ah C2 07 70 Z=0 JNZ 7007
700Dh CF STOP RST 1
Contoh 2 : ( mengisi blok memori dengan data heksadesimal )
Buatlah bagan alir dan program untuk mengisi suatu blok memori dengan
alamat A100h dengan data heksadesimal secara berurutan mulai 00h s.d. 0Fh,
tulis program mulai alamat 7100h.
Jawab :
Flowchart :
Program :
ALAMAT KODE OPERASI LABEL MNEMONIK
7100h 3E 00 A←00h MVI A,00h
7102h 21 00 A1 HL←A100h LXI H,A100h
7105h 0E 10 C←10h MVI C,10h
7106h 77 M←A MOV M,A
7107h 23 HL←HL+1 INX H
7108h 3C A←A+1 INR A
7109h 0D C←C-1 DCR C
710Ah C2 06 71 Z=0 JNZ 7106
710Dh CF STOP RST 1
Contoh 3 : ( mengisi blok memori dengan data decimal )
Buatlah diagram alir dan program untuk mengisi blok memori alamat A200h
s.d A20Fh dengan data desimal secara berurutan mulai 00 sampai 15, tulis
program mulai alamat 7200h.
Jawab :
Flowchart :
Program :
ALAMAT KODE OPERASI LABEL MNEMONIK
7200h 21 00 A2 HLA200h LXI H,A200h
7203h 7D AL MOV A,L
7204h C5 00 AA+00 ADI 00
7206h 27 ABCD DAA
7207h 77 MA MOV M,A
7208h 2D LL-1 DCR L
7209 F2 03 72 S=0 JP 7203
720c CF STOP RST 1
Contoh 4 : ( mengubah urutan data dalam suatu blok memori )
Buatlah bagan alir dan program untuk membalik urutan data-data yang
berada dalam blok memori alamat A300h sampai A30Fh., tulis program mulai
alamat 7300h.
Jawab :
Flowchart :
Program :
ALAMAT KODE OPERASI LABEL MNEMONIK
7300h 21 00 D3 HLD300h LXI H,D300h
7303h 01 0F A3 BCD30Fh LXI B,D30Fh
7306h 0A ABC LDAX B
7307h 55 DM MOV D,M
7308h 77 MA MOV M,A
7309h 7A AD MOV A,D
730Ah 0A BCA STAX B
730Bh 2C LL+1 INR L
730Ch 0D CC-1 DCR C
730Dh 7D AL MOVA,L
730Eh 3F A-:-C CMP C
730Fh DA 06 73 CY=1 JC 7306
7312h CF STOP RST 1
2.3 DATA HEKSADESIMAL DAN DATA DESIMAL
Sebelum mulai membahas tentang penjumlahan data heksadesimal dan data
decimal, terlebih dahulu kita harus memahami tentang instruksi-instrukai
aritmatika yang telah dibahas dimuka.Untuk lebih jelasnya, kita mulai saja
langsung ke contoh soal dan pembahasannya.
Contoh 1 ( penjumlahan data heksadesimal ) :
Buatlah bagan alir dan program untuk menjumlahkan data-data
heksadesimal yang berada pada register-register D, E, H, dan L. Simpan hasilnya
pada register A dan gunakan register B untuk menyimpan “carry bit”. Tulis
program tersebut mulai alamat 2000h.
Jawab :
Flowchart:
Program :
ALAMAT KODE OPERASI LABEL MNEMONIK
2000h 7A A←D MOV A,D
2001h 83 A←A+E ADD E
2002h 4F C←A MOV C,A
2003h 3E 00 A←00 MVI A,00
2005h CE 00 A←A+00+CY ACI 00
2007h BA B←A MOV B,A
2008h 79 A←C MOV A,C
8009h 84 A←A+H ADD H
800Ah 4F C←A MOV C,A
800Bh 78 A←B MOV A,B
800Ch CE 00 A←A+00+CY ACI 00
800Eh 47 B←A MOV B,A
800Fh 79 A←C MOV A,C
8010h 85 A←A+L ADD L
8011h 4F C←A MOV C,A
8012h 78 A←B MOV A,B
8013h CE 00 A←A+00+CY ACI 00
8015h 4F C←A MOV C,A
8016h 78 A←B MOV A,B
8017h CE 00 A←A+00+CY ACI 00
8019h 47 B←A MOV B,A
801Ah 79 A←C MOV A,C
801Bh CF STOP RST 1
Contoh 3 (penjumlahan bilangan decimal 2 digit) :
Buatlah program untuk menjumlahkan 9 bilangan decimal 2 digit yang
berada pada alamat C000h sampai C008h. Simpan hasilnya pada alamat C00Ah
dan C009h. Tulis program saudara mulai alamat 8200h.
Jawab :
Bagan alir:
Program :
ALAMAT KODE OPERASI LABEL MNEMONIK
8200H 21 00 D0 HL←D000H LXI H,C000H
8203H 16 09 D←9 MVI D,9
8205H 21 00 00 BC←0 LXI B,00
8208H 79 A←C MOV A,C
8209H 86 A←A+M ADD M
820AH 27 A←BCD DAA
820BH 4F C←A MOV C,A
820CH 78 A←B MOV A,B
820DH CE 00 A←A+00+CY ACI 00
820FH 47 B←A MOV B,A
8210H 2C L←L+1 INR L
8211H 15 D←D-1 DCR D
8212H C2 08 82 Z=0 JNZ 8208H
8215H 2C L←L+1 INR L
8216H 71 M←C MOV M,C
8217H 2C L←L+1 INR L
8218H 70 M←B MOV M,B
8219H CF STOP RST 1
2.3.1 Sistem Komplemen 9 dan Komplemen 10
Sistem Komplemen 9
Desimal K' 9
0 9
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0
Tabel di atas hanya berlaku untuk bilangan negatif saja.
Contoh : bila ada suatu bilangan negatif (-6), maka nilai komplemen 9 dari
bilangan tersebut adalah 3.
Contoh lain : -2 7 (K’ 9)
-5 4 (K’ 9)
-7 2 (K’ 9)
Sedangkan untuk bilangan positif, komplemen 9 dari bilangan tersebut adalah
nilai itu sendiri.
Contoh : 9 9 (K’ 9)
8 8 (K’ 9)
Operasi penjumlahan menggunakan konsep komplemen 9.
Contoh : 48 48
-35 + 64 +
13 112
1 +
13
Pada operasi penjumlahan tersebut terdapat “carry” bernilai (1), sehingga
dalam konsep komplemen 9 nilai tersebut dijumlahkan dengan bilangan paling
kanan atau LSB.
Contoh lain : -35 64
48 + 48 +
13 112
1 +
13
-48 51
35 + 35 +
-13 86 = -13 (10)
-4,345 23,720 95,654
23,72 + perhitungan biasa : 4,345 - 23,720 +
19,375 119374
1 +
19,375
Sistem Komplemen 10
Sistem komplemen 10 (K’ 10) merupakan komplemen 9 yang
ditambahkan dengan nilai (1).
Sistem komplemen 10, seluruh operasi aritmatika diselesaikan dengan
penjumlahan, sehingga dipergunakan instruksi DAA sebagai faktor koreksi.
Contoh :
Desimal
(BCD) K' 10
0 0
12 12
131 131
400 400
2257 2257
5000 5000
6677 6677
9999 9999
Catatan : ingat bahwa nilai komplemen dari bilangan positif adalah bilangan itu
sendiri.
Contoh :
Desimal (BCD) K' 9 K' 10
0 0 0
23 23 23
423 423 423
-23 76 77
-423 576 577
-6000 3999 4000
-6623 3376 3377
-9009 0110 0111
-9999 0000 0001
-5423 4576 4577
Contoh operasi aritmatika dalam sistem komplemen 10 :
Cara penyelesaian :
- pertama-tama operasi pengurangan harus diubah jadi operasi penjumlahan
- tanda bilangan dari data pengurang diubah menjadi negatif.
48 48
-35 + 65 +
113 = 13
Catatan : karena komplemen 10, nilai komplemen 9 dari bilangan negatif (–35)
adalah 64 ditambahkan dengan nilai (1), sehingga diperoleh hasil dari komplemen
10 adalah 65. Pada sistem komplemen 10, “carry” yang muncul pada operasi
penjumlahan tidak dihiraukan atau diabaikan saja.
Contoh lain : -35 65
48 + 48 +
113 = 13
-48 52
-35 + 65 +
-83 117 = 17 = -83
-48 52
35 + 35 +
-13 87 = -13
-432 568
97 + 097 +
-335 665 = -335
-843 9157
-279 + 9721 +
18878 = -1122
Catatan : karena hasil dari penjumlahan tersebut terdiri dari 4 digit sedangkan soal
terdiri dari 3 digit maka perlu penambahan angka nol (0) di awalnya.
-4,345 95,655
23,72 + 23,720 +
119,375 = 19,375
4,345 04,345
-23,72 + 76,280 +
80,625 = -19,375
2.3.2 Konversi Data
Konversi Data Desimal ke Komplemen Sepuluh
Untuk dapat mengkonversikan suatu data desimal ke bentuk data dalam
komplemen sepuluh, terlebih dahulu harus mencari data dalam komplemen
sembilan dari data desimal tersebut, baru setelah itu ditambah 1 untuk
mendapatkan nilai komplemen sepuluhnya. Setiap data desimal bernilai positif
atau nol mempunyai bentuk yang sama dalam komplemen sembilan maupun
sepuluh yaitu data desimal itu sendiri. Berikut ini adalah contoh konversi data
desimal ke bentuk data dalam sistem bilangan komplemen sembilan dan sepuluh.
Desimal (BCD) Komplemen 9 Komplemen 10
0 0 0
+23 23 23
+5423 5423 5423
-23 76 77
-6623 3376 3377
Contoh Soal :
a) Buatlah bagan alir dan program mengubah data desimal 2 digit bernilai
negatif yang berada pada blok memori alamat D200h – D20Fh ke dalam
bentuk komplemen sepuluh. Simpan hasilnya pada blok memori alamat
D300h – D30Fh. Tulis program mulai alamat 8000h.
Flowchart
START
HL ← D200
C ← 10
Z=0
A ← 99 A ← A - M A ← A + 01 A ← BCD H ← D3 M ← A H ← D2 L ← L + 1 C ← C - 1
STOP
Program
Alamat Op - Code Label Mnemonik
8000 21 00 D2 LXI H,D200
8003 0E 10 MVI C,10
8005 3E 99 L1 MVI A,99
8007 96 SUB M
8008 3C INR A
8009 27 DAA
800A 36 D3 MVI H,D3
800C 77 MOV M,A
800D 36 D2 MVI H,D2
800F 2C INR L
8010 0D DCR C
8011 C2 05 80 JNZ L1
8014 CF RST 01
Konversi Data Komplemen Sepuluh Menjadi Data Desimal
Untuk mengkonversikan data dari bentuk komplemen sepuluh menjadi data
desimal, maka langkah pertama yang harus dilakukan adalah mengubah data
komplemen sepuluh tersebut menjadi data komplemen sembilan terlebih dahulu,
baru kemudian diubah menjadi data desimal.
Contoh Soal :
a) Buatlah bagan alir dan program mengubah data dalam
bentuk komplemen sepuluh 2 digit yang berada pada blok memori alamat
D400h – D40Fh ke dalam bentuk desimal. Simpan hasilnya pada blok
memori alamat D500h – D50Fh. Tulis program mulai alamat 8500h.
Flowchart
Program
Alamat Op - Code Label Mnemonik
8500 21 00 D4 LXI H,D400
START
HL ← D400
C ← 10
Z=0
A ← M A ← A - 01 B ← A A ← 99 A ← A – B H ← D5 M ← A H ← D4 L ← L + 1 C ← C - 1
STOP
8503 0E 10 MVI C,10
8505 7E L1 MOV A,M
8506 3D DCR A
8507 47 MOV B,A
8508 3E 99 MVI A,99
850A 90 SUB B
850B 26 D5 MVI H,D5
850D 77 MOV M,A
850E 26 D4 MVI H,D4
8510 2C INR L
8511 0D DCR C
8512 C2 05 80 JNZ L1
8015 CF RST 01
2.4DELAY (PENUNDAAN)
Merancang Program Subrutin Delay
Program delay dapat dibuat dengan loop sederhana. Prinsipnya adalah
dengan mengatur penggunaan instruksi-instruksi yang jumlah waktu eksekusinya
sesuai dengan lamanya delay yang diinginkan. Pada prosesor 8085, lamanya
waktu pelaksanaan setiap instruksi tidak sama.
Contoh :
Instruksi
Lama
Eksekusi
MOV A, B 4T
MOV A, M 7T
MVI A, 23 7T
MVI M, 23 10T
RST 1 12T
RET 10T
CALL ABCD 18T
JP 9A2C 7/10T
JMP 9234 10T
NOP 4T
CMP C 4T
CMP M 7T
CPI 42 7T
T = clock periode
Pada trainer MIDICOM, frekuensi yang digunakan = 3,072 MHz
Tc = detik = 0,325 μs
Perintah transfer data yang berhubungan antara register dan memori
memerlukan waktu yang lebih lama daripada transfer data antara register dan
konstanta.
Pada perintah JP 9A2C, lama eksekusinya ada 2 keadaan, karena perintah
itu bersyarat, dia akan lompat pada saat “sign bit” = 0. apabila melakukan
lompatan waktunya 10T, sedangkan jika tidak melakukan lompatan waktunya 7T.
Secara otomatis/internal, yang dilakukan prosesor apabila bertemu dengan
perintah CALL :
- menyimpan alamat instruksi berikutnya dalam stack
- mengisi program counter dengan alamat subrutin yang akan dilaksanakan.
Secara otomatis/internal, yang dilakukan prosesor apabila bertemu dengan
perintah RET adalah mengambil alamat dari “stack” ke PC.
Apabila membuat subrutin, jangan lupa mengakhirinya dengan RET
(return). Dalam program subrutin ada return bersyarat dan return tak bersyarat.
Contoh return bersyarat adalah RP returnss = 0, RC return Cy = 1,
dst. Contoh return tak bersyarat adalah RET.
Contoh :
Merancang suatu subrutin delay 1ms untuk digunakan pada modul trainer
MIDICOM.
Program Pemanggil
1 * 7Tc
18Tc
(n-1)10Tc
n * 4Tc
1 * 7Tc
Misal subrutin ditulis pada alamat awal A000H
Mnemonik
Jumlah Time
Clock
MVI D,n 7
L 1 DCR D 4
START
D n
D D - 1
Z = 0
RET
___CALL A000__
JNZ L1 7 / 10
RET 10
Catatan : Jumlah time clock akan bernilai 7 saat instruksi tidak, dan
akan bernilai 10 saat instruksi ya.
Delay akan maksimum jika diisi dengan nol (0). Dalam trainer
MIDICOM, frekuensi clock yang digunakan = 3,072 MHz.
Time Clock = 1 / 3,072.106 = 0,325 μs.
n = 1, delay = 46 Tc
= 46 . 0,325 μs = 14,95 μs
n = 2, delay = 60 Tc
= 60 . 0,325 μs = 19,5 μs
dari keterangan yang diperoleh di atas dapat dirumuskan secara umum subrutin
delay dengan menggunakan bantuan sebuah register, yaitu :
Time delay = (7+10+7+18+4n+10n–10) Tc
= (32 + 14n) Tc
delay maksimum di dapat pada saat n = 0 (n = 256)
n = 0, delay = (14 * 256 + 32) Tc
= 3616 Tc
= 1,175 ms
agar delay = 1 ms, maka :
delay = Tc = 3076,9 Tc oleh karena kurang 0,1 Tc
~ 3077 Tc
maka3077 Tc = 14n + 32
14n = 3077 – 32
14n = 3045
n = = 217,5
n = 217
= d9(16)
Jika n = d9, maka :
delay = [ 14 ( 217 ) + 32 ] . 0,325 μs
= 3070 Tc
Pada perhitungan sebelumnya, kita membutuhkan 3077 Tc sedangkan
harga n yang dihasilkan hanya 3070, maka “flowchart” yang harus dirancang
adalah
selisih delay yang didapat = 0,1 Tc = 0,0325 μs PENGKOREKSI (+7Tc)
% error = x 100% = 0,00325 %
Program Delay dengan Bantuan 2 Buah Register
D D9
D D - 1
Z = 0
RET
SUBRUTIN DELAY
D 0
delay
C C - 1
B n
C m
Z = 0
B B - 1
Z = 0
RET
(n-1)10Tc
Rumus umum : 14mn + 18n + 32
n = 1 dan m = 1 [ mn – n ]
n = 1 1x ke bawah n = 2 2x ke bawah
m = 10 9x “jump” m = 10 18x “jump”
Time delay = ( 18 + 10 + 7 ) + 7n + 4mn + 10mn + 3n + 4n + 10n – 3
= ( 14mn + 18n + 32 )Tc
CALL XXXX 18Tc
MVI B, n 1 * 7Tc
L 1 MVI C, m n * 7 Tc
L 2 DCR C ( m * n ) 4Tc
JNZ L 2 ( 10 mn - 3n ) Tc
DCR B n * 4Tc
n = 256
m = 256
delay = 18 ( 256 ) + 14 ( 256 )2 + 32
= 922.144 Tc
299,6968 ms
Rumus Umum
18 n + 49mn + 32
Jika n = m = 0
Delay = 18 ( 256 ) + 49 ( 256 )2 + 32
= 3.215.904 Tc
= 1,045 s
agar 1 s = 1.000.000 μs
Tc = 3.076.923,077 Tc
= 3.076.923 Tc kurang 0,077 Tc
Program dengan Bantuan 3 Buah Register
delay
D o
B n
C m
Z = 0
B B - 1
Z = 0
RET
D D - 1
C C -1
Z = 0
Rumus Umum :
=18+7+7m+7mn+4mno+10mno-10mn+7mn+4mn+10mn-10n+7n+4n+10n-
10+7+10
= 14mno + 18mn + 18n + 32
2.5METODE LOOK-UP TABLE
Metode ini digunakan untuk suatu sistem yang input dan outputnya random.
Contoh pada kehidupan sehari-hari adalah mesin kasir di supermarket, metode
look up table-nya terjadi pada saat melakukan cash register, input = kode barang
dan output = harga barang.
Metode look-up table dibuat dengan tujuan sebagai berikut :
o Menghindari metode perhitungan.
o Meningkatkan resolusi.
Pada metode ini harga barang sudah diketahui dalam suatu blok memori,
jadi kita hanya perlu menuliskan kode barang, maka secara otomatis kode tersebut
akan menunjukkan tempat terdapatnya harga barang pada alamat memori tertentu.
Berikut ini adalah contoh tabel kode barang dengan harga barangnya.
Kode Barang
Nama
Barang Harga Barang
0 Semen Rp. 40.000
1 Paku Rp. 10.000
2 Asbes Rp. 49.000
3 Keramik A Rp. 30.000
4 Keramik B Rp. 70.000
5 Keramik C Rp. 20.000
6 Cat A Rp.400.000
7 Cat B Rp. 75.000
8 Baut A Rp. 200
9 Baut B Rp. 300
Dari tabel di atas kita bisa membuat tabel datanya, akan tetapi sebelumnya
harus ditentukan dahulu berapa alamat memori yang dibutuhkan untuk
menyimpan masing-masaing harga. Patokan untuk menentukan berapa alamat
memori yang dibutuhkan adalah harga barang yang paling mahal, kalau pada tabel
di atas harga yang paling mahal adalah Rp.400.000. Harga tersebut terdiri dari 6
digit, karena setiap alamat memori pada mikroprosesor 8085 hanya bisa
menyimpan data 2 digit, maka kita memerlukan 3 alamat memori untuk
menyimpan harga tersebut. Berarti apabila kita memiliki 10 barang dengan harga
yang berbeda-beda, diperlukan 30 alamat memori untuk membuat tabel datanya.
Tabel data
Catatan : Nilai yang lebih tinggi disimpan di alamat yang lebih tinggi juga.
Tabel pembelian barang
Kode
BarangJumlah Harga
00 07
03 20
06 03
A000 00
1 00
2 04
A003 00
4 00
5 01
A006 00
7 90
8 04
A01B 00
1C 03
1D 00
Kode barang = 0
Kode barang = 1Kode barang = 2
Kode barang = 9
Total Harga ( 6 digit )
A100 00 A200 07
1 03 1 20
2 06 2 03
A300 A400 00
1 1 00
2 2 00
Untuk membuat programnya perlu ditentukankan beberapa hal, yaitu :
o Jumlah item transaksi = 3
oHL pointer alamat ke harga barang.
oBC pointer alamat kode barang dan jumlah harga.
Flowchart
BCD
Kode Barang (BCD) Jumlah Barang (BCD)
Total harga awal (BCD)Hasil kali jumlah barang dan harga (BCD)
START
B A2 A [BC] A A+99 A BCD
L A
SP FFFFH A0
BC A102 DE A400
A BCL A
A A+L A A+L
L AA M
[DE] A L L+1 E E+1A M
[DE] A L L+1 E E+1 A M
[DE] A E E+1 A 0
[DE] A
X
STACK HL STACK BC STACK DE D L HL 0 BC 0
L
Pangkat 8
Buatlah program untuk menentukan pangkat 8 dari data input:
INPUT
1000 6
1001 7
1002 8
1003 3
+
OUTPUT
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
200A
200B
200C
200D
200E
200F
656138
1677721688
576480178
167961668 167961668
LXI SP,FFFF
LXI H,1003
LXI D,200F
1 : MOV C,M
MOV A,C
STA 3000
MVI A,00
STA 3001
STA 3002
STA 3003
MCI B,07
2 : CALL SUB
DCR B
JNZ 2
PUSH H
LXI H,3003
3 : MOV A,M
STAX D
DCR E
DCR L
JP 3
POP H
DCR L
JP 1
RST 01
SUB:PUSH HPUSH BDCR CLXI H,3003
LUP1 : MOV A,MMVI H,40MOV M,AMVI H,30DCR LJP LUP1
LUP2 : MVI B,04ADI 00MVI L,00
LUP3 : MOV A,MMVI H,40ADC MDAAMVI H,30MOV M,AINR LDCR BJNZ LUP3DCR CJNZ LUP2POP BPOP HRET 01
2.6PENGURUTAN DATA (DATA SORTING)
Secara garis besar pengurutan data ada dua macam :
1. Ascending Order yaitu mengurutkan data dari mulai nilai terkecil ke nilai
terbesar.
2. Descending Order yaitu mengurutkan data dari mulai nilai terberas ke
terkecil.
Jenis data yang diurutkan dapat berupa data bilangan maupun data karakter.
Untuk data berupa bilangan bilangan negative dianggap lebih kecil dari bilangan
positif. Untuk data berupa karakter , data yang didahului huruf A dianggap lebih
kcil disbanding dengan data yang didahului dengan hurup B.
Proses pengurutan data bilangan seringkali diperlukan misalnya untuk
mengurutkan data nilai hasil suatu ujian semester mulai dari nilai terkecil ke nilai
terbesarataupun dari nilai terbesar ke terkecil.
Proses pengurutan karakter seringkali diperlukan misalnya untuk
mengurutkan daftar nama mulai dari nama yang didahului dari huruf A sampai
kepada nama yang didahului oleh huruf Z. Disusun berdasarkan huruf abjad.
Untuk dapat membuat program-program pengurutan data dalam bahasa
rakitan yang perlu diperhatikan terutama adalah jenis system bilangan yang
dipergunakan pada struktur data. Jika data yang tersedia merupakan bilangan
decimal (BCD﴿, maka pengurutan bilangan atau data harus dilakukan berdasarkan
garis bilangan yang berlaku dalam system bilanagn decimal. Jika data yang
tersedia merupakan bilangan heksa decimal murni maka pengurutan dat harus
berdasarkan garis bilangan heksa decimal murni. Dan apabila adata yang
diurutkan merupakan bilangan heksadesimal komplemen 16, maka pengurutan
data harus berdasarkan garis bilangan yang berlaku dalam system bilangan
heksadesimal komplemen 16.
Garis bilangan heksadesimal murni
Garis bilangan heksadesimal komplemen 16
Contoh Ascending Order
Buatlah Flowchart dan program untuk mengurutkan turun data heksadesimal pada
blok memori D500 sampai D50F. Tempatan hasil pada blok memori E500 sampai
E50F.
Flowchart
SORT ASCENDING
D ← H
BAAMMB
(DE)A
A ← (DE)A:M
E ← LE ← E - 1
E ← E - 1
S = 0
L ← L - 1
RET
Z = 0
Cy = 1
ProgramLXI H,D50F
LUP1 :MOV A,MMVI H,E5MOV M,AMVI H,D5DCR LJP LUP1LXI H,E50FCALL SORT
RST 01
SUBRUTINSORT: MOV D,HLP1: MOV E,L
DCR ELP2; LDAX D
CMP MJC LP3MOV B,AMOV A,MMOV M,BSTAX D
Lp3: DCR EJP LP2DCR LJNZ LP1
RET
Contoh Descending Order
Buatlah flowchart dan program untuk mengurutkan naik data heksa decimal
komplemen.
PROGRAM
LXI H,200F
LUP1: MOV A,M
MVI H,30
MOV M,A
MVI H,20
DCR L
JP LUP1
LXI H,300F
CALL SORT
RST 01
RET
SUBRUTIN
MOV D,H
LUP1: MOV E,L
DCR E
LUP2: LDAX D
CMP M
JNC LUP3
MOV B,A
MOV A,M
MOV M,B
STAX D
LUP3: DCR E
JP LUP2
DCR L
JNZ LUP1
2.7 SELEKSI DATA
Program seleksi data sangat erat hubungannya dengan proses pengujian bit-
bit yang berada di dalam ‘flag register’, yang tersusun seperti di bawah ini:
S (Sign Flag)
Sign flag merupakan bit tanda yang menunjukan tanda bilangan dari hasil
operasi aritmatika atau logika yang tersimpan dalam akumulator. S akan berlogik
1 jika hasil operasi merupakan bilangan negatif dan akan berlogik 0 jika hasil
operasi merupakan bilangan positif atau nol.
Z (Zero Flag)
Zero flag merupakan bit flag yang akan memperlihatkan apakah hasil operasi
aritmatika atau logika yang tersimpan dalam akumulator nilainya nol. Z akan
berlogik 1 jika hasil operasinya adalah nol. Z akan berlogik 0 jika hasil operasi
nilainya tidak nol.
AC (Auxilary Carry Flag)
Auxilary carry flag menunjukkan ada atau tidaknya carry dari posisi bit b3 ke
posisi bit b4 pada operasi penjumlahan ALU. AC akan akan berlogik 1 apabila
pada suatu proses penjumlahan terdapat carry dari posisi bit b3 ke posisi bit b4.
AC akan berlogik 0 apabila tidak ada carry dari bit b3 ke bit b4.
P (Parity Flag)
Parity flag merupakan merupakan bit flag yang menunjukan ganjil atau
genapnya jumlah logika 1 pada hasil operasi aritmatika atau logika yang
dilakukan dalam ALU. P akan berlogik 1 apabila jumlah logika 1 pada hasil
operasi adalah genap. P akan berlogik 0 jika jumlah logika 1 pada hasil operasi
adalah ganjil.
CY (Carry atau Borrow Flag)
Carry atau Borrow flag merupakan bit flag yang menunjukan ada atau
tidaknya carry atau borrow pada posisi bit b7 (MSB) dalam suatu operasi
aritmatika. CY berfungsi sebagai bit carry pada operasi penjumlahan dan borrow
pada operasi pengurangan. CY akan berlogik 1 apabila pada MSB dihasilkan
carry atau borrow. CY akan berlogik 0 apabila pada MSB tidak dihasilkan carry
atau borrow.
Penggunaan instruksi seleksi data
Menghitung jumlah data ganjil dan genap
Untuk menentukan atau mendeteksi suatu data genap atau ganjil dapat
dilakukan dengan menguji bit LSB data tersebut. Jika bit pada posisi LSB
berlogik 0 ini menunjukan data genap dan sebaliknya jika data tersebut
berlogik 1 ini menunjukan data ganjil.
Mendeteksi nilai data negatif atau positif
Untuk menetukan atau mendeteksi suatu data negatif atau positif dapat
dilakukan dengan menguji bit MSB data tersebut. Jika bit pada posisi MSB
berlogik 0 ini menunjukan data positif dan sebaliknya jika data tersebut
berlogik 1 ini menunjukan data negatif.
Mendeteksi nilai data nol
Data bernilai nol dapat dengan mudah dideteksi dengan memeriksa zero flag
yang terdapat pada flag register. Sebelum instruksi untuk memeriksa keasaan
dari zero flag tersebut dilakukan, terlebih dahulu harus diberikan instruksi
yang akan mempengaruhi flag register.
Mendeteksi kesalahan data
Salah satu cara untuk mendeteksi kesalahan dalam pengiriman data digital
adalah dengan sistem pariti genap ataupun pariti ganjil. Sistem ini
menggunakan satu bit tambahan untuk dijadikan bit pariti. Semua informasi
mempunyai jumlah logika 1 sama genap atau ganjil. Contohnya pada sistem
pariti genap, jika informasi jumlah bit paritinya genap maka bit pariti akan
diberi logik 0 dan jika jumlah bit informasi ganjil maka bit pariti diberi logik
1 agar jumlah logik 1 menjadi genap. Untuk mendeteksi sistem pariti ini dapat
dilakukan dengan memeriksa pariti bit pada register flag.
Seleksi Range Data
Dalam program-program penyeleksian data, seringkali silakukan penyeleksian
data yang besarnya dibawah atau diatas nialai tertentu. Penyeleksian ini dapat
dilakukan dengan melakukan instuksi perbandingan (compare) yang pada
prinsipnya mirip dengan instruksi pengurangan (substraction).
Contoh pemrogramannya :
1. Buat flow chart dan program untuk mendeteksi apakah data yang ada pada reg.
B. Jika reg. B bernilai ganjil isilah reg. C dengan FF dan apabila reg B bernilai
genap isilah reg C dengan 00.
2. Buatlah diagram alir dan program untuk mencari nilai terbesar dari 3 data
biner murni 8 bit yang ada pada reg B, C, dan D. Jika data terbesar ada pada
reg B isi reg H dengan data BB. Jika data terbesar ada pada reg C isi reg H
dengan data CC. Jika data terbesar ada pada reg D isi reg H dengan data DD.
LABEL MNEMONICSMOV A, BRRCJC L1MVI C, 00
L1 MVI C, FFRST 1
2.8SUBRUTIN DAN INSTRUPSI
LABEL MNEMONICSMOV A, BCMP CJC L1CMP DJC L2MVI H, BBRST 1
L1 MOV A, CCMP DJC L2MVI H, CCRST 1
L2 MVI H, DDRST 1
2.8 1 SUBRUTIN
Subrutin adalah suatu keadaan dimana mikroprosesor akan menghentikan
secara sementara instruksi yang sedang dilaksanakan untuk bercabang/menuju
suatu subrutin (program tertentu yang telah dibuat pada alamat yang berbeda dari
alamat program utama) untuk kemudian mikroprosesor akan kembali pada
program utama setelah menyelesaikan instruksi-instruksi yang terdapat pada
subrutin tersebut.
Proses kerja :
Apabila mikroprosesor menerima instruksi subrutin (call) maka akan
menghentikan secara sementara instruksi yang sedang dilaksanakan kemudian
menyimpan alamat setelah instruksi yang telah dihentikannya kedalam Stack
Pointer (SP) dan mengganti/mengisi alamat pada Programable Counter (PC)
dengan alamat awal subrutin tersebut kemudian mikroprosesor akan kembali ke
program utama setelah menemui instruksi RETURN pada subrutin dengan alamat
yang berada/tersimpan pada PC.
Keuntungan menggunakan subrutin :
1. Dengan penulisan program (subrutin) pada tempat yang berbeda dari program
utama, maka subrutin dapat dieksekusi secara berulang-ulang dengan hanya
sekali penulisan pada suatu subrutin.
2. Mengurangi jumlah memori alamat yang digunakan karena penulisannya
hanya sekali dan dapat digunakan berulang kali.
Subrutin bercabang
Suatu subrutin dapat bercabang menuju subrutin kedua ataupun bercabang
lagi menuju subrutin ketiga,dst. Adanya tumpukan LIFO) (Last Input First Out)
menjamin alamat pulang yang tepat diberikan untuk setiap pengembalian.
Instruksi/Format subrutin untuk mempermudah memakai suatu subrutin
terdapat beberapa kriteria:
1. Judul subrutin
2. alamat subrutin
3. Input yang digunakan
4. Output yang digunakan
5. Fungsi dari subrutin
6. Register atau unit memori yang berubah
Instruksi Subrutin
Instruksi yang digunakan pada suatu subrutin adalah CALL dan RETURN.
1. Instruksi CALL alamat digunakan untuk memanggil suatu subprogram atau
rutin.
Rutin merupakan Suatu bagian program pendek yang melaksanakan tugas
tertentu. Jika rutin digunakan berulang kali dalam suatu program maka dapat
ditulis sekali pada memori sebagai subrutin dan dapat dipanggil setiap kali
diperlukan. Apabila instruksi CALL dieksekusi maka isi Program Counter akan
diganti dengan alamat awal dari subrutin yang dipanggil dalam memori.
Instruksi CALL ada 2:
Instruksi CALL bersyarat dan tak bersyarat
1. CNZ - Call if zero flag not set
2. CZ - Call if zero
3. CNC - Call if carry flag is 0
4. CC - Call if carry flag is 1
5. CPO - Call if the parity is odd
6. CPE - Call in the parity is even
7. CP -Call if plus
8. CM - Call if minus
2. Untuk mengembalikan ke program utama (setelah menyelesaikan subrutin),
instruksi RETURN sebagai pasangan instruksi CALL. Instruksi RETURN ada 2:
Instruksi RETURN bersyarat dan tak bersyarat. Untuk instruksi RETURN tak
bersyarat memiliki format ‘RET’, sedangkan untuk yang bersyarat memiliki
format :
1. RZ - Return if zero
2. RNC - Return if not carry
3. RC - Return if carry
4. RPO - Return if parity odd
5. RPE - Return if parity even
6. RP - Return if plus
7. RM - Return if minus
2.8.2 INTERUPSI
Pengertian adalah Suatu keadaan dimana suatu mikroprosesor akan
menghentikan secara sementara instruksi yang sedang dieksekusi (program
utama) untuk melayani/bercabang menuju suatu subrutin yang berisi suatu
program tertentu yang telah dibuat/diprogram dalam perancangan mikroprosesor
dan tidak dapat dihapus/diganti oleh pemakai, untuk kemudian mikroprosesor
kembali kepada program utama.
Proses Interupsi
Bila suatu mikroprosesor menerima permintaan interupsi, maka pertamatam
mikroprosesor akan menyelesaikan siklus ambil yang sedang dilaksanakan
menyimpan alamat tempat kembalinya program utama ke ‘PC’ setelah
menyelesaikan suatu interupsi), kemudian mikroprosesor akan memanggil operasi
interupsi dimana alamat awal interupsi akan ditunjukkan secara terarah
(vektorisasi) seperti yang tertera pada tabel dibawah ini (pada mikroprosesor
8085). Pada proses ini isi dari ‘PC’ diganti dengan alamat awal operasi yang
bersangkutan. Kemudian pada akhir subrutin pelayanan interupsi, mikroprosesor
akan kembali pada program utama dimana sebelumnya alamat telah disimpan
pada ‘PC’.
Contoh pemrogramannya :
1. Buatlah program subrutin delay 500μs yang akan digunakan pada trainer
MIDICOM
LABEL MNEMONICSMVI B, 6B
L1 DCR BJNZ L1NOPNOPRET
2. Buatlah program subrutin delay 30 ms yang akan digunakan pada trainer
MIDICOM.
2.9 PROGRAM KALKULATOR
LABEL MNEMONICSMVI B, C8MVI C, 1F
L1 DCR CJNZ L1NOPNOP
L2 DCR BJNZ L2MVI D, 12
L3 DCR DJNZ L3NOPNOPNOPNOPNOPRET
Berikut ini adalah sebuah program yang mampu untuk menjumlahkan dua
bilangan desimal.
Subrutin dengan alamat awal A700 adalah subrutin untuk menerima 1 digit
(angka desimal) dari keyboard.
2.10MIDICOM SEBAGAI “DIGITAL VOLTMETER”
Salah satu aplikasi yang dapat direalisasikan dengan memanfaatkan fasilitas
ADC yang sudah tersedia pada trainer MIDICOM adalah “Digital Voltmeter”.
Untuk itu penguasaan terhadap prinsip penggunaan IC ADC sangat diperlukan.
ADC berfungsi untuk merubah besaran analog ke besaran digital.
DAC berfungsi untuk merubah besaran digital ke besaran analog.
Prinsip pemanfaatan IC ADC
ADC terbagi menjadi 2 yaitu ADC monopolar dan bipolar.
Contoh 1 :
Pada suatu ADC monopolar 8 bit, diberikan tegangan referensi sebesar +8 volt.
Tentukan :
a.Jumlah step
b. Besar tegangan per step
c.Besar error kuantisasi maksimum
d. Level output logika ADC jika pada inputnya diberi tegangan sebagai
berikut :
Vin Analog
(volt)
output ADC
B7 B6 B5 B4 B3 B2 B1 B0
2,4 0 1 0 0 1 1 0 0
3,0 0 1 1 0 0 0 0 1
7,2 1 1 1 0 0 1 0 1
0,85 0 0 0 1 1 0 1 1
1 0 0 1 0 0 0 0 0
8 1 1 1 1 1 1 1 1
6 1 0 1 1 1 1 1 1
4 1 0 0 0 0 0 0 0
ADC 8 bit memiliki 28 level kuantisasi = 256 level
Jawab :
a.jumlah step = 28 – 1 = 255 step
b. besar tegangan per step = = = 0,031372549
catatan : sebaiknya gunakan sebanyaknya angka di belakang koma, agar
didapat hasil yang lebih akurat.
c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,031372549
= 0,015686274
d. Untuk menjawab soal bagian (d) adalah dengan cara membagi tegangan
input analog dengan besar tegangan per step yang didapat, hasilnya akan
berupa bilangan desimal, setelah itu kita ubah menjadi bentuk
heksadesimal, kemudian simpan pada tabel yang telah tersedia dalam
bentuk biner. Contoh : = 76,5(10) = 4C(16) = 0100 1100
Contoh 2 :
Pada suatu ADC bipolar 10 bit diberikan Vref(+) = 9V; Vref(-) = -9V. Tentukan :
a.jumlah step = 210 – 1 = 1023 step
b. besar tegangan per step = = = 0,017595307
catatan : gunakan sebanyaknya angka di belakang koma, agar didapat hasil
yang lebih akurat. Karena memiliki tegangan (+) dan (-), maka tegangan =
Vref(+) - Vref(-) = 9volt- (-9volt) = 9volt + 9 volt = 18 volt.
c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,017595307
= 0,008797653
d. Untuk menjawab soal bagian (d) adalah dengan cara membagi tegangan
input analog dengan besar tegangan per step yang didapat, hasilnya akan
berupa bilangan desimal, setelah itu kita ubah menjadi bentuk
heksadesimal, kemudian simpan pada tabel yang telah tersedia dalam
bentuk biner. Perlu diperhatikan pada tegangan referensi negatif
pengerjaannya berbeda, yaitu dengan menggunakan sistem komplemen 2.
Contoh : = 241,5(10) = 242(10) (dalam tegangan referensi negatif,
pembulatan ke atas) = F2(16) = 1111 0010
SBN : 1 0 1 1 1 1 0 0 1 0
K’ 1 : 1 1 0 0 0 0 1 1 0 1
K’ 2 : 1 1 0 0 0 0 1 1 1 0 (masukkan hasilnya pada tabel)
Vin
Analog
(volt)
Output ADC
B9 B8 B7 B6 B5 B4 B3 B2 B1 B0
+42,5 0 0 1 1 1 1 0 0 1 0
-4,25 1 1 0 0 0 0 1 1 1 0
+3,0 0 0 1 0 1 0 1 0 1 0
-3,0 1 1 0 1 0 1 0 1 0 1
+5,75 0 1 0 1 0 0 0 1 1 0
-5,75 1 0 1 0 1 1 1 0 0 1
-9 1 0 0 0 0 0 0 0 0 0
-7,4 1 0 0 1 0 1 1 0 1 1
Perlu diketahui bahwa :
Monopolar : 0 ======================= FF
Bipolar : -128======= -1=0= 1========= +127
80(16)===== FF=0= 1=========7F(16)
Seperti halnya ADC, DAC juga terbagi menjadi 2 yakni DAC monopolar
dan DAC bipolar.
Contoh 1 :
Pada suatu DAC Monopolar 9 bit diberikan tegangan referensi sebesar +8 volt.
Tentukan :
a.jumlah step = 29 – 1 = 511 step
b. besar tegangan per step = = = 0,015655577
catatan : gunakan sebanyaknya angka di belakang koma, agar didapat hasil
yang lebih akurat.
c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,015655577
= 0,007827788
d. Tentukan tegangan output DAC jika pada inputnya diberikan kombinasi
bit-bit sebagai berikut :
Input DAC Output DAC
(volt)B8 B7 B6 B5 B4 B3 B2 B1 B0
1 0 1 0 0 1 1 0 1 5,2
1 0 1 1 0 0 0 0 1 5,5
0 1 1 1 0 0 1 0 1 3,5
0 0 0 0 1 1 0 1 1 0,4
1 0 0 1 0 0 0 0 0 4,5
1 1 1 1 1 1 1 1 1 8
0 1 0 1 1 1 1 1 1 2,99
1 1 0 0 0 0 0 0 0 6,0
Untuk menjawab soal bagian (d) adalah dengan cara mengubah nilai input
DAC dari biner ke desimal, kemudian bagi hasil konversi tersebut dengan jumlah
step yang didapat kemudian dikalikan dengan tegangan referensi. Dalam soal ini,
yaitu sebagai contoh : 1 0 1 0 0 1 1 0 1 = 333(10)
Jadi, x 8 volt = 5,2 volt (masukkan nilai tersebut ke kolom output DAC.
Contoh 2 :
Pada suatu DAC Bipolar 10 bit diberikan Vref(+) = 9V; Vref(-) = -9V. Tentukan :
a.jumlah step = 210 – 1 = 1023 step
b. besar tegangan per step = = = 0,017595307
catatan : gunakan sebanyaknya angka di belakang koma, agar didapat hasil
yang lebih akurat.
c.errror kuantisasi maksimum = ½ . tegangan per step = ½ . 0,017595307
= 0,008797653
d. Tentukan tegangan output DAC jika pada inputnya diberikan kombinasi
bit-bit sebagai berikut :
Input DAC Outpu
t DACB9 B8 B7 B6 B5 B4 B3 B2 B1 B0
0 0 1 1 1 1 0 0 1 0 +42,5
1 1 0 0 0 0 1 1 1 0 -4,25
0 0 1 0 1 0 1 0 1 0 +3,0
1 1 0 1 0 1 0 1 0 1 -3,0
1 1 0 0 0 1 1 1 0 1 -3,99
1 0 1 0 1 0 1 0 1 1 -6
1 0 0 0 0 0 0 0 0 0 -9
0 0 1 1 1 0 1 1 1 0 4,18
Untuk menjawab soal bagian (d) adalah sama dengan cara mengubah nilai
input DAC dari biner ke desimal, kemudian bagi hasil konversi tersebut dengan
jumlah step yang didapat kemudian dikalikan dengan tegangan referensi. Dalam
soal ini, yaitu sebagai contoh tegangan reerensi negatif : 1 1 0 0 0 1 1 1 0 1 = -
22710)
Jadi, x 18 volt = -3,99 volt (masukkan nilai tersebut ke kolom output
DAC.
1 0 1 0 1 0 1 0 1 1 = -341 -341/1023 . 18 volt =
-6 volt
0 0 1 1 1 0 1 1 1 0 = 238 238/1023 . 18 volt = 4,18 volt
positif
negatif
0
Perlu diketahui bahwa pada bipolar, tetap yang menjadi patokan awal adalah
pada angka nol.
2.11 UNIT PERAGA 7 SEGMENT DAN LED
Pada trainer MIDICOM telah tersedia unit peraga 7 segment yang terdiri
dari 8 unit 7 segment display (terdapat 8 karakter). Dari ke8 karakter tersebut
setiap saat hanya 1 karakter yang dapat diaktifkan. Port # 40H digunakan sebagai
output port yang difungsikan untuk menetukan pola karakter yang akan
ditampilkan pada unit peraga 7 segment. Port # 42H dipergunakan untuk memiliki
posisi digit (posisi karakter) yang akan diaktifkan.
Data-data yang diberikan pada port # 42H adalah sbb :
Sedangkan urutan posisi 7 segment yang harus diberikan pada port # 40H adalah
sbb :
Contoh :
1. Untuk menampilkan
karakter H pada
posisi digit D4 programnya yaitu, sbb :
MVI A,00
OUT 42
MVI A,76
OUT 40
RST 1
2. Untuk menampilkan karakter H pada posisi digit D4 programnya yaitu, sbb :
MVI A,00
OUT 42
MVI A,76
OUT 40
RST 1
Contoh pemrogramannya :
1. Buat diagram alir dan program untuk up counter yang menghitung secara biner
dari 0000 s/d 1111 (modulus 16). Gunakan LED pada posisi L3 s/d L0 sebagai
unit output atur agar perubahan output counter terjadi tiap 1 detik.
2. sama seperti no.1 tapi gunakan L7 s/d L4 sebagai output unit.
LABEL MNEMONICSL1 MVI A, 00L2 OUT 50
LXI DE, 03E8CALL FFAINR AMVI A, 10JNZ L2JMP L1
LABEL MNEMONICSL1 MVI B, 00L2 MOV A,B
ADD AADD AADD AADD AOUT 50LXI DE, 03E8CALL FFAINR BMVI A, 10CMP BJNZ L2JMP L1
3. Buat diagram alir dan program modulus 10 yang menghitung dari 0 ke 9. Atur
outputnya yang berubah 1 detik. Gunakan LED dan terminal monitor sebagai
output unit.
4. Buatlah program untuk menampilkan huruf A pada semua 7 segmen.
LABEL MNEMONICSL1 MVI B, 00L2 MOV A, B
OUT 50ADI 30MOV C, ACALL FEELXI DE, 03E8CALL FFAMVI C, 15CALL FEEINR BMOV A, BCPI 0AJNZ L2JMP L1
LABEL MNEMONICSL1 LXI HL, A207L2 MVI A, 77
OUT 40MOV A, MOUT 42LXI DE, 0002CALL FFADCR LJP L2JMP L1
5. Buatlah program untuk menampilkan angka 0 sampai 7. Setiap angka hanya
ditampilkan oleh satu 7 segmen.
6. Sama seperti no.5 tetapi setelah 4 detik mati semua.
LABEL MNEMONICSL1 LXI HL, A207L2 MOV A, M
OUT 42MVI H, B2MOV A, M OUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L2JMP L1
LABEL MNEMONICSMVI B, F0
L1 LXI HL, A207L2 MOV A, M
OUT 42MVI H, B2MOV A, MOUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L2DCR BJNZ L1MVI A, 00OUT 40RST 1
L1
L2
7. Sama seperti no.5 tetapi setelah 7 detik mati
semua.
LABEL MNEMONICSMVI C, 07
L1 MVI B, 3CL2 LXI HL, A207L3 MOV A, M
OUT 42MVI B, B2MOV A, MOUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L3DCR BJNZ L2DCR CJNZ L1MVI A, 00OUT 40RST 1
L1
L2
8. Buat flow chart seperti no.5 atur agar display
berkedip 3 kali per detik.
LABEL MNEMONICSMVI C, 15
L1 MVI B, 0AL2 LXI HL, A207L3 MOV A, M
OUT 42MVI H, B2MOV A, MOUT 40MVI H, A2LXI DE, 0002CALL FFADCR LJP L3DCR BJNZ L2MVI A, 00OUT 40LXI DE, 00A6CALL FFADCR CJNZ L1RST 1
L3
L1
L2
9. Buat program untuk up counter modulus 21 yang menghitung mulai dari 0 s/d
20 secara berulang dengan selang waktu ½ detik. Tampilkan output counter
pada unit peraga 7 segmen.
L3
LABEL MNEMONICSL1 MVI H, D0
MVI B, 00L2 MVI C, 1EL3 MOV A, B
ANI F0RRCRRCRRCRRCMOV L, AMOV A, MOUT 40MVI A, 90OUT 42LXI DE, 0008CALL FFAMOV A, BANI 0FMOV L, AMOV A, MOUT 40MVI A, 80OUT 42LXI DE, 0008CALL FFADCR CJNZ L3MOV A, BADI 01DAAMOV B, ACPI 21JNZ L2JMP L1
L1
L2
Unit peraga 7 segmen
2.12ADC dan DAC
Salah satu komponen penting dalam sistem akuisisi data adalah pengubah
besaran analog ke digital atau disebut juga ADC (Analog to Digital Converter).
Pengubah ini akan mengubah besaran-besaran analog menjadi bilangan-bilangan
digital sehingga bisa diproses dengan komputer. IC ADC 0804 dianggap dapat
L3
memenuhi kebutuhan dari rangkaian yang akan dibuat. IC jenis ini bekerja secara
cermat dengan menambahkan sedikit komponen sesuai dengan spesifikasi yang
harus diberikan dan dapat mengkonversikan secara cepat suatu masukan tegangan
Hal-hal yang juga perlu diperhatikan dalam penggunaan ADC ini adalah
tegangan maksimum yang dapat dikonversikan oleh ADC dari rangkaian
pengkondisi sinyal, resolusi, pewaktu eksternal ADC, tipe keluaran, ketepatan dan
waktu konversinya.
Beberapa karakteristik penting ADC :
1. Waktu konversi
2. Resolusi
3. Ketidaklinieran
4. Akurasi
Contoh aplikasi ADC ini bisa kita lihat misalnya pada voltmeter digital,
sampling suara dengan komputer, sehingga suara dapat disimpan secara digital
dalam disket, dan kamera digital.
Konsep pengubah analog ke digital ini adalah sampling (mengambil contoh
dalam waktu tertentu) kemudian mewakilinya dengan bilangan digital dengan
batas yang sudah diberikan.
Ada banyak cara yang dapat digunakan untuk mengubah sinyal analog
menjadi sinyal digital yang nilainya proposional. Jenis ADC yang biasa
digunakan dalam perancangan adalah jenis successive approximation convertion
atau pendekatan bertingkat yang memiliki waktu konversi jauh lebih singkat dan
tidak tergantung pada nilai masukan analognya atau sinyal yang akan diubah.
Dalam Gambar 1. memperlihatkan diagram blok ADC tersebut.
Secara singkat prinsip kerja dari konverter A/D adalah semua bit-bit diset
kemudian diuji, dan bilamana perlu sesuai dengan kondisi yang telah ditentukan.
Dengan rangkaian yang paling cepat, konversi akan diselesaikan sesudah 8 clock,
dan keluaran D/A merupakan nilai analog yang ekivalen dengan nilai register
SAR.
Apabila konversi telah dilaksanakan, rangkaian kembali mengirim sinyal
selesai konversi yang berlogika rendah. Sisi turun sinyal ini akan menghasilkan
data digital yang ekivalen ke dalam register buffer. Dengan demikian, keluaran
digital akan tetap tersimpan sekalipun akan di mulai siklus konversi yang baru.
IC ADC 0804 mempunyai dua masukan analog, Vin (+) dan Vin (-),
sehingga dapat menerima masukan diferensial. Masukan analog sebenarnya (Vin)
sama dengan selisih antara tegangan-tegangan yang dihubungkan dengan ke dua
pin masukan yaitu Vin = Vin (+) – Vin (-). Kalau masukan analog berupa
tegangan tunggal, tegangan ini harus dihubungkan dengan Vin (+), sedangkan Vin
(-) digroundkan.
Untuk operasi normal, ADC 0804 menggunakan Vcc = +5 Volt sebagai
tegangan referensi. Dalam hal ini jangkauan masukan analog mulai dari 0 Volt
sampai 5 Volt (skala penuh), karena IC ini adalah SAC 8-bit, resolusinya akan
sama dengan (n menyatakan jumlah bit keluaran biner IC analog to digital
converter)
IC ADC 0804 memiliki generator clock intenal yang harus diaktifkan dengan
menghubungkan sebuah resistor eksternal (R) antara pin CLK OUT dan CLK IN
serta sebuah kapasitor eksternal (C) antara CLK IN dan ground digital
Untuk sinyal clock ini dapat juga digunakan sinyal eksternal yang
dihubungkan ke pin CLK IN. ADC 0804 memilik 8 keluaran digital sehingga
dapat langsung dihubungkan dengan saluran data mikrokomputer. Masukan (chip
select, aktif rendah) digunakan untuk mengaktifkan ADC 0804. Jika berlogika
tinggi, ADC 0804 tidak aktif (disable) dan semua keluaran berada dalam keadaan
impedansi tinggi. Masukan (write atau start convertion) digunakan untuk memulai
proses konversi.
Untuk itu harus diberi pulsa logika 0. Sedangkan keluaran (interrupt atauend
of convertion) menyatakan akhir konversi. Pada saat dimulai konversi, akan
berubah ke logika 1.
Di akhir konversi akan kembali ke logika 0.
Mode Operasi ADC0804
1. Mode Opersi Kontinyu
Agar ADC0804 dapat dioperasikan pada mode operasi kontinyu (proses
membaca terus menerus dan tanpa proses operasi jabat tangan), maka penyemat
CS dan RD ditanahkan, sedangkan penyemat WR dan INTR tidak dihubungkan
kemanapun. Prinsip kerja operasi kontinyu ini yaitu ADC akan memulai konversi
ketika INTR kembali tidak aktif (logika ‘1’). Setelah proses konversi selesai,
INTR akan aktif (logika ‘0’). Untuk memulai konversi pertama kali WR harus
ditanahkan terlebih dahulu, hal ini digunakan untuk mereset SAR. Namun pada
konversi berikutnya untuk mereset SAR dapat menggunakan sinyal INTR saat
aktif (logika ‘0’) dan mulai konversi saat tidak aktif (logika ‘1’).’
Ketika selesai konversi data hasil konversi akan dikeluarkan secara langsung
dari buffer untuk dibaca karena RD ditanahkan. Saat sinyal INTR aktif, sinyal ini
digunakan untuk me-reset SAR. Saat INTR kembali tidak aktif (logika ‘1’) proses
konversi dimulai kembali
2. Mode Operasi Hand-Shaking
ADC0804 dioperasikan pada mode hand shaking . Agar ADC dapat bekerja,
CS harus berlogika ‘0’. Ketika WR berlogika ‘0’, register SAR akan direset,
sedangkan ketika sinyal WR kembali ‘1’, maka proses konversi segera dimulai.
Selama konversi sedang berlangsung, sinyal INTR akan tidak aktif (berlogika
‘1’), sedangkan saat konversi selesai ditandai dengan aktifnya sinyal INTR
(logika ‘0’).
Setelah proses konversi selesai data hasil konversi tetap tertahan pada buffer
ADC. Data hasil konversi tersebut akan dikeluarkan dengan mengirim sinyal RD
berlogika ‘0’. Setelah adanya sinyal sinyal RD ini, maka sinyal INTR kembali
tidak aktif.
Rancangan Pengubah Analog ke Digital
Sebenarnya rangkaian pengubah analog ke digital dapat dibuat dengan
memakai komponen-komponen lepasan, akan tetapi ini akan memakan tempat dan
kelinierannya pun tidak bagus. Karena itu dipilih pengubah dalam bentuk IC
(Integrated Circuit) yang sudah ada dipasaran. Dari berbagai buku data ternyata
didapatkan komponen dengan tipe ADC0804. Komponen ini memakai metode
pendekatan berturutan dan hanya memerlukan sedikit komponen luar.Gambar di
bawah adalah contoh dari IC pengkonversi dari analog ke digital :.
Analog to digital converter (ADC) dan digital to analog converter (DAC)
terbagi menjadi 2 jenis, yaitu :
1.Monopolar, bilangan yang digunakan adalah bilang biner murni (tak
bertanda)
2. Bipolar, bilangan yang digunakan adalah bilang biner K’2 (bertanda)
Contoh :
Pada ADC 9 bit monopolar, besar tegangan referensi yang digunakan adalah
+10V. Tentukan :
a) Jumlah step yang tersediab) Besar tegangan per stepc) Kombinasi output ADC jika pada inputnya diberikan tegangan input
analog seperti pada tabel Jawab :
a) Jml step = (29 – 1) = 511 step.
b) Teg/step = = = 19.75mV.
c) Tabel kombinasi output ADC =
Teg Input Output ADC
3.52 0 1 0 1 1 0 0 1 1
4.7 0 1 1 1 1 0 0 0 0
8.0 1 1 0 0 1 1 0 0 0
10.0 1 1 1 1 1 1 1 1 1
2.4 0 0 1 1 1 1 0 1 0
0 0 0 0 0 0 0 0 0 0
5.8 1 0 0 1 0 1 0 0 0
Contoh 2 :
Pada ADC 8 bit bipolar, besar tegangan referensi yang digunakan adalah Vref (+)
= +10V & Vref (-) = -10V. Tentukan :
d) Jumlah step yang tersedia
e) Besar tegangan per step
f) Kombinasi output ADC jika pada inputnya diberikan tegangan input
analog seperti pada tabel 2
Jawab :
d) Jml step = (28 – 1) = 255 step.
e) Teg/step (+)= = = 78.74mV.
Teg/step (-) = = = 78.125mV.
f) Tabel kombinasi output ADC =
Vin (V) Output ADC
-3.52 1 1 0 1 0 0 1 1
-4.7 1 1 0 0 0 1 0 0
+8.0 0 1 1 0 0 1 0 1
-10.0 1 0 0 0 0 0 0 0
+2.4 0 0 0 1 1 1 1 0
0 0 0 0 0 0 0 0 0
+5.8 0 1 0 0 1 0 0 1
Contoh 3 :
Pada DAC 8 bit bipolar, besar tegangan referensi yang digunakan adalah Vref (+)
= +10V & Vref (-) = -10V. Tentukan :
g) Jumlah step yang tersedia
h) Besar tegangan per step
i) Kombinasi output ADC jika pada inputnya diberikan tegangan input
analog seperti pada tabel 3
Jawab :
g) Jml step = (28 – 1) = 255 step.
h) Teg/step (+)= = = 78.74mV.
Teg/step (-) = = = 78.125mV.
i) Besar tegangan output DAC =
Input DAC Vo (V)
0 0 1 0 1 1 0 1 +3.5
1 0 1 0 1 1 0 1 -6.5
1 1 1 1 1 0 0 0 -0.625
0 0 1 1 1 0 1 0 +4.56
0 1 0 1 0 1 0 1 +6.69
1 0 1 0 1 0 1 0 -6.72
1 1 0 0 1 1 0 0 -4.06
PEMROGRAMAN ADC / DAC PADA TRAINER MIDICOM
Contoh1 :
Buat program untuk membangkitkan pulsa digital seperti pada gambar berikut!
1.
Jawab :
Jika Vo DAC = 0V, maka kombinasi inputnya = 0000 0000(2)
Jika Vo DAC = 6V, maka kombinas inputnya = 4B(16) = 0100 1011(2)
Port # 50 = DAC
Port #51 = ADC
Program :
LABEL MNEMOMICS
MVI A,A2
OUT 53
MVI A,08
OUT 53
MVI A,04
OUT 52
L1 MVI A,00
OUT 50
LXI D,0005
CALL FFA
MVI A,4B
OUT 50
LXI D,0010
CALL FFA
JMP L1
2.
Jika Vo DAC = 0V, maka kombinasi inputnya = 0000 0000(2)
Jika Vo DAC = +6V, maka kombinas inputnya = 4B(16) = 0100 1011(2)
Jika Vo DAC = - 6V, maka kombinas inputnya = B5(16) = 1011 0101(2)
Port # 50 = DAC
Port #51 = ADC
Arah Horizontal
Jumlah step dari -6 s.d +6 V = 150 step
Arah Vertikal
Flowchart
Delay X
Delay X = Delay Y
2.13 KEYBOARD READING
Pada trainer MIDICOM telah disediakan subrutin-subrutin siap pakai ;
diantaranya adalah subrutin untuk membaca tombol/karakter keyboard yang kita
tekan. Keyboard yang digunakan adalah ASCII keyboard. Alamat awal dari
subrutin untuk membaca tombol keyboard tersebut adalah : $0FF1. Register C
dipilih sebagai register output yang akan diisi dengan kode ASCII dari tombol
keyboard yang ditekan (diaktifkan).
A.keyboard reading
Contoh penggunaan subrutin :
Tulis program sbb : CALL FF1
RST 1
Eksekusi program di atas, tekan tombol A.
Periksa isi register C !
Berikut ini adalah kode ASCII untuk beberapa karakter, sbb :
Karakter Kode ASCII Karakter Kode ASCII
A 41 a 61
B 42 b 62
C 43 c 63
D 44 d 64
E 45 e 65
F 46 f 66
G 47 g 67
H 48 h 68
I 49 i 69
J 4A j 6A
K 4B k 6B
L 4C l 6C
M 4D m 6D
N 4E n 6E
O 4F o 6F
P 50 p 70
Q 51 q 71
R 52 r 72
S 53 s 73
T 54 t 74
U 55 u 75
V 56 v 76
W 57 w 77
X 58 x 78
Y 59 y 79
Z 5A z 7A
Karakter Kode ASCII Karakter Kode ASCII
0 30 5 35
1 31 6 36
2 32 7 37
3 33 8 38
4 34 9 39
Karakter Kode ASCII Karakter Kode ASCII
! 21 ( 28
“ 22 ) 29
# 23 * 2A
$ 24 + 2B
% 25 < 2C
& 26 > 2D
^ 27 / 2F
: 3A [ 5B
; 3B ] 5D
, 3C { 7B
. 3D } 7D
? 3F backspace 08
@ 40 space bar 20
B.Menulis karakter –karakter pada terminal monitor
1. Tulis program ini :
8800 MVI C,41
CALL FFE
RST 1
Eksekusi program tersebut !
Amati pada layar monitor apakah karakter ‘A’sudah muncul ?
2. Buat program untuk menampilkan kata “IBU” pada layar !
8800 MVI C,49
CALL FEE
MVI C,42
CALL FEE
MVI C,55
CALL FEE
RST 1
3. untuk menampilkan kata yang panjang buatlah program ini :
8800 CALL FFI
CALL FEE
JMP 9900
RST 1
2.12 KASUS LANJUTAN
Pada Monitor, setiap satu detik ditampilkan 25 frame gambar. Sedangkan
pada unit peraga 7 segmen umumnya untuk mendapatkan tampilan yang baik
tanpa flicker digunakan 60 frame per detik.
1 detik = 60 frame
1 frame = 8 karakter
1 detik = 480 karakter
1 karakter = m detik
Jadi 1 karakter ≈ 2 m detik
Contoh soal:
Rancang rangkaian decoder untuk mengendalikan unit peraga 7 segmen yang ada
pada trainer MIDICOM. Port 40H untuk mengatur pola karakter dan port 41H
untuk memilih posisi karakter. Berikut ini adalah tabel mengenai port bit PB yang
sudah ditentukan dari pembuat MIDICOM tersebut :
PB 7 PB 6 PB 5 PB 4 PB 3 PB 2 PB 1 PB 0
50H 0 1 0 1 0 0 0 0
40H 0 1 0 0 0 0 0 0
10H 1 0 1 0 0 0 0 0
00H 0 0 0 0 0 0 0 0
D0H 1 1 0 1 0 0 0 0
C0H 1 1 0 0 0 0 0 0
90H 1 0 0 1 0 0 0 0
80H 1 0 0 0 0 0 0 0
Jawab :
Pertama kita harus membuat tabel input dan output (output aktif low):
INPUT OUTPUT
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1
0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1
0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1
0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1
1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1
1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1
1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1
1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
Dari tabel input dan output diatas kita dapat membuat input untuk masuk ke
decoder, yaitu :
Input 1 =
Input 2 = PB6
Input 3 = PB4
Sebenarnya port bit bisa dibuat lebih sederhana dari yang sudah ditentukan oleh
perancang MIDICOM, tetapi karena sudah ditentukan seperti itu mau tidak mau
kita harus mengikutinya. Sekarang kita akan mencoba membuat tabel port bit
(PB) yang lebih sederhana dan mudah diingat dari yang sudah ada pada traiSner
MIDICOM. Tabelnya adalah :
PB 7 PB 6 PB 5 PB 4 PB 3 PB 2 PB 1 PB 0
07H 0 0 0 0 0 1 1 1
06H 0 0 0 0 0 1 1 0
05H 0 0 0 0 0 1 0 1
04H 0 0 0 0 0 1 0 0
03H 0 0 0 0 0 0 1 1
02H 0 0 0 0 0 0 1 0
01H 0 0 0 0 0 0 0 1
00H 0 0 0 0 0 0 0 0
Sedangkan tabel input dan outputnya adalah :
INPUT OUTPUT
PB
7
PB6 PB5 PB4 PB3 PB2 PB1 PB0 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1
0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1
0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1
0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1
0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1
0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1
0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0
Dari tabel diatas kita dapat membuat rangkaian untuk input decoder yaitu :
Input 1 = PB2
Input 2 = PB1
Input 3 = PB0
Materi berikutnya adalah tentang menampilkan huruf (karakter) pada 7
segmen yang ada pada trainer MIDICOM dengan membuat program untuk
menampilkannya. Untuk lebih jelasnya kita langsung masuk ke contoh soal :
1. a. Rancang suatu program untuk menampilkan kata “ S E L A S A “ pada
unit peraga 7-segmen yang ada pada trainer MIDICOM.
b. Seperti no.1 tetapi hanya muncul selama 0,5 detik kemudian stop
2. Seperti no.1 tetapi dengan berkedip 2 kali per detik.
3. Seperti no.2 tetapi hanya yampil selama 5 detik saja kemudian stop.
4. Seperti no.3 tetapi yang berkedip hanya huruf awal dan huruf akhirnya
saja (huruf S dan huruf A terakhir saja yang berkedip).
Jawab :
1. Sebelum mengerjakan soal ini, kita harus memahami dulu bahwa
sebenarnya huruf-huruf diatas tidak tampil atau keluar bersama-sama
tetapi keluar secara bergantian, tetapi karena waktu yang sangat cepat
sehingga mata kita memandangnya seolah-olah secara bersamaan.
D7 D6 D5 D4 D3 D2 D1 D0
- S E L A S A -
Sekarang kita misalkan, port yang sudah ditentukan untuk trainer
MIDICOM diletakkan pada alamat A000H s.d. A007H dan pola
karakternya diletakkan pada alamat B000H s.d. B007H.
A000H 50 B000H 00
A001H 40 B001H 6D
A002H 10 B002H 79
A003H 00 B003H 38
A004H D0 B004H 77
A005H C0 B005H 6D
A006H 90 B006H 77
A007H 80 B007H 00
Bagan alir untuk soal no.1a:
Program untuk soal no.1a:
LOOP 1 : LXI H,A007
LOOP 2 : MOV A,M
MOV PORT#41,A
MVI B,0
MOV PORT4#0,A
MVI D,E2
CALL FFA
MVI H,A0
DCR L
JP LOOP 2
JMP LOOP 1
RST 1
Soal no.1b, seperti soal no.1a tetapi hanya muncul 0,5 detik, untuk itulah kita
perlu mengurangi jumlah frame menjadi setengahnya yaitu dari 60 frame menjadi
30 frame heksadesimal yang ditulis dengan 1E
Dari bagan alir dapat kita lihat adanya clear display sebelum stop karena muncul
0,5 detik dan setelah itu mati.
Bagan alir Program :
MVI C,1E
LOOP 1 : LXI H,A007
LOOP 2 : MOV A,M
MOV PORT#41,A
MVI H,B0
MOV A,M
MOV PORT#40,A
MVI DE,2
CALL FFA
MVI H,A0
DCR L
JP LOOP 2
DCR C
JNZ LOOP 1
MVI A,00
MOV PORT#40,A
RST 1
2. Agar karakter yang ditampilkan dari soal no.1a berkedip 2 kali per
detik, kita harus membuat karakter itu muncul selama seperempat
detik, kemudian tidak muncul selama seperempat detik berikutnya dst.
Untuk itulah frame harus dibuat dari 60 yaitu sebesar 15
heksadesimal atau 0F.
Bagan alir :
Program :
LOOP 1 : MVI C,0F
LOOP 2 : LXI H,A007
LOOP 3 : MOV A,M
MOV PORT#41,A
MVI H,B0
MOV A,M
MOV PORT#40,A
MVI DE,2
CALL FFA
MVI H,A0
DCR L
JP LOOP 3
DCR C
JNZ LOOP 2
DELAY DETIK
JMP LOOP 1
3 . Soal no.3 berhubungan dengan soal no.2, kalau no.2 berkedip dua kali
dalam satu detik secara terus menerus, sedangkan pada no.3 berkedip
dua kali dalam satu detik tetapi selama 5 detik saja. Untuk soal seperti
ini kita membuat program seperti pada no.2 dan ditambah dengan
menambahkan counter agar muncul selama 5 detik saja. Karena kita
sudah membuat untuk program selama detik, yaitu pada detik
saat muncul dan detik saat tak muncul maka counter yang
digunakan 10 heksadesimal atau ditulis A agar setelah 5 detik program
berhenti.
Flowchart :
MVI B,AH
LOOP 1 : MVI C,0F
LOOP 2 : LXI H,A00F
LOOP 3 : MOV A,M
MOV PORT#41,A
MVI H,B0
MOV A,M
MOV PORT#40,A
MVI DE,2
CALL FFA
MVI H,A0
DCR L
JP LOOP 3
DCR C
JNZ LOOP 2
MVI A,00
MOV PORT#40,A
DELAY DETIK
DCR B
JNZ LOOP 1
RST 1
3. Untuk soal no.4 kita harus menambah unit memori untuk
menempatkan pola karakter yang baru. Seperti telah diketahui
sebelumnya, pada alamat memori B000 s.d..B007 ditempatkan untuk
menampilkan karakter SELASA dan supaya huruf S dan huruf A yang
terakhir terlihat berkedip maka pada detik berikutnya “karena soal
ini berhubungan dengan soal no.3” karakter yang ditampilkan adalah
ELAS dan detik berikutnya kembali lagi ke SELASA dst selama 5
detik. Misal , untuk menempatkan karakter yang baru ditempatkan
pada alamat memori C000 s.d. C007, lihat gambar berikut :
Program :
MVI
B,AH
LOOP 1 : MVI C,0F
LOOP 2 : LXI H,A00F
LOOP 3 : MOV A,M
MOV PORT#41,A
MVI H,B0
MOV A,M
MOV PORT#40,A
MVI DE,2
CALL FFA
MVI H,A0
DCR L
JP LOOP 3
DCR C
JNZ LOOP 2
MVI C,0F
LOOP 4: LXI H,A00F
LOOP 6: MOV A,M
MOV PORT#41,A
MVI H,B0
MOV A,M
MOV PORT#40,A
MVI DE,4
CALL FFA
MVI H,A0
DCR L
C000
C001
C002
C003
C004
C005
C006
C007
00
00
79
38
77
6D
00
00
JP LOOP 6
DCR C
JNZ LOOP 4
DCR B
JNZ LOOP 1
BAB 3
PROGRAMMABLE PERIPHERAL
INTERFACE
( PPI )
3.1 PPI 8255 (PROGRAMMABLE PERIPHERAL INTERFACE)
Dalam perancangan sistem, seringkali kita menggunakan komputer sebagai
alat pengontrol terhadap sistem yang kita buat. Komunikasi antara komputer
dengan alat yang
dikontrol dijembatani oleh suatu rangkaian yang disebut dengan rangkaian
antarmuka. Rangkaian antarmuka yang banyak digunakan dan banyak terdapat di
pasaran adalah kartu antarmuka yang menggunakan IC PPI 8255.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.
D7 ¡V D0 RESET INPUT
RESET CHIP SELECT
CS READ INPUT
RD WRITE INPUT
WR PORT ADDRESS
A0 ¡V A1 PORT A (BIT)
PA 7 PA 0 PORT B (BIT)
PB 7 PB 0 PORT C (BIT)
Vcc 5 VOLTS
GND 0 VOLTS
Konfigurasi dari 24 jalur I/O ini bisa digunakan untuk masukan, keluaran,
ataupun biderectional ( 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 )
CS harus dibuat rendah pada saat pembacaan atau penulisan pada PPI ini.
Sinyal reset bila aktif akan membersihkan seluruh register internal PPI dan
membuat PPI berfungsi dalam mode masukan ( mode input ). 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
berlogic 1. Tabel operasi 8255 adalah sebagai berikut :
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
3.2 PERANTARAAN PPI 8255
Misalnya kita akan menyimpan alamat I/O PPI pada alamat 300H s/d 303H.
Maka pengaturan port-portnya adalah sebagai berikut : Port A = 300H; Port B =
301H; Port C = 302H dan Control Word = 303H Untuk mengirim data ke port A
yang telah diprogram sebagai port keluaran dapat digunakan instruksi :
MOV DX, 300H
MOV AL, data_out
OUT DX,AL
Sedangkan bila telah diprogram sebagai masukan, untuk membaca data dari
port A dapat dilakukan dengan instruksi berikut ini:
MOV DX,300H
IN AL,DX
Hal yang sama juga dapat digunakan untuk port B dengan alamat 301H dan
port C dengan alamat 302H. Mengenai register dari mikroprosesor yang
digunakan untuk tempat menyimpan alamat dan data terserah pemogram, asalkan
register tersebut sesuai dengan operasi yang akan dilakukan.
Ada tiga mode utama yang dapat diprogramkan ke PPI, yaitu :
1. Mode 0
Mode 0 adalah mode operasi masukan dan keluaran yang paling sederhana
(basic input/ output operation). Pada mode ini tiap port pada PPI hanya dapat
digunakan sebagai masukan atau keluaran.
Dalam mode 0, 24 jalur I/O dibagi menjadi 2 group (lihat gambar 2.6), yaitu
group A dan group B. Group A terdiri dari 8 jalur port A dan 4 jalur port C upper.
Group B terdiri dari 8 jalur port B dan 4 jalur port C lower2.
2. Mode 1
Mode 1 adalah mode operasi masukan dan keluaran yang terkontrol (strobed
input/output operation). Pada mode ini port A dan port B dapat digunakan
sebagai masukan atau keluaran, tergantung kontrol dari port C.
Dalam mode 1, PPI hanya menggunakan dua buah port yaitu port A dan port
B. Untuk operasi masukan atau keluaran, masing-masing port mentransfer data
bersamaan dengan adanya Strobe atau sinyal Handshaking. Port A dan Port B
menggunakan semua bit dari port C.
3. Mode 2
Mode 2 adalah mode operasi masukan dan keluaran secara dua arah
(bidirectional input/output operation). Pada mode ini, port A sebagai bus data dua
arah yang dikontrol oleh port C.
Dalam mode ini hanya port A yang dapat digunakan, namun operasi yang
dilakukan dapat dua arah ( biderectional ) dengan data yang berbeda untuk setiap
operasi tulis atau operasi baca.
Mode 1 dan 2 adalah mode operasi yang memerlukan sinyal kontrol
input/output atau handshaking signal (sinyal jabat tangan) yaitu sinyal yang
menyatakan kesiapan alat untuk dikenai proses baca atau tulis. Gambaran mode
operasi pada PPI 8255 dapat dilihat dalam Gambar 3.
Gambar 3. Mode Operasi PPI 8255,
a). mode 0, b), mode 1, c). mode 2.
Diantara ketiga mode operasi di atas, mode 0 adalah mode yang paling
sering digunakan karena kemudahannya. Dengan mode 0, perangkat lunak tidak
perlu membaca data port kontrol secara terus menerus untuk menentukan proses
baca/tulis terhadap alat. Kapanpun kita ingin membaca atau menulis data pada
port dapat langsung dilakukan saat itu juga
Gambar dibawah ini memperlihatkan dua buah group kontrol port, yaitu
group A dan group B.
Kontrol group A mengontrol mode transfer data (dari atau ke) 8 bit port A
dan 4 bit dari port C upper. Sedangkan kontrol group B mengontrol mode transfer
data (dari atau ke) 8 bit port B dan 4 bit dari port C lower. Kontrol data yang
dituliskan dari kontrol register akan menentukan karakteristik pengoperasian PPI.
Pada gambar tersebut terlihat D5-D7 digunakan untuk mengontrol grup B.
D7 menentukan port C lower (PC0-PC3), logic1 diprogram untuk masukan
sedangkan logic 0 diprogram sebagai keluaran. D6 menentukan port B (PB0-
PB7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai
keluaran.
D5 digunakan untuk memilih mode port B yang diinginkan, yakni mode 0
atau mode 1. D1 sampai D4 digunakan untuk mengontrol grup A. D4 menentukan
port C upper (PC4-PC7), logic 1 diprogram sebagai masukan dan logic 0
dipogram sebagai keluaran. D3 menentukan port A (PA0-PA7), logic1 diprogram
untuk masukan sedangkan logic 0 diprogram sebagai keluaran.
Sedangkan D1 dan D2 akan menentukan mode untuk group A; bila 00
berarti modus 0, bila 01 berarti modus 1, dan bila 1X berarti modus 2. Modus 0
dinamakan simple input/output. Bila diprogram sebagai keluaran, data yang ada di
port keluaran akan ditahan, sedangkan bila diprogram sebagai port masukan,
masukan ini tidak ditahan. Sedangkan D0 adalah modus set flag. D0 ini harus
selalu berlogic 1 agar PPI dapat beroperasi.
Contoh soal :
Rancang suatu memory decoder dengan IC decoder untuk menghubungkan
suatu prosesor yang memiliki 24 saluran alamat dengan unit memory yang ada
:
EPROM I 16 Kbyte EPROM II 16 Kbyte RAM I 16 Kbyte RAM II 16 Kbyte
Input chip select dari semua IC memory adalah “ aktif Low “ .
Jawab;
Mencari input yang digunakan :
FPB dari 64 dan 16 =>16 maka ada 4 kelompok sehingga jumlah bit yang
digunakan 2 byte
Maka input yang digunakan : A14 , A15
Memory Map Alamat : 00000 - 03FFF
Alamat : 04000 - 07FFF
EPROM
16 Kb
EPROM
16 Kb
RAM
16 Kb
RAM
16 Kb
Kosong
Don’t care
Alamat : 08000 - 0BFFF
Alamat : 0C000 - 0FFFF
Alamat : 10000 - FFFFF
Tabel Kebenaran :
Input OutputA15 A14 Cs0 Cs1 Cs2 Cs3
0 0 0 1 1 10 1 1 0 1 11 0 1 1 0 11 1 1 1 1 0
Rangkaian Decoder :
BAB 4
TRAINER MIDICOM
Untuk melakukan percobaan – percobaan mikroprosesor diperlukan suatu
trainer mikroprosesor yang mudah dioperasikan dan fungsinya dapat
A14
MIKROPROSESOR
A15
EPROM I RAM IIRAM IEPROM II
dikembangkan sesuai dengan kemampuan pemrogram. Trainer yang digunakan
yaitu trainer MIDICOM yang berbasis mikroprosesr INTEL 8085.
Trainer MIDICOM dipilih karena alasan-alasan berikut :
# Struktur organisasinya mudah dipelajari
# Diagram blok untuk sistem mikroprosesor ini sesuai dengan tata letak
komponen pada board
# Dirancang khusus untuk keperluan di pendidikan
# Trainer tersebut telah dilengkapi dengan fasilitas input /output, seperti
monitor dan ASCII keyboard sehingga memudahkan proses belajar
# Telah mempunyai fasilitas untuk interfacing dan assembler
Penggunaan mikroprosesor INTEL 8085 pada trainer MIDICOM ini sangat
menguntungkan karena dengan memahami mikroprosesor tersebut akan
mempermudah pemakai untuk mempelajari prosesor-prosesor generasi yang lebih
baru seperti INTEL 8088, INTEL 80286 dan lain- lain
Sebelum kita dapat menggunakan suatu sistem mikroprosesor, maka terlebih
dahulu kita harus mengenal peta memori yang dipakai dalam sistem tersebut.
Karena dengan mengetahui peta memori, kita dapat menempatkan program dan
atau data pada alamat-alamat yang tersedia khusus untuk pemakai. Pada trainer
MIDICOM peta memorinya disusun seperti gambar dibawah ini :
Dari peta memori tersebut kita dapat mengetahui bahwa program monitor
menempati daerah EPROM yang hanya bisa dibaca tetapi tidak bisa ditulis.
Daerah RAM yang menempati alamat 6000h sampai dengan 67FFh dipergunakan
sebagai memori kerja monitor dan selanjutnya mulai alamat 6800h sampai dengan
6FFFh digunakan untuk daerah kerja BASIC. Untuk program dan data,
pemrogram dapat memanfaatkan daerah RAM mulai dari alamat 7000h – FFFFh.
Dalam daerah tersebut dapat saja dimasukkan lebih dari satu program asal saja
penempatannya tidak tumpang tindih. Dengan demikian, program yang akan
dimasukkan data ditempatkan pada alamat-alamat antara 7000h dan FFFFh.
A. Cara menghidupkan trainer MIDICOM
Untuk menghidupkan trainer MIDICOM pertama - tama periksa apakah
kabel penghubung daya telah terpasang dengan benar. Kemudian ubah posisi
saklar yang terletak di sudut kiri atas modul ke posisi ON. Pada saat saklar daya
diubah ke posisi ON unit peraga akan menampilkan :
Ln. 85 3.2
Keterangan :
Ln = menunjukkan pabrik pembuatnya (Lucas Nulle)
85 = menunjukkan jenis prosesor yang dipergunakan (INTEL 8085)
3.2 = menunjukkan versi dari monitor program
Namun, setiap kali tombol RESET ditekan maka unit peraga akan
menampilkan pola yang sama. Pola tersebut akan selalu ditampilkan setiap kali
prosesor memasuki program monitor yang artinya trainer siap menerima instruksi.
B. Melihat dan mengganti isi register
Untuk melihat data yang ada pada suatu register, maka pertama-tama
tekanlah tombol REG, kemudian tekanlah tombol-tombol huruf yang sesuai
dengan nama register yang akan kita lihat. Untuk melihat isi register yang lainnya,
tekanlah tombol + satu kali, maka unit peraga akan menampilkan data yang
berada pada register berikutnya. Dan sebaliknya untuk fungsi tombol - .
Sedangkan untuk mengganti isi suatu register, pertama-tama tekanlan
tombol REG , kemudian register yang kita ingin ubah misalnya A, setelah itu
tekanlah tombol - tombol angka yang sesuai dengan yang diinginkan misalnya
2A.
C. Melihat dan mengubah isi suatu lokasi memori (RAM)
Untuk melihat data yang berada pada suatu lokasi memori baik itu pada
RAM maupun ROM, yaitu dengan menekan tombol MEM . Setelah itu, unit
peraga akan menampilkan 4 digit, yang harus kita isi dengan alamat yanga akan
kita tuju. Setelah diisi alamatnya, tekanlah tombol + untuk menampilkan data
yang berada pada alamat tersebut.
Sedangkan untuk mengubah data yang berada pada alamat memori sama
seperti pada mengganti data pada register.
D. Menyisipkan data ke dalam suatu blok memori
Untuk menyisipkan data pada suatu blok memori tanpa harus mengubah
semua data yang akan disisipkan pada alamat-alamat tertentu. Dapat dilaksanakan
dengan menekan tombol INS (insert), dilanjutkan dengan memasukkan alamat
awal dari kode/data yang akan disisipkan (4 digit). Kemudian tekan tombol +
dilanjutkan dengan memasukkan alamat terakhir dari blok memori yang akan
disisipkan data baru. Setelah selesai tekanlah tombol EX.
Contoh
Masukkan data secara berurutan mulai dari 00h sampai dengan 05h ( data-
data yang harus dimasukkan adalah 00h, 01h, 02h, 03h, 04h dan 05h ) pada blok
memori mulai dari alamat 8000h sampai dengan alamat 8005h, catat hasilnya
pada tabel berikut ini :
Register A B C D PC
Data 9C 5F BE 9C 800A
Sisipkan tiga byte data baru ke dalam blok memori di atas (data yang harus
disisipkan adalah 2Ah, 7Ch dan F2h) pada lokasi mulai alamat 8002h (yaitu
alamat 8002h, 8003h dan 8004h). Tekan tombol berikut :
Keterangan :
# 8002 adalah alamat awal tempat data baru akan disisipkan
# 8005 adalah alamat akhir dari blok memori sebelum data beru
disisipkan
# 2Ah, 7Ch dan F2h adalah data-data baru yang akan disisipkan pada
blok memori alamat 8000h sampai 8005h
E. Menjalankan program
Untuk menjalankan program tekanlah tombol GO, kemudian
masukan alamat awal dari program yang akan dieksekusi. Dan selanjutnya tekan
tombol EX sebagai perintah dimulainya pelaksanaan proses eksekusi tersebut.
Contoh
Untuk melaksanakan program yan dimulai dengan alamat awal 7000h, tombol-
tombol yang harus ditekan adalah :
F. Menggandakan (meng-copy) suatu blok memori
Untuk menggandakan suatu blok memori yang berisikan data atau program
dapat dilakukan dengan menggunakan instruksi copy (CPY).
Setelah kita mengetahui cara kerja dan fungsi yang terdapat pada trainer
MIDICOM, kita dapat membuat program yang kita inginkan.