DAFTAR ISI
1.Teori
2. Rangkaian Simulasi
3. Listing Program
4. Link Download
1. Teori [kembali]
Mikroprosesor 8086
Mikroprosesor atau CPU adalah “otak” yang merupakan pengendali utama
semua operasi dalam sistem komputer. Mikroprosesor mengambil instruksi
biner dari memori, menerjemahkannya menjadi serangkaian aksi dan
menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke
memori, operasi aritmatika dan logika, atau pembangkitan sinyal
kendali. Intel 8086 adalah mikroprosesor 16 bit, di mana dia dapat
bekerja secara internal menggunakan operasi 16 bit dan secara eksternal
dapat mentransfer data 16 bit melalui bus data.
semua operasi dalam sistem komputer. Mikroprosesor mengambil instruksi
biner dari memori, menerjemahkannya menjadi serangkaian aksi dan
menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke
memori, operasi aritmatika dan logika, atau pembangkitan sinyal
kendali. Intel 8086 adalah mikroprosesor 16 bit, di mana dia dapat
bekerja secara internal menggunakan operasi 16 bit dan secara eksternal
dapat mentransfer data 16 bit melalui bus data.
3.1.1 Arsitektur Mikroprosesor 8086
Prosesor 8086 dapat dihubungkan dengan bus alamat yang berukuran 20 bit,
sehingga mampu mengalamati memori maksimal 220 = 1.048.576 byte (1 MB).
Diagram blok arsitektur 8086 dapat dilihat pada Gambar . Mikroprosesor
8086 terbagi atas 2 unit, yaitu unit antarmuka bus (bus interface unit,
BIU) dan unit pengeksekusi (execution unit, EU).
Unit Antarmuka Bus (BIU)
Unit ini merupakan bagian yang berhubungan langsung dengan “pihak luar”:
bus alamat dan bus data. BIU mengirim alamat ke bus alamat, mengambil
instruksi (fetch) dari memori, membaca data dari port dan memori, serta
menulis data ke port dan memori (menangani transfer data antara bus dan
unit eksekusi).
BIU tersusun atas:
1. Instruction Stream Byte Queue (ISBQ).
BIU memfetch instruksi dari memori sebanyak-banyaknya 6 buah instruksi
ke depan. Hal ini dilakukan agar eksekusi progam menjadi lebih cepat.
Instruksi yang sudah diambil ini ditaruh di ISBQ yang berupa 6 buah
register first-in-first-out. BIU dapat melakukan fetching selagi EU
menerjemahkan dan mengeksekusi instruksi yang tidak membutuhkan
penggunaan bus (misalnya operasi matematis menggunakan register
internal). Ketika EU selesai melaksanakan suatu instruksi, maka dia
tinggal mengambil perintah berikutnya di ISBQ, tanpa harus mengirim
alamat ke memori untuk mengambil instruksi berikutnya, sehingga eksekusi
akan lebih cepat. Kegiatan fetching instruksi berikutnya selagi
menjalankan suatu instruksi disebut sebagai: pipelining. Pada
mikroprosesor yang lebih baru, ukuran ISBQ tidak hanya 6 byte tetapi
mencapai 512 byte, ini efektif untuk program yang mempunyai banyak
kalang (struktur program yang berulang).
2. Register segmen.
BIU berisi 4 buah register segmen 16 bit, yaitu: code segment (CS), data
segment (DS), extra segment (ES), dan stack segment (SS). Sistem
komputer 8086 mempunyai bus alamat 20 bit, tetapi ukuran register -
termasuk register alamat (memory address register) – yang dimilikinya
hanya 16 bit, lantas bagaimana cara mengatasinya. Cara pemberian alamat
20 bit dilakukan menggunakan 2 komponen alamat: segmen dan offset, yang
masing-masing berukuran 16 bit. BIU akan menggeser ke kiri nilai segmen
sebanyak 4 bit (mengalikan dengan 16), kemudian menambahkan offset untuk
memperoleh alamat fisik memori yang dikirimkan melalui bus alamat.
Untuk lebih jelasnya, diberi contoh untuk memberi alamat fisik $38AB4( )
3 , segmen dapat diisi dengan angka $348A, dan offset diisi dengan
angka $4214, lihat Gambar. Cara penulisan kombinasi segmen dan offset
adalah:
segment:offset
Sehingga untuk contoh ini, penulisannya adalah $348A:$4214. Perlu
diingat bahwa kita bisa menggunakan kombinasi nilai segmen dan offset
yang bervariasi untuk memberi alamat fisik yang sama, misalnya
$38AB:$0004, $3800:$0AB4, dsb.
Secara umum, suatu program terdiri atas 4 bagian: segmen code yang
berisi instruksi; segmen data, berisi data yang telah dialokasikan
sebelumnya (statik); segmen ekstra, untuk variabel dinamik; serta segmen
stack yang dipakai untuk menyimpan informasi pada saat pemanggilan
subrutin. Informasi segmen disimpan dalam keempat register segmen sesuai
dengan namanya.
3. Instruction Pointer (IP)
, adalah register berisi informasi offset yang bersama-sama CS menunjuk posisi dalam memori di mana instruksi berikutnya berada.
Unit Eksekusi (EU)
Unit ini memberitahu BIU di mana mengambil instruksi dan data,
menerjemahkan kode instruksi, dan menjalankannya. EU tersusun atas:
1. Dekoder instruksi
, yang mengambil urut-urutan instruksi dari ISBQ kemudian menerjemahkannya ke runtutan aksi yang harus dikerjakan oleh EU.
2. Sistem kontrol
, merupakan rangkaian yang mengendalikan kerja mikroprosesor berdasarkan
instruksi yang telah diterjemahkan oleh dekoder instruksi tadi.
3. Arithmetic Logic Unit (ALU)
, yaitu bagian dari mikroprosesor yang dapat melakukan operasi matematis
(misalnya operasi penjumlahan, pengurangan, perkalian, dan pembagian)
dan logika (misalnya operasi AND, OR, XOR, geser, dan rotasi) 16 bit.
4. Register flag (bendera)
, yaitu register flip-flop 16 bit yang menunjukkan kondisi yang
dihasilkan oleh eksekusi suatu operasi oleh EU. Selain itu flag juga
mengatur beberapa operasi tertentu. Terdapat 9 flag dalam register flag
8086, seperti terlihat pada Gambar
Sebanyak 6 buah flag merupakan flag kondisi yang menunjukkan keadaan
setelah eksekusi suatu instruksi, yaitu: Carry Flag (CF), Parity Flag
(PF), Auxiliary Carry Flag (AF), Zero Flag (ZF), Sign Flag (SF), dan
Overflow Flag (OF). Sedangkan, 3 buah flag sisanya berupa flag kontrol
yang mengendalikan operasi tertentu, yaitu: Single Step Trap Flag (TF),
Interrupt Flag (IF), dan String Direction Flag (DF).
5. Register serbaguna
, merupakan register yang dapat digunakan untuk menyimpan data yang akan
diolah atau hasil suatu operasi oleh ALU. Terdiri atas 8 buah register 8
bit, yaitu AH, AL, BH, BL, CH, CL, DH, dan DL. Register-register ini
juga dapat digunakan secara berpasangan sehingga membentuk register 16
bit, yaitu; AX (gabungan dari AH dan AL), BX, CX, dan DX. AX biasanya
digunakan untuk menyimpan hasil operasi, sehingga disebut akumulator. CX
biasanya digunakan untuk pencacah untuk keperluan perulangan/kalang
(loop), sehingga disebut counter. BX dan DX biasanya digunakan sebagai
offset dari alamat data di memori (dengan segmen DS).
6. Register pointer dan indeks
, terdiri atas Stack Pointer (SP), Base Pointer (BP), Source Index (SI),
dan Destination Index (DI). Stack (tumpukan) adalah bagian dari memori
yang digunakan untuk menyimpan informasi alamat program yang
ditinggalkan pada saat terjadi pemanggilan subrutin/subprogram. Demikian
juga apabila subrutin tersebut berupa fungsi yang menggunakan
parameter, maka data parameter akan disimpan pula di stack. Alamat
tumpukan terluar dari stack ditunjuk oleh SS:SP. Sedangkan BP digunakan
sebagai offset yang menunjuk ke parameter-parameter fungsi yang
dipanggil. SI dan DI biasanya digunakan sebagai offset (masing-masing
berpasangan dengan ES dan DS) yang menunjuk ke suatu variabel/data untuk
operasi string (larik data).
sehingga mampu mengalamati memori maksimal 220 = 1.048.576 byte (1 MB).
Diagram blok arsitektur 8086 dapat dilihat pada Gambar . Mikroprosesor
8086 terbagi atas 2 unit, yaitu unit antarmuka bus (bus interface unit,
BIU) dan unit pengeksekusi (execution unit, EU).
Unit Antarmuka Bus (BIU)
Unit ini merupakan bagian yang berhubungan langsung dengan “pihak luar”:
bus alamat dan bus data. BIU mengirim alamat ke bus alamat, mengambil
instruksi (fetch) dari memori, membaca data dari port dan memori, serta
menulis data ke port dan memori (menangani transfer data antara bus dan
unit eksekusi).
BIU tersusun atas:
1. Instruction Stream Byte Queue (ISBQ).
BIU memfetch instruksi dari memori sebanyak-banyaknya 6 buah instruksi
ke depan. Hal ini dilakukan agar eksekusi progam menjadi lebih cepat.
Instruksi yang sudah diambil ini ditaruh di ISBQ yang berupa 6 buah
register first-in-first-out. BIU dapat melakukan fetching selagi EU
menerjemahkan dan mengeksekusi instruksi yang tidak membutuhkan
penggunaan bus (misalnya operasi matematis menggunakan register
internal). Ketika EU selesai melaksanakan suatu instruksi, maka dia
tinggal mengambil perintah berikutnya di ISBQ, tanpa harus mengirim
alamat ke memori untuk mengambil instruksi berikutnya, sehingga eksekusi
akan lebih cepat. Kegiatan fetching instruksi berikutnya selagi
menjalankan suatu instruksi disebut sebagai: pipelining. Pada
mikroprosesor yang lebih baru, ukuran ISBQ tidak hanya 6 byte tetapi
mencapai 512 byte, ini efektif untuk program yang mempunyai banyak
kalang (struktur program yang berulang).
2. Register segmen.
BIU berisi 4 buah register segmen 16 bit, yaitu: code segment (CS), data
segment (DS), extra segment (ES), dan stack segment (SS). Sistem
komputer 8086 mempunyai bus alamat 20 bit, tetapi ukuran register -
termasuk register alamat (memory address register) – yang dimilikinya
hanya 16 bit, lantas bagaimana cara mengatasinya. Cara pemberian alamat
20 bit dilakukan menggunakan 2 komponen alamat: segmen dan offset, yang
masing-masing berukuran 16 bit. BIU akan menggeser ke kiri nilai segmen
sebanyak 4 bit (mengalikan dengan 16), kemudian menambahkan offset untuk
memperoleh alamat fisik memori yang dikirimkan melalui bus alamat.
Untuk lebih jelasnya, diberi contoh untuk memberi alamat fisik $38AB4( )
3 , segmen dapat diisi dengan angka $348A, dan offset diisi dengan
angka $4214, lihat Gambar. Cara penulisan kombinasi segmen dan offset
adalah:
Sehingga untuk contoh ini, penulisannya adalah $348A:$4214. Perlu
diingat bahwa kita bisa menggunakan kombinasi nilai segmen dan offset
yang bervariasi untuk memberi alamat fisik yang sama, misalnya
$38AB:$0004, $3800:$0AB4, dsb.
Secara umum, suatu program terdiri atas 4 bagian: segmen code yang
berisi instruksi; segmen data, berisi data yang telah dialokasikan
sebelumnya (statik); segmen ekstra, untuk variabel dinamik; serta segmen
stack yang dipakai untuk menyimpan informasi pada saat pemanggilan
subrutin. Informasi segmen disimpan dalam keempat register segmen sesuai
dengan namanya.
3. Instruction Pointer (IP)
, adalah register berisi informasi offset yang bersama-sama CS menunjuk posisi dalam memori di mana instruksi berikutnya berada.
Unit Eksekusi (EU)
Unit ini memberitahu BIU di mana mengambil instruksi dan data,
menerjemahkan kode instruksi, dan menjalankannya. EU tersusun atas:
1. Dekoder instruksi
, yang mengambil urut-urutan instruksi dari ISBQ kemudian menerjemahkannya ke runtutan aksi yang harus dikerjakan oleh EU.
2. Sistem kontrol
, merupakan rangkaian yang mengendalikan kerja mikroprosesor berdasarkan
instruksi yang telah diterjemahkan oleh dekoder instruksi tadi.
3. Arithmetic Logic Unit (ALU)
, yaitu bagian dari mikroprosesor yang dapat melakukan operasi matematis
(misalnya operasi penjumlahan, pengurangan, perkalian, dan pembagian)
dan logika (misalnya operasi AND, OR, XOR, geser, dan rotasi) 16 bit.
4. Register flag (bendera)
, yaitu register flip-flop 16 bit yang menunjukkan kondisi yang
dihasilkan oleh eksekusi suatu operasi oleh EU. Selain itu flag juga
mengatur beberapa operasi tertentu. Terdapat 9 flag dalam register flag
8086, seperti terlihat pada Gambar
Sebanyak 6 buah flag merupakan flag kondisi yang menunjukkan keadaan
setelah eksekusi suatu instruksi, yaitu: Carry Flag (CF), Parity Flag
(PF), Auxiliary Carry Flag (AF), Zero Flag (ZF), Sign Flag (SF), dan
Overflow Flag (OF). Sedangkan, 3 buah flag sisanya berupa flag kontrol
yang mengendalikan operasi tertentu, yaitu: Single Step Trap Flag (TF),
Interrupt Flag (IF), dan String Direction Flag (DF).
5. Register serbaguna
, merupakan register yang dapat digunakan untuk menyimpan data yang akan
diolah atau hasil suatu operasi oleh ALU. Terdiri atas 8 buah register 8
bit, yaitu AH, AL, BH, BL, CH, CL, DH, dan DL. Register-register ini
juga dapat digunakan secara berpasangan sehingga membentuk register 16
bit, yaitu; AX (gabungan dari AH dan AL), BX, CX, dan DX. AX biasanya
digunakan untuk menyimpan hasil operasi, sehingga disebut akumulator. CX
biasanya digunakan untuk pencacah untuk keperluan perulangan/kalang
(loop), sehingga disebut counter. BX dan DX biasanya digunakan sebagai
offset dari alamat data di memori (dengan segmen DS).
6. Register pointer dan indeks
, terdiri atas Stack Pointer (SP), Base Pointer (BP), Source Index (SI),
dan Destination Index (DI). Stack (tumpukan) adalah bagian dari memori
yang digunakan untuk menyimpan informasi alamat program yang
ditinggalkan pada saat terjadi pemanggilan subrutin/subprogram. Demikian
juga apabila subrutin tersebut berupa fungsi yang menggunakan
parameter, maka data parameter akan disimpan pula di stack. Alamat
tumpukan terluar dari stack ditunjuk oleh SS:SP. Sedangkan BP digunakan
sebagai offset yang menunjuk ke parameter-parameter fungsi yang
dipanggil. SI dan DI biasanya digunakan sebagai offset (masing-masing
berpasangan dengan ES dan DS) yang menunjuk ke suatu variabel/data untuk
operasi string (larik data).
3.1.2 Bahasa Mesin dan Bahasa Assembly
Instruksi yang difetch dari memori untuk kemudian diseksekusi oleh
mikroprosesor berformat biner (kombinasi angka 0 dan 1), yang disebut
bahasa mesin. Sebagai contoh, perintah untuk memindahkan data dalam
register BX ke register CX adalah 10001011 11001011 ($8B CB), sedangkan
bahasa mesin untuk menjumlahkan data dalam register AL dengan angka 7
adalah 00000100 00000111 ($04 07), dan perintah membaca dari port 5
diberikan dengan 11100100 00000101 ($E4 05).
Seperti terlihat pada ketiga contoh di atas, bahasa mesin tidak mudah
untuk dimengerti dan dihapalkan oleh seorang programer, apalagi jumlah
instruksi yang tersedia berkisar ribuan perintah. Di samping itu, akan
mudah sekali terjadi kesalahan ketika menuliskan angka-angka biner yang
tersusun atas angka 0 dan 1 yang banyak sekali. Oleh karena itu biasanya
kita tidak memprogram komputer langsung dalam bahasa mesin, namun dalam
bahasa assembly.
Dalam bahasa assembly, setiap instruksi diberi kata (mnemonic) yang
sesuai dengan maksud perintah itu, sehingga dapat membantu pemrogram
dalam mengingat instruksi kepada mikroprosesor tersebut. Kata yang
dipakai biasanya berupa singkatan atau beberapa huruf awal dari kata
dalam bahasa Inggris untuk perintah tersebut. Misalnya, mnemonic untuk
perintah penjumlahan adalah ADD, untuk perintah pengurangan adalah SUB
(dari kata subtract), dan untuk memindahkan data( ) 4 dari suatu
register atau memori ke lokasi lain adalah MOV (dari kata move).
Sebagian besar instruksi terdiri atas mnemonic dan operand yang
merupakan parameter dari instruksi tersebut, yang dituliskan di belakang
mnemonic tersebut. Contoh bahasa assembly dari perintah-perintah dengan
bahasa mesin di atas diberikan dalam Tabel
mikroprosesor berformat biner (kombinasi angka 0 dan 1), yang disebut
bahasa mesin. Sebagai contoh, perintah untuk memindahkan data dalam
register BX ke register CX adalah 10001011 11001011 ($8B CB), sedangkan
bahasa mesin untuk menjumlahkan data dalam register AL dengan angka 7
adalah 00000100 00000111 ($04 07), dan perintah membaca dari port 5
diberikan dengan 11100100 00000101 ($E4 05).
Seperti terlihat pada ketiga contoh di atas, bahasa mesin tidak mudah
untuk dimengerti dan dihapalkan oleh seorang programer, apalagi jumlah
instruksi yang tersedia berkisar ribuan perintah. Di samping itu, akan
mudah sekali terjadi kesalahan ketika menuliskan angka-angka biner yang
tersusun atas angka 0 dan 1 yang banyak sekali. Oleh karena itu biasanya
kita tidak memprogram komputer langsung dalam bahasa mesin, namun dalam
bahasa assembly.
Dalam bahasa assembly, setiap instruksi diberi kata (mnemonic) yang
sesuai dengan maksud perintah itu, sehingga dapat membantu pemrogram
dalam mengingat instruksi kepada mikroprosesor tersebut. Kata yang
dipakai biasanya berupa singkatan atau beberapa huruf awal dari kata
dalam bahasa Inggris untuk perintah tersebut. Misalnya, mnemonic untuk
perintah penjumlahan adalah ADD, untuk perintah pengurangan adalah SUB
(dari kata subtract), dan untuk memindahkan data( ) 4 dari suatu
register atau memori ke lokasi lain adalah MOV (dari kata move).
Sebagian besar instruksi terdiri atas mnemonic dan operand yang
merupakan parameter dari instruksi tersebut, yang dituliskan di belakang
mnemonic tersebut. Contoh bahasa assembly dari perintah-perintah dengan
bahasa mesin di atas diberikan dalam Tabel
3.1.3 Pin Diagram Mikroprosessor 8086
Mikroprosesor 8086 mempunyai 40 kaki (pin) yang masing-masing digunakan
untuk melewatkan sinyal tertentu. Setiap pin sinyal diberi nama berupa
mnemonic yang sesuai dengan fungsinya. Sistem komputer 8086 mempunyai
bus data selebar 16 bit dan bus alamat selebar 20 bit, sehingga dapat
mengalamati memori sampai dengan 220 atau 1 Mb. Untuk menghemat jumlah
pin, maka antara pin untuk data dan pin untuk alamat digabungkan dengan
diberi nama AD0-AD15 (dari kata address data), sedangkan 4 bit alamat
sisanya diberi nama A16-A19 (pin-pin ini juga digunakan untuk sinyal
status).
Terdapat juga pin-pin untuk catu daya yang disuplaikan, yaitu VCC dan
GND, masing-masing untuk tegangan catu daya dan pentanahan. Untuk dapat
bekerja, selain membutuhkan catu daya, mikroprosesor 8086 juga
memerlukan sinyal detak (clock) secara eksternal dengan frekuensi sampai
10 MHz. Sinyal clock ini dilewatkan ke pin CLK yang ada pada kaki nomor
19.
Pin-pin lainnya digunakan untuk sinyal kendali. Mikroprosesor 8086 dapat
digunakan dalam 2 mode, minimum dan maksimum, yang masing-masing
menggunakan pin kendali secara berbeda. Mode ini ditentukan dengan
memberi nilai pada pin MXMN/ ( ) 1 , nilai 1 (dihubungkan dengan Vcc)
untuk mode minimum dan nilai 0 (ditanahkan) untuk mode maksimum.
Kebanyakan aplikasi menggunakan mode minimum. Pada mode ini, nama pin
yang dipakai pada kaki nomor 24 sampai dengan 31 adalah yang berada di
dalam tanda kurung (sebelah kanan)
Sinyal RESET digunakan untuk memerintah mikroprosesor agar melakukan
inisialisasi dengan cara memberi nilai 0 pada register DS, SS, ES, IP,
dan flag; serta nilai $FFFF untuk CS( ) 2 . Pin INTR dan NMI digunakan
untuk menginterupsi kerja mikroprosesor. Jika ada sinyal pada kedua pin
itu, maka mikroprossor akan menghentikan eksekusi program yang sedang
dijalankannya, kemudian menjalankan subrutin sesuai yang dikehendaki,
dan setelah selesai kembali ke tempat semula di mana program
diinterupsi. Sinyal INTR (interrupt) berupa permintaan untuk melakukan
interupsi yang dapat dianulir /tidak dipenuhi jika flag IF direset,
sedangkan sinyal NMI (non maskable interrupt) tidak
dapat ditutup/ditolak, artinya interupsi harus dilakukan. Pin INTA
(interrupt acknowledge) digunakan oleh mikroprosesor untuk menjawab
bahwa permintaan interupsi dari sinyal INTR dapat diterima/dijalankan
Pin
IO M/ (memory/IO), RD (read), dan WR (write) digunakan untuk
mengendalikan memori dan port pada saat pemindahan data. Sinyal IO M/
digunakan untuk memilih apakah memori atau port yang akan diakses oleh
mikroprosesor. Jika hendak menghubungi memori, maka mikroprosesor
memberi nilai tinggi (1) pada sinyal ini
dan jika port yang hendak diakses maka sinyal ini diberi nilai rendah
(0). Sinyal RD akan diaktifkan (bernilai rendah) jika operasi yang
dilakukan adalah membaca, yaitu transfer
data dari memori/port ke mikroprosesor. Sementara sinyal WR digunakan
untuk menulis,
tranfer data dari mikroprosesor ke memori/port, jika aktif.
Sinyal-sinyal lain adalah R DT/ (data transmit/receive), DEN (data
enable), ALE (address latch enable), dan BHE (bus high enable) yang akan
dibahas kemudian.
3.2. IC Latch 74273
Untuk menghubungkan address ke memori atau I-O maka diperlukan pemisahan
address rendah yang multiplek dengan data dengan memakai rangkaian
latch. Rangkaian latch akan selalu aktif dengan terhubungnya ke ground
kaki LE maka untuk bekerjanya IC latch ini diperlukan sinyal kontrol
yang di-input-kan ke kaki –OE. Pin -OE mendapat input dari pin ALE yang
merupakan sinyal kontrol yang artinya pin ini akan aktif setiap
mikroprosesor meng-output-kan address.
address rendah yang multiplek dengan data dengan memakai rangkaian
latch. Rangkaian latch akan selalu aktif dengan terhubungnya ke ground
kaki LE maka untuk bekerjanya IC latch ini diperlukan sinyal kontrol
yang di-input-kan ke kaki –OE. Pin -OE mendapat input dari pin ALE yang
merupakan sinyal kontrol yang artinya pin ini akan aktif setiap
mikroprosesor meng-output-kan address.
3.3. IC Decoder 74154
IC 74154 merupakan salah satu keluarga TTL yang dimana fungsi dari IC
ini adalah sebagai dekoder/demultiplexter 4-16 saluran. Tiap decoder
4-saluran-ke 16-saluran monolit ini menerapkan rangkaian TTL untuk
mengubah 4 input biner menjadi 16 jalur keluar, bila kedua input E1 dan
E2 adalah rendah. Setiap komponen I-O harus diberi address. Misalkan,
ada tiga komponen I-O yang yaitu PPI 8255, PIT 8253 dan PIC 8259 seperti
maka untuk membedakannya dapat dibuatkan rangkaian decoder dengan
memakai IC decoder 74154 yang keluarannya ada 16 .
ini adalah sebagai dekoder/demultiplexter 4-16 saluran. Tiap decoder
4-saluran-ke 16-saluran monolit ini menerapkan rangkaian TTL untuk
mengubah 4 input biner menjadi 16 jalur keluar, bila kedua input E1 dan
E2 adalah rendah. Setiap komponen I-O harus diberi address. Misalkan,
ada tiga komponen I-O yang yaitu PPI 8255, PIT 8253 dan PIC 8259 seperti
maka untuk membedakannya dapat dibuatkan rangkaian decoder dengan
memakai IC decoder 74154 yang keluarannya ada 16 .
3.4. PPI (Programmable Pheriperal Interface)
Untuk hubungan input-output, mikroprosesor memerlukan suatu rangkaian
interface. Interface menggunakan IC Programmable Peripheral Interface
(PPI) 8255 yang mempunyai 3 port dengan masing-masing berkapasitas
8-bit. Jika dalam merancang sistem minimum 8088 ternyata memerlukan
interface lebih dari 3 port maka dapat ditambahkan IC PPI 8255 sesuai
kebutuhan dengan menambahkan rangkaian decoder-nya
interface. Interface menggunakan IC Programmable Peripheral Interface
(PPI) 8255 yang mempunyai 3 port dengan masing-masing berkapasitas
8-bit. Jika dalam merancang sistem minimum 8088 ternyata memerlukan
interface lebih dari 3 port maka dapat ditambahkan IC PPI 8255 sesuai
kebutuhan dengan menambahkan rangkaian decoder-nya
3.5. Pengertian LED
Light Emitting Diode atau sering disingkat dengan LED adalah komponen
elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan
tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan
semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung
pada jenis bahan semikonduktor yang dipergunakannya.
elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan
tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan
semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung
pada jenis bahan semikonduktor yang dipergunakannya.
2. Rangkaian Simulasi [kembali]
Prinsip kerja dari rangkaian di atas adalah, ketika diaktifkan,
mikroproseor akan membuat LED bergrak dari kiri ke kanan, kemudian kanan
ke kiri, begitu seterusnya. Prinsipnya, pertama mikrokontroler
mengirimkan alamat untuk mengakses I/O IC 8255 melewati A0-A15, kemudian
masuk ke IC 74273 D0-D7. Alamat tersebut akan dilewatkan dari D0-D7 ke
Q0-Q7 apabila sinyal kontrol alih dikeluarkan oleh pin ALE mikroprosesor
dan diinverterkan sebelum diumpankan ke CLK IC 74273. Apabila telah
aktif sinyal CLK, maka alamat akan ditahan di Q0-Q7 IC 74273. kemudian
jika Q1-Q5 IC 74273 yang membawa alamat dari AD9-AD11 dihubungkan dengan
decoder 74154. maka ketika nilai AD9-AD11 ini berlogika 0 semua dan E1
E1 IC ini juga berlogika 0, maka pin 0 IC 75154 akan berlogika nol yang
kemudian pin ini dihubingkan dengan CS pada IC 8255. sehingga alamat
yang dikirimkan adalah untuk akses IC 8255.<br>
mikroproseor akan membuat LED bergrak dari kiri ke kanan, kemudian kanan
ke kiri, begitu seterusnya. Prinsipnya, pertama mikrokontroler
mengirimkan alamat untuk mengakses I/O IC 8255 melewati A0-A15, kemudian
masuk ke IC 74273 D0-D7. Alamat tersebut akan dilewatkan dari D0-D7 ke
Q0-Q7 apabila sinyal kontrol alih dikeluarkan oleh pin ALE mikroprosesor
dan diinverterkan sebelum diumpankan ke CLK IC 74273. Apabila telah
aktif sinyal CLK, maka alamat akan ditahan di Q0-Q7 IC 74273. kemudian
jika Q1-Q5 IC 74273 yang membawa alamat dari AD9-AD11 dihubungkan dengan
decoder 74154. maka ketika nilai AD9-AD11 ini berlogika 0 semua dan E1
E1 IC ini juga berlogika 0, maka pin 0 IC 75154 akan berlogika nol yang
kemudian pin ini dihubingkan dengan CS pada IC 8255. sehingga alamat
yang dikirimkan adalah untuk akses IC 8255.<br>
Kemudian untuk mengirim data dari Mikroprosesor 8086 ke IC I/O 8255,
pin AD0-AD7 mikroprosesor dihubungkan dengan pin D0-D7 IC 8255. PORTA
IC 8255 menjadi output bagi mikroprosesor untuk kemudian dihubungkan
dengan 4 buah LED yang akan digerakkan dari kiri ke kanan dan kembali
lagi ke kiri dengan settingan program di bawah ini.
pin AD0-AD7 mikroprosesor dihubungkan dengan pin D0-D7 IC 8255. PORTA
IC 8255 menjadi output bagi mikroprosesor untuk kemudian dihubungkan
dengan 4 buah LED yang akan digerakkan dari kiri ke kanan dan kembali
lagi ke kiri dengan settingan program di bawah ini.
3. Listing Program [kembali]
data segment ; inisialisasi data dari I/O 8255
PORTA EQU 00H
PORTB EQU 02H
PORTC EQU 04H
PCW EQU 06H
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
;
mov ax, data ; masukkan data ke AX
mov ds, ax ; masukkan ax ke cs
mov es, ax ; masukkan ax ke es
MOV DX,PCW ; masukkan PWC ke DX
MOV AL,10000010B ; IC I/O Mode 2 PORTA dan C output, PORTB input
OUT DX,AL ; berikan mode ini ke IC I/O
BEGIN:
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00000001B ; Bit untuk LED 1 menyala
KIRI: ; LED Bergerak ke kanan
MOV DX,PORTA ;
OUT DX,AL ; masukkan PORTA ke DX
SHL AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KIRI ; Go to KIRI 3 kali karena cx 3
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00001000B ; Bit untuk LED 4 menyala
KANAN: ; LED Bergerak ke kiri
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Hidupkan LED
SHR AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KANAN ; Go to KANAN 3 kali karena cx 3
JMP BEGIN ; Ulangi proses dari led bergerak ke kanan
delay proc near ; Procedure delay
push cx ; simpan cx
mov cx,2fffh ; isi cx dengan lama delay
loop $ ; looping sampai cx=0
pop cx ; keluarkan kembali cx
ret ; kembali ke program utama
delay endp ; akhir procedure delay
end start
4. Link Download [kembali]
File HTML - Download
File Proteus - Download
File Program - Download
Video Rangkaian - Download
data segment ; inisialisasi data dari I/O 8255
PORTA EQU 00H
PORTB EQU 02H
PORTC EQU 04H
PCW EQU 06H
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
;
mov ax, data ; masukkan data ke AX
mov ds, ax ; masukkan ax ke cs
mov es, ax ; masukkan ax ke es
MOV DX,PCW ; masukkan PWC ke DX
MOV AL,10000010B ; IC I/O Mode 2 PORTA dan C output, PORTB input
OUT DX,AL ; berikan mode ini ke IC I/O
BEGIN:
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00000001B ; Bit untuk LED 1 menyala
KIRI: ; LED Bergerak ke kanan
MOV DX,PORTA ;
OUT DX,AL ; masukkan PORTA ke DX
SHL AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KIRI ; Go to KIRI 3 kali karena cx 3
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00001000B ; Bit untuk LED 4 menyala
KANAN: ; LED Bergerak ke kiri
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Hidupkan LED
SHR AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KANAN ; Go to KANAN 3 kali karena cx 3
JMP BEGIN ; Ulangi proses dari led bergerak ke kanan
delay proc near ; Procedure delay
push cx ; simpan cx
mov cx,2fffh ; isi cx dengan lama delay
loop $ ; looping sampai cx=0
pop cx ; keluarkan kembali cx
ret ; kembali ke program utama
delay endp ; akhir procedure delay
end start
4. Link Download [kembali]
File HTML - Download
File Proteus - Download
File Program - Download
Video Rangkaian - Download
0 komentar:
Posting Komentar