BAHAN KULIAH MIKROPROSESOR & TEKNIK MIKROKOMPUTER
Oleh : M.Eng. Firmansyah David
Jurusan Teknik Elektro Institut Teknologi Padang Semester Genap
Materi Kuliah dan Jadwal 1. Pendahuluan Pertemuan ke 1 2. Dasar Mikroprosessor Pertemuan ke 2 & 3 3. Bagian dan cara kerja Mikroprosessor Pertemuan ke 4 & 5 4. Mikroprosessor 8 bit Pertemuan ke 6 & 7 5. Perencanaan Hardware Pertemuan ke 8 & 9 6. Analog Digital Converter (ADC) Pertemuan ke 10 7. Ujian Tengah Semester (UTS) 8. Digital Analog Converter (DAC) Pertemuan ke 11 9. Aplikasi Sistem Mikroprosessor Pertemuan ke 12 & 13 10. Interfacing Mikroprosessor (a) Interfacing dengan device analog Pertemuan ke 14 (b) Interfacing dengan device digital Pertemuan ke 15 (c) Interfacing dengan device tegangan tinggi Pertemuan ke 16 12 . Ujian Akhir Semester (UAS)
1. Pendahuluan (a) Perkenalan (b) Sistematika Perkuliahan : 3 sks/ Pertemuan (c) Sistematika Penilaian Ujian Tengah Semester (UTS) = ......% Tugas Mata Kuliah Ujian Akhir Semester
= .......% (UAS) =........%
Total
= 100 %
2. Dasar Mikroprosessor (MP) a) Menjelaskan Pengertian MP b) Menjelaskan Pengertian Bus c) Menjelaskan Sistem Bilangan i. Menjelaskan prinsip digit ii. Menjelaskan notasi posisi iii. Menjelaskan Heksadesimal Kode-biner iv. Menjelaskan Binary Coded Decimal v. Data Ukuran Byte 3. Bagian dan Cara kerja Mikroprosessor a) Arsitektur Internal MP b) Pengalamatan Memori Mode Real c) Pengenalan Pengalamatan Memori Mode Protected d) Paging Memori 4.
Mikroprosessor 8 bit a) Menjelaskan versi MP 8 bit 8008 b) Menjelaskan Programmable Pheripheral Interface (PPI 8255) c) Menjelaskan Programmable Interval Timer (PIT 8253) d) Menjelaskan Programmable Interrupt Controller (PIC 8259)
5.
Perencanaan Hardware a) Menjelaskan Perencanaan Unit memori dan peralatan I/O
b) Sistem Minimum 6.
Analog Digital Converter (ADC) a) Menjelaskan konsep ADC b) Menjelaskan Struktur ADC c) Menjelaskan Aplikasi ADC
7.
UTS
8.
Digital Analog Converter (DAC) a) Menjelaskan konsep dasar DAC b) Menjelaskan Practical Operation DAC c) Menjelaskan Tipe DAC. d) Menjelaskan Performansi dari DAC
9. Aplikasi Sistem Mikroprosessor a) Aplikasi I/O b) Aplikasi Display 11. Interfacing Mikroprosessor a) Interfacing dengan device analog b) Interfacing dengan device digital c) Interfacing dengan device tegangan tinggi 11. UAS
PERTEMUAN KE – 2 & 3 DASAR MIKROPROSESSOR
a. Pengertian Mikroprosessor (MP) Mikroprosessor adalah elemen kendali pada sistem komputer yang juga biasa disebut sebagai CPU (Central Processing Unit) atau unit pemrosesan terpusat. Disamping itu MP berfungsi untuk mengatur memori dan sistem Input/Output (I/O) melalui suatu hubungan yang disebut dengan bus. Bus nantinya berfungsi untuk memilih I/O atau peralatan memori, mentransfer data bolak – balik antara peralatan I/O atau sistem memori dan MP. Tiga fungsi utama MP pada sistem komputer yakni: a.
Mentransfer data antara MP dengan MP atau dengan memori atau dengan sistem I/O.
b. Menjalankan operasi aritmatika dan operasi logika sederhana. c.
Menentukan aliran program melalui keputusan sederhana.
Kemampuan MP untuk mentransfer dan menjalankan ratusan juta perintah dalam satu detik dari suatu perangkat lunak (yang berisi perintah – perintah) diartikan sebagai kekuatan sebuah MP. Operasi – operasi aritmatika dan logika sederhana dapat dilihat pada Tabel 1. Tabel 1 Operasi – operasi aritmatika dan logika sederhana
Operasi Penambahan Pengurangan Perkalian Pembagian AND OR NOT NEG Shift Rotate
Keterangan
Perkalian Logika Penambahan Logika Inversi Logika Inversi Arimatika
1
Operasi – operasi pada Tabel 1 merupakan operasi dasar tetapi program yang kompleks dapat diselesaikan. Dalam penentuan keputusan MP dapat diamati pada Tabel 2. Tabel 2 Penentuan keputusan dalam sistem MP (MP 8086 – 80486 dan Pentium/Pentium Pro)
Keputusan
Keterangan
Zero
Uji apakah bilangan nol atau tidak nol
Sign
Uji apakah bilangan positif atau negatif
Carry
Uji apakah ada carry atau borrow setelah pengurangan
Parity
Uji apakah bilangan untuk jumlah bilangan satu, apakah genap atau ganjil Uji Overflow yang menunjukkan suatu hasil yang bertanda tidak benar
Overflow
setelah penambahan atau pengurangan.
Keputusan – keputusan dibuat berdasarkan angka – angka sehingga MP dapat memutuskan jika angka – angka tersebut nol, positif, dan sebagainya. Keputusan – keputusan sederhana ini nantinya akan memungkinkan MP untuk memodifikasi aliran program, jadi program – program terlihat berpikir melalui keputusan – keputusan sederhana ini.
b. Pengertian BUS Bus merupakan kumpulan kabel – kabel yang sejenis yang menghubungkan komponen – komponen pada sistem komputer. Bus berfungsi menghubungkan bagian – bagian sistem komputer, mentransfer data, alamat dan mengontrol informasi antara MP dengan memori dan sistem I/O. Pada Gambar 1 terlihat kinerja bus – bus menghubungkan bermacam – macam komponen seperti MP, RAM, ROM dan beberapa piranti I/O. Bus kontrol berisi baris yang memilih memori atau I/O dan membuatnya melaksanakan operasi membaca (read) atau menulis (write). Pada kebanyakan sistem komputer, ada empat hubungan bus kontrol: MRDC (Memory Read Control) atau kontrol baca memori, MWTC (Memory Write Control) yaitu kontrol tulis memori), IORC ( IO Read Control baca I/O), dan IOWC (I/O write control yaitu kontrol tulis I/O). Garis atas yang menunjukkan bahwa sinyal kontrol adalah aktif rendah; yakni, sinyal akan aktif pada saat
2
logika 0 muncul pada jalur kontrol. Contoh: jika IOWC = 0, MP menulis data dari bus data ke piranti I/O yang alamatnya ada di bus alamat. MP membaca isi dari lokasi memori dengan mengirim alamat memori melalui bus alamat. Selanjutnya bus alamat mengirim MRDC yang menyebabkan memori membaca data. Akhirnya data yang terbaca dari memori diteruskan ke MP melalui bus data. Setiap kali memori menulis, I/O tulis atau I/O baca terjadi, urutan kejadian sama berlangsung , yang berbeda adalah sinyal kontrolnya dan aliran data mengalir keluar MP melalui bus data untuk operasi tulis.
MP
Bus Alamat
Bus Data MWTC MRDC IOWC IORC
Memori ROM
Memori Baca Tulis RAM
Keyboard
Gambar 1 Diagram Blok dari sistem komputer yang memperlihatkan susunan bus alamat, data, dan kontrol
c. Sistem Bilangan 1) Digit Sebelum bilangan – bilangan diubah dari satu sistem bilangan ke sistem bilangan yang lain, maka digit dari sistem bilangan harus sudah dimengerti. Digit pertama dari seluruh sistem bilangan selalu 0, sebagai contoh, basis bilangan oktal (8) terditi dari 0 hingga 7; basis biner (2) terdiri dari 0 hingga 1. Jika basis bilangan lebih dari 10, maka digit tambahannya menggunakan huruf – huruf dari abjad, mulai dengan huruf A. Sebagai
3
contoh, bilangan basis 12 terdiri dari 12 digit; 0 sampai 9, diikuti dengan huruf A untuk bilangan 10 dan B untuk bilangan 11. 2) Notasi Posisi Notasi posisi dapat dicontohkan seperti bilangan desimal 132: bilangan ini mempunyai 1 sebagai ratusan, 3 puluhan, dan 2 satuan). Mungkin yang tidak dipelajari adalah nilai exponen dari setiap posisi; posisi satuan yang memiliki nilai 10 0 atau 1; posisi sepuluh memiliki nilai 10 1 atau 10; dan posisi seratus memiliki nilai 10 2 atau 100. Pemangkatan sangat penting untuk dimengerti dalam sistem bilangan. Posisi sebelah kiri dari titik radix (basis bilangan), disebut titik desimal (decimal point) hanya dalam sistem bilangan desimal, adalah posisi satuan dalam berbagai sistem bilangan. Contoh, posisi sebelah kiri dari titik biner (binary point) adalah 2 0 atau 1; sedangkan posisi sebelah kiri dari oktal adalah 8 0 atau 1. Posisi sebelah kiri dari posisi satuan adalah basis bilangan yang meningkat pada pangkat pertama; dalam sistem desimal, 10 1 atau 10. Dalam sistem biner, 2 1 atau 2 dalam sistem bilangan oktal 8 1 atau 8. Oleh karena itu, desimal 11 mempunyai nilai yang berbeda dengan biner 11. Desimal 11 terdiri dari 1 puluhan dan 1 satuan, dan mempunyai nilai 11; sedangkan bilangan biner 11 terdiri dari 1 duaan ditambah 1 satuan, dengan nilai 3 satuan. Bilangan oktal 11mempunyai nilai 9 satuan. Contoh 1: bilangan biner 110,101 dalam biner ditulis (110,101 2 ). Juga diperlihatkan pangkat dan nilai dari setiap posisi digit. Untuk mengubah bilangan biner ke desimal, tambahkan nilai dari setiap digit untuk membentuk bilangan desimal. Pangkat
22
21
20
2 −1
2 −2
2 −3
Bobot
4
2
1
0,5
0,25
0,125
Bilangan
1
1
0
1
0
1
4
2
0
0,5
0
0,125
Nilai Numerik
4
Dengan jumlah nilai numerik sebesar 6,625. Konversi dari desimal ke sistem bilangan lain lebih sulit diselesaikan dibandingkan dengan konversi ke desimal. Untuk mengkonversi bilangan bulat ke sistem bilangan lain, bagilah dengan radiks dan simpan sisanya sebagai digit penting dari hasilnya. Adapun langkahnya sebagai berikut: 1.
Bagi bilangan desimal dengan radiks (bilangan radiks),
2.
Simpan sisanya (sisa pertama akan menjadi digit terakhir dari hasil konversi,
3.
Ulangi langkah 1 dan 2 sampai bilangan desimalnya menjadi nol.
Contoh 2 : 10 : 2 = 5
sisa 0
5:2 =2
sisa 1
2:2 =1
sisa 0
1:2 =0
sisa 1
hasil 1010
3) Heksadesimal Kode-Biner Binary-coded hexadecimal (BCH) digunakan untuk menampilkan data hexadesimal dalam kode biner. Bilangan BCH adalah bilangan heksadesimal yang ditulis sedemikian rupa sehingga setiap digit ditampilkan oleh 4-bit bilangan biner. Nilai digit BCH ada di Tabel 3 dibawah ini: Tabel 3 Kode BCH
Digit Hexadesimal
Kode BCH
0
0000
1
0001
2
0010
3
0011
4
0100
...
...
9
1001
A
1010
B
1011
C
1100
D
1101
5
E
1110
F
1111
Contoh 3 : 2AC = 0010 1010 1100 4) Binary Coded Decimal
(BCD)
Informasi BCD disimpan dalam bentuk packed atau unpacked. Data BCD packed disimpan dalam bentuk dua digit per – byte, sedangkan data BCD unpacked disimpan 1 digit per – byte. Rentang digit BCD antara 00002 – 10012, atau desimal 0 – 9, BCD unpacked sering digunakan oleh keypad atau keyboard, sedangkan BCD packed digunakan untuk beberapa instruksi termasuk dalam penjumlahan dan pengurangan BCD dalam kumpulan intruksi MP. Tabel 4 memperlihatkan data BCD packed dan unpacked. Dalam semua kasus, konvensi penyimpanan data LSB (Least Significant Bit, yaitu bit yang paling tidak significant) dipatuhi. Artinya bahwa untuk menyimpan bilangan 83 kedalam memori, pertama kali 3 disimpan, baru kemudian diikuti dengan 8. Juga diingat bahwa pada data BCD packed, huruf H (heksadesimal) mengikuti bilangan untuk menjamin bahwa assembler menyimpan nilai BCD dan bukannya nilai desimal pada data BCD packed. Perhatikan bagaimana bilangan disimpan dalam memori sebagai unpacked, satu digit perbyte, atau packed sebagai dua digit perbyte. Table 4 Data BCD packed dan unpacked
Desimal
Packed
Unpacked
12
0001 0010
0000 0001 0000 0010
623
0000 0110 0010 0011
0000 0110 0000 0010 0000 0011
910
0000 1001 0001 0000
0000 1001 0000 0001 0000 0000
5) Data ukuran Byte Data ukuran byte disimpan dalam bentuk unsigned dan signed integer (bilangan bulat tak bertanda dan bertanda). Gambar 2 mengilustrasikan bentuk tersebut. Perbedaan dalam bentuk ini adalah bobot dari bit posisi paling kiri. Untuk unsigned integer nilainya 128 dan untuk signed integer nilainya -128. Dalam format signed, bit yang paling kiri adalah bit tanda bilangan. Kisaran dari unsigned integer adalah 00H – FHH (0 – 255). Signed Integer 6
berkisar dari -128 ke 0 dan dari 0 ke + 127. Bilangan negatif akan disajikan dlam bentuk seperti ini, tapi disimpan dalam bentuk komplemen dua. Metode untuk mengevaluasi bilangan bertanda (signed number), adalah dengan menggunakan bobot dari setiap posisi bit, ini lebih mudah dibanding dengan menggunakan metode komplemen. Hal ini khususnya berlaku dalam desain kalkulator untuk pemograman. Kapan pun bilangan akan dikomplemenkan, tandanya akan berubah dari negatif ke positif. Contohnya bilangan 00001000 adalah +8, nilai negatifnya -8 didapat dari komplemen dua dari +8. Komplemen satu ini didapat dengan menginversikan setiap posisi bit dari nol menjadi satu, dan dari satu menjadi nol. Setelah komplemen satu terbentuk, komplemen dua didapat dengan menambahkan satu dengan +1. Contoh 4 memperlihatkan bagaimana bilangan dikomplemenduakan menggunakan teknik ini: Contoh 4: +8 = 00001000 11110111 (komplemen 1) +
1
-8 = 11111000
7
PERTEMUAN KE – 4 BAGIAN & CARA KERJA MIKROPROSESSOR a.
Arsitektur Internal MP Konfigurasi internal MP harus diketahui sebelum membuat program. Nantinya akan
dijelaskan dengan rinci fungsi dan maksud setiap register – register internal. Model pemograman 8086 sampai Pentium II termasuk Visible Program karena register – registernya digunakan selama pemograman aplikasi dan ditentukan oleh instruksi. Register lainnya merupakan invisible program karena register – register itu tidak mampu dialamati selama pemograman aplikasi, namun dapat digunakan tak langsung selama pemograman sistem. Nama 32 bit
Nama 8 bit & 16 bit
EAX
AH
AX
AL
Akumulator
EBX
BH
BX
BL
Base Index
ECX
CH
CX
CL
Count
EDX
DH
DX
DL
Data
ESP
SP
Stack Pointer
EBP
BP
Base Pointer
EDI
DI
Destination Index
ESI
SI
Source Index
EIP
IP
Instruction Pointer
EFLAGS
FLAGS
Flag
CS
Kode
DS
Data
ES
Ekstra
SS
Stack
FS GS
Gambar 2 Model Pemograman MP Intel 8086 sampai Pentium II
8
Gambar 2 memperlihatkan model pemograman MP 8086 sampai Pentium II . 8086, 8088 dan 80826 sebelumnya berisi arsitektur internal 16 – bit, subset dari register yang diperlihatkan Gambar 2. MP 80386, 80486, Pentium, Pentium Pro dan Pentium II terdiri dari arsitektur internal 32 bit penuh. Arsitektur 8086 sampai 80286 sepenuhnya kompatibel ke atas dengan 80386 sampai Pentium II. Area yang diarsir dalam ilustrasi ini mewakili register – register yang tidak tersedia pada MP 8086, 8088, atau 80286; dan merupakan perbaikan – perbaikan yang akan ditemukan pada MP 80386, 80486, Pentium, Pentium Pro, dan Pentium II. Ada beberapa register yang tergolong general purpose atau multipurpose, sedangkan yang lain mempunyai kegunaan yang khusus. Yang termasuk register – register multiguna antara lain EAX, EBX, ECX, EDX, EBP, EDI dan ESI. Register – register ini mampu menyimpan data berbagai ukuran (byte, word, atau doubleword) dan hampir bisa digunakan untuk semua tujuan, seperti tertulis di program. 1) Register – register Multiguna EAX (Akumulator) – dirujuk sebagai register 32 – bit (EAX), sebagai register 16 – bit (AX), atau 2 register 8 – bit (AH dan AL). Akumulator digunakan untuk instruksi – instruksi perkalian, pembagian dan beberapa instruksi penyesuaian. Dalam MP 80386 keatas, register EAX juga dapat menyimpan alamat offset sebuah lokasi dalam sistem memori. EBX (Base Index) – dapat diamati sebagai EBX, BX, BH, BL. Register BX dapat menyimpan alamat offset sebuah lokasi memori dalam sistem memori semua versi MP. Dalam MP 80386 ke atas, EBX juga dapat mengalamati data memori. ECX (Count) ECX merupakan register serbaguna yang digunakan instruksi perhitungan. Dalam MP 80386 ke atas, register ECX dapat juga menyimpan alamat offset data memori. Instruksi – insruksi yang menggunakan penghitungan merupakan instruksi string yang diulang (REP/REPE/REPNE); dan instruksi pergeseran, perputaran, dan instruksi LOOP/ LOOPD. Instruksi pergeseran dan perputaran menggunakan CL, instruksi string berulang memakai CX, dan instruksi LOOP/LOOPD menggunakan CX atau ECX.
9
EAX (Data) – merupakan register serbaguna yang dapat digunakan untuk menyimpan hasil perkalian dan menyimpan sisa dalam pembagian. Dalam MP 80386 ke atas, register ini juga mampu mengalamati data memori. EBP (Base Pointer) – menunjuk sebuah lokasi memori yang dalam semua versi MP digunakan untuk mentransfer data memori. Register ini diamati sebagai EBP dan BP. EDI (Destination index) – EDI sering mengalamati data tujuan string untuk beberapa instruksi string. EDI juga berfungsi sebagai register serbaguna 32 – bit (EDI) atau 16 – bit (DI) ESI (Source Index) – ESI digunakan sebagai ESI atau SI. Register Indeks sumber sering mengalamati sumber data string untuk beberapa instruksi string. Seperti EDI, ESI juga berfungsi sebagai register serbaguna. Sebagai register 16 – bit dialamati sebagai SI; sebagai register 32 – bit dialamati sebagai ESI.
31
21
20
19
18
17
16
14
13
12
11
10
9
8
7
6
4
2
0
ID
VIP
VIF
AC
VM
RF
NT
IOP
IOP
O
D
I
T
S
Z
A
P
C
1
0
8086/8088/80186/80 188
80286
80386/8986DX
80486 SX
Pentium /Pentium II
Gambar 3 EFLAG dan FLAG count register untuk seluruh kerabat MP 80X86 dan Pentium
10
EFLAGS – menunjukkan kondisi MP dan mengontrol operasinya. 2) Register untuk tujuan khusus EIP (Instruction Pointer) – EIP mengalamati instruksi selanjutnya dalam sebuah bagian memori yang didefenisikan sebagai segmen kode. Register ini merupakan IP (16 – bit) ketika MP dioperasikan dalam mode real namun menjadi EIP (32 – bit) bila MP 80386 keatas dioperasikan dalam mode terlindung. Penunjuk instruksi, yang menunjuk ke instruksi selanjutnya dalam satu program, digunakan oleh MP untuk mendapatkan instruksi berurutan berikutnya dalam satu program yang lokasinya terletak dalam segmen kode. Penunjuk instruksi dapat dimodifikasi dengan instruksi jump atau call. ESP (Stack Pointer) – ESP mengalamati sebuah lokasi memori yang disebut stack. Memori stack menyimpan data melalui penunjuk ini dan akan dijelaskan dengan instruksi yang mengalamati data stack. Register disebut SP jika digunakan sebagai register 16 – bit dan disebut register ESP jika digunakan sebagai register 32 – bit.Gambar 3 memperlihatkan register – register flag semua versi MP. Register FLAG ( 16 – bit) terdapat dalam MP 8086 – 80286 dan register EFLAG (32 – bit) yaitu extended FLAG terdapat dalam MP 80386 ke atas. C (Carry) – Carry menyimpan carry setelah penambahan, atau borrow setelah pengurangan. Flag carry juga menunjukkan kondisi error seperti yang diperintahkan oleh program dan prosedur. Hal ini sangat benar bagi fungsi panggil DOS yang akan diuraikan lebih rinci pada bab – bab selanjutnya. P (Paritas) – Paritas merupakan 0 logika untuk paritas ganjil dan 1 logika untuk paritas genap. Paritas adalah jumlah angka satu dalam bilangan yang mnyatakan genap atau ganjil. Jika sebuah bilangan terdiri dari 3 bilangan biner bit satu, maka termasuk paritas ganjil. Jika terdiri dari nol bit satu, maka termasuk paritas genap. Flag paritas jarang ditemukan dalam aplikasi pemograman modern dan telah diimplementasikan dalam MP Intel generasi pertama untuk mengecek data dalam komunikasi data. A (auxiliary carry) – carry tambahan menampung carry setengah penambahan setelah penambahan, atau borrow setelah pengurangan antar posisi bit 3 dan 4. Flag bit khusus ini diuji oleh instruksi DAA dan DAS untuk menyesuaikan nilai AL setelah penambahan dan pengurangan suatu BCD.
11
Z (Zero) – Flag nol menunjukkan bahwa jumlah dari suatu operasi aritmatika atau logik adalah nol. Jika Z = 1, jumlahnya adalah nol, jika Z = 0 maka jumlahnya adalah bukan nol. S (Sign) – Flag Tanda akan menampung tanda aritmatika dari hasil setelah instruksi aritmatika atau instruksi logik dieksekusi. Jika S = 1, tanda bit negatif, jika S = 0, tanda bit positif. T (trap) - Flag trap memungkinkan trapping melalui suatu chip debugging. (Suatu program didebug untuk mencari error atau bug). Jika Flag T enabel (=1), MP akan menghentikan alur program pada keadaan yang diindikasikan oleh register debug dan register kontrol. Jika flag T-nya nol logik, fitur trappingnya adalah disabel. Program Codeview apat menggunakan fitur trap dan register debug untuk mendebug kesalahan software. I (intterupt) – Flag interrupt ini mengendalikan operasi dari pin input INTR (interrupt request). Jika I = 1 pin INTRnya enabel; jika I = 0 pin INTRnya disable. Kondisi dari bit FLAG dikontrol oleh instruksi STI (set I flag) dan CLI (clear I Flag). D (direction) – Flag arah ini memilih salah satu dari mode penambahan atau pengurangan untuk register DI dan/atau register SI selama instruksi string. Jika D = 1, register secara otomatis akan ditambah. Flag D diset dengan instruksi STD (set direction) dan di clear dengan instruksi CLD (clear direction). O (Overflow) – terjadi ketika bilangan bertanda tambah atau dikurang. Suatu overflow menunjukkan hasilnya melebihi kapasitas mesinnya. Contoh jika 7FH (+127) ditambah, dengan menggunakan penambahan 8 bit, pada 01H (+1) hasilnya adalah 80H(128). Hasil ini menunjukkan suatu kondisi overflow yang ditunjukkan oleh flag overflow untuk penambahan bertanda. Untuk operasi tak bertanda, flag overflow diabaikan. IOPL (I/O Previlege Level) – digunakan untuk operasi mode terlindung untuk memilih tingkatan operasi istimewa untuk piranti I/O. Jika arus tingkatan istimewa lebih tinggi atau lebih menjamin daripada IOPL, eksekusi I/O berjalan tanpa gangguan. Jika IOPL lebih rendah dari tingkatan istimewa sekarang, terjadi suatu interrupt yang menyebabkan eksekusi tertunda. Perlu diperhatikan bahwa IOPL 00 paling tinggi atau paling menjamin, sedangkan IOPL 11 adalah yang paling rendah atau paling tak percaya. 12
NT (Nested Task) – Flag NT menandakan bahwa task yang sedang dilaksanakan bersarang pada task yang lain dalam operasi mode terlindung. Flag ini di set ketika task dinest oleh perangkat lunak. RF (Resume) – Flag Resume digunakan bersama debugging untuk mengontrol kelanjutan eksekusi setelah instruksi berikutnya. VM (Virtual Mode) – Bit flag VM memilih operasi mode virtual dalam suatu sistem mode terlindung. AC (Alignment Check) – Bit flag AC aktif jika suatu word atau double word dialamatkan pada batas suatu nonword atau nondoubleword.. Hanya MP 80486SX berisi bit AC yang umum digunakan oleh kompresor numerik 80487SX pendampingnya untuk sinkronisasi. VIF (Virtual inteeruot Flag) VIF adalah suatu salinan bit flag interrupt yang digunakan pada prosessor Pentium atau Pentium Pro. VIP ( Virtual Interrupt Pending) – VIP menyediakan informasi tentang suatu interrupt mode virtual untuk MP Pentium – pentium II. Ini digunakan dalam pemakaian multitasking untuk memberikan Flag virtual interrupt dan informasi pending interrupt pada sistem operasi. ID (Identification) – Flag ID menunjukkan MP Pentium – pentium II mendukung instruksi CPUID. Instruksi CPUID memberikan informasi tentang MP, sesuai dengan versi dan nomor seri pabriknya, pada sistem. 3) Register Segmen CS (Code) Segmen kode adalah suatu bagian dari memori yang memuat kode (Program dan prosedur) yang digunakan oleh MP. Register CS mendefenisikan alamat awal dari bagian kode pemuatan memori. DS (data) Segmen data adalah bagian dari memori yang berisi sebagian besar data yang digunakan oleh program. Data diakses dalam segmen data oleh alamat offset atau isi dari register lain yang mempunyai alamat offset. ES (ekstra) Segmen ekstra adalah suatu penambahan segman data yang digunakan oleh beberapa instruksi string untuk menyimpan data tujuan.
13
SS (Stack) Segmen stack mendefenisikan area memori yang digunakan dalam stack. Posisi dari arus masuk dalam segmen stack dibatasi oleh register penunjuk stack. FS dan GS – Segmen FS dan GS adalah register segmen tambahan yang tersedia pada MP 80386, 80486, Pentium dan Pentium Pro, yang memungkinkan dua segmen memori tambahan diakses oleh pemograman yang dijalankan. b.
Pengalamatan Memori Mode Real Operasi mode real mengijinkan penempatan ruang memori hanya pada 1 M byte
pertama atau memori konvensional, bahkan pada MP Pentium II. Perhatikan bahwa 1 M byte pertama dari memori disebut juga sistem memori real atau memori konvensional. Sistem operasi DOS menghendaki MP beroperasi pada mode real. Operasi mode real memungkinkan perangkat lunak aplikasi yang ditulis untuk MP 8086/8088 yang hanya berisi 1 Mbyte, untuk difungsikan pada 80826 dan diatasnya tanpa mengubah perangkat lunaknya. Dalam semua kasus, masing –masing MP ini mengawali operasinya pada mode real pada saat pertama power diaktifkan, atau MP direset. 1) Segmen dan Offset Kombinasi dari suatu alamat segmen dan alamat offset mengakses lokasi memori pada mode real. Semua alamat memori mode real terdiri dari alamat segmen dan alamat offset. Alamat segmen berada dalam satu register segmen, menetapkan alamat awal dari segmen memori 64kByte. Alamat offset memilih sembarang lokasi yang memiliki segmen 64 kByte itu. Gambar 4 memperlihatkan bagaimana skema pengalamatan segmen dan offset dalam memilih lokasi memori. Gambaran ini memperlihatkan suatu segmen memori yang berawal pada lokasi 10000H dan berakhir pada lokasi 1FFFFH dengan panjang 64 K; juga memperlihatkan alamat offset, yang kadang – kadang disebut displacement, F000H memilih lokasi 1F000H dalam sistem memori. Perhatikan bahwa offset atau diplacement merupakan jarak diatas awal segmen, seperti yang ditunjukkan Gambar 4. Register segmen yang ditunjukkan dalam Gambar 4 berisi suatu alamat 1000H, tetapi alamat ini memiliki segmen awal pada lokasi 10000H. Dalam mode real , masing – masing register segmen diberi tanda dengan 0H bagian akhir sebelah kanan. Ini membentuk suatu alamat memori 20 – bit, mengijinkannya untuk mengakses awal segmen. MP harus
14
menghasilkan alamat memori 20 – bit untuk mengakses sebuah lokasi dalam memori 1 M pertama. Memori Mode Real FFFFF
1FFFF 1F000
Offset = F 0 0 0
Segmen 64 Kbyte 1000 1000 0000
Gambar 4 Skema Pengalamatan memori Mode Real, menggunakan alamat segmen ditambah suatu offset.
Contohnya jika suatu register segmen berisi 1200H, berarti segmen memori 64 kB berawal pada lokasi 12000H. Sama halnya jika register segmen berisi 1210H, berarti segmen memorinya akan berawal pada lokasi 12010H. Karena ditambahkan dengan 0H, segmen mode real hanya dapat bermula pada batasan 16 Byte dalam sistem memori. Batasan 16 byte ini sering disebut paragraf. Karena suatu segmen mode real dari memori panjangnya 64 K, maka begitu alamat awalnya akan diketahui begitu juga dengan alamat akhirnya dengan menambahkan FFFFH. Sebagai contoh jika register berisi 3000H, alamat pertama dari segmen adalah 30000H dan alamat akhirnya 30000H + FFFFH atau 3FFFFH. Tabel 5 memperlihatkan beberapa contoh dari register segmen yang berawal dan berakhir pada alamat segman memori yang dipilih oleh masing – masing alamat segmen. Alamat offset ditambahkan pada awal segmen untuk mengalamati memori dalam segmen memori. Sebagai contoh, jika alamat segmennya adalah 1000H dan alamat offsetnya adalah 2000H, MP mengalamati lokasi memori ini 15
12000H. Alamat segmen dan offsetnya kadang – kadang ditulis sebagai 1000:2000 untuk alamat segmen dari 1000 H dengan alamat offset 2000H. Dalam MP 80286 (dalam rangkaian eksternal khusus) dan 80386 sampai Pentium II, memori ekstra 64 K kurang 16 byte dari memori dapat digunakan dalam pengalamatan manakala alamat segmennya adalah FFFFH dan driver Hymem.sys diinstal di sistem. Table 5 Contoh alamat – alamat segmen Register Segmen
Alamat Awal
Alamat Akhir
2000H
20000H
2FFFFH
2001H
20010H
3000FH
2100H
21000H
30FFFH
AB00H
AB000H
BAFFFH
1234H
12340H
2233FH
Area memorinya (0FFFF0H – 10FFEFH) dirujuk sebagai high memori. Ketika suatu alamat dibangkitkan menggunakan suatu alamat segmen pada FFFFH. Ketika suatu alamat dibangkitkan menggunakan suatu alamat segmen pada FFFFH, alamat pin A20 adalah enable (jika fasilitas ini ada) ketika suatu offset ditambahkan. Contohnya, jika alamat segmennya adalah FFFFH dan alamat offsetnya adalah 4000H, lokasi alamat memori mesin adalah FFFF0H + 4000H atau 103FF0H. Perhatikan bahwa garis alamat A20 adalah satu dialamat 103FFOH. Jika A20 tidak didukung, alamatnya beralih pada 03FF0H karena A20 mengandung suatu logika nol.
2)
Segmen Default dan Register Offset
MP mempunyai sekumpulan aturan dalam menggunakan segmen ketika memori dialamatkan. Aturan – aturan ini digunakan untuk mode real atau mode protected. Sebagai contoh register segmen kode CS selalu digunakan dengan instruksi penunjuk (pointer) untuk mengalamatkan intruksi berikutnya dalam sebuah program. Kombinasinya adalah CS:IP atau CS:EIP, tergantung pada mode operasi dari MP. Register segmen kode mendefenisikan awal segmen kode dan penunjuk instruksi berikutnya dalam segmen kode. Kombinasi ini (CS : IP atau CS : EIP) menempatkan instruksi berikutnya yang dieksekusi oleh MP. Sebagai contoh, 16
jika CS = 1400H dan IP/EIP = 1200H, mikroprosessor mengambil instruksi berikutnya dari lokasi memori 14000H + 1200H atau 15200H. Kombinasi default yang lain adalah stack, data stack direferensikan sepanjang segmen stack pada lokasi memori yang ditunjukkan oleh stack pointer (SP/ESP) atau base pointer (BP/EBP). Kombinasi ini mengacu pada SS:SP (SS:ESP) atau SS:BP (SS:EBP). Contohnya, jika SS = 2000H dan BP = 3000H, MP mengalamati lokasi memori 23000H untuk lokasi memori segmen stack.
Default lainnya dapat ditunjukkan pada Tabel 6 untuk
pengalamatan memori yang digunakan dalam MP Intel dengan register 16 – bit. Tabel 6 menunjukkan asumsi default dalam 80386 ke atas ketika menggunakan register 32 bit. Catat bahwa MP 80386 atau diatasnya memiliki jumlah pilihan kombinasi alamat segmen/offset yang jauh lebih banyak ketimbang yang dimiliki MP 8086 sampai 80286. Table 6 Kombinasi alamat segmen dan offset 32 – bit pada MP 80386, 80486, Pentium, Pentium Pro dan Pentium II
Segmen
Offset
Tujuan Spesial
CS
EIP
Alamat Instruksi
DS
EAX, EBX, ECX, EDX, ESI, EDI, Alamat Data bilangan 8 – bit atau 32 bit.
ES
EDI untuk instruksi string
Alamat Data
FS
Tanpa Default
Alamat Umum
GS
Tanpa Default
Alamat Umum
17
PERTEMUAN KE – 5 BAGIAN & CARA KERJA MIKROPROSESSOR a. Pengenalan Pengalamatan Memori Mode Protected (Terlindung). Pengalamatan memori mode terlindung memungkinkan pengaksesan data dan program yang terletak diatas 1Mb pertama dari memori maupun memori 1 Mb pertama. Salah satu perbedaan adalah alamat segmen, yag didiskusikan pada pengalamatan memori mode real, tidak lagi pada mode protected. Sebagai ganti alamat segmen tersebut register tersebut berisi selektor yang digunakan untuk memilih deskriptor – deskriptor pada tabel pendeskripsi. Pendeskripsi menggambarkan lokasi segmen memori, panjang, dan hak akses. Karena register segmen dan alamat offset masih mangakses memori, maka instruksi pada mode terlindung identik pada mode real. 1)
Selektor dan Deskriptor (Pendeskripsi)
Selektor terletak dalam register segmen dan digunakan untuk memilih salah satu dari 8192 pendeskripsi dari salah satu dari dua tabel pendeskripsi. Pendeskripsi menggambarkan lokasi, panjang dan hak akses dari segmen memori. Secara tidak langsung register segmen digunakan untuk memilih segmen memori, tetapi secara tidak langsung seperti dalam mode real. Contoh dalam mode real , jika CS = 0008H, maka segmen kode akan dimulai pada lokasi 00080H, sedangkan pada mode terlindung angka segmen dapat mengalamati beberapa lokasi memori sistem segmen kode. Pendeskripsi global berisi batas segmen yang digunakan untuk semua program, sedangkan pendeskripsi lokal biasanya digunakan untuk program –program unik. Anda mungkin menyebut pendeskripsi global sebagai pendeskripsi sistem, dan menyebut pendeskripsi lokal sebagai pendeskripsi aplikasi.Gambar 5 menunjukkan format dari pendeskripsi untuk 80826 sampai Pentium II. Cata bahwa masing – masing pendiskripsi mempunyai panjang 8 byte, sehingga panjang lokal atau global masing – masing mempunyai panjang maksimum 64 Kbyte. Bagian base address (alamat basis) dari pendeskripsi menunjukan lokasi awal dari segmen memori. MP 80286 mempunyai alamat basis 24 – bit,
18
sehingga segmen dimulai pada beberapa lokasi dalam 16 M byte memori. Perhatikan bahwa batasan paragraf dihilangkan pada MP ini pada saat bekerja dalam mode terlindung. Pendiskripsi 80286 7
00000000
000000
6
00 5
Hak Akses
Basis (B23
4
– B16) 3
Basis (B15 – B0)
2
1
Batas (L15 – L0)
0
Pendeskripsi 80386/80486/Pentium/Pentium Pro/Pentium II 7
Basis
Batas
6
A (B31 – G
D
0
(L19 – V
B24) 5
L16
Hak
4 Basis (B23 – B16)
Akses 3
Basis (B15 – B0)
2
1
Batas (L15 – L0)
0
Gambar 5 Format pendeskripsi untuk Mikroprosessor 80826 dan 80386/80486/Pentium/Pentium Pro/Pentium II
Bagian Base Address dari pendeskripsi menunjukkan lokasi awal dari segmen memori. MP 80286 mempunyai alamat basis 24-bit, sehingga segmen dimulai pada beberapa lokasi dalam 16M byte memori. Batasan (limit) segmen berisi alamat offset terakhir yang terdapat dalam segmen. Sebagai contoh, jika segmen dimulai pada lokasi memori F00000H dan diakhiri pada lokasi memori F000FFH, maka alamat basisnya adalah F00000H, dan limitnya adalah FFH. Untuk MP 80286, alamat basisnya adalah F00000H dan limitnya adalah 00FFH. Untuk 80386 ke atas alamat basisnya adalah 00F00000H dan limitnya adalah 000FFH.
19
Kelebihan lain yang dapat ditemukan dalam pendeskripsi 80386 sampai Pentium II, yang ditemukan pada pendeskripsi 80826 adalah bit G atau granularity bit. Jika G = 0, batas segmen dispesifikasi 00000H sampai FFFFFH. Jika G = 1, maka nilai limit segmen dikalikan 4K byte (dilampirkan dengan XXXH). Limitnya kemudian adalah 00000XH sampai FFFFFXXXH, jika G = 1. Hal itu menyebabkan panjang segmen 4 K sampai 4G dalam kelipatan 4K byte. Alasan bahwa panjang segmen pada 80286 adalah 64 Kbyte adalah karena alamat offset selalu 16 – bit, yang disebabkan rancangan internalnya yang 16 – bit.
2) Register Tak Terlihat – Program (Program – Invisible Registers) Tabel pendeskripsi lokal dan global dapat ditemukan dalam sistem memori. Setiap register segmen berisikan bagian tak terlihat – program yang digunakan dalam mode terlindung. Porsi tak terlihat dari register ini sering disebut memori cache karena cache merupakan memori apapun yang menyimpan informasi. Cache ini tidak boleh dikelirukan dengan cache penampungan tingkat 1 dan tingkat 2 yang ditemukan pada MP. Porsi takl terlihat program dari register segmen diisi dengan alamat basis, limit dan hak akses setiap saat angka dalam register segmen berubah. Ketika nomor segmen baru ditempatkan didalam register segmen, MP mengakses tabel pendeskripsi dan mengisi pendeskripsi ke dalam cache tak terlihat program dari register segmen. GDTR (global descriptor table register) dan IDTR (interrupt descriptor table register) berisikan alamat basis dari tabel pendeskripsi dan batasannya. Batas setiap pendeskripsi adalah 16 –bit karena panjang tabel maksimum adalah 64 Kbyte ketika operasi mode terlindung diinginkan, alamat dari pendeskripsi global dan limitnya diisi kedalam GDTR. Sebelum memakai mode terlindung, tabel pendeskripsi interrupt dan IDTR juga harus diinisialisasi. Rincian mengenai operasi mode terlindung dibahas kemudian pada bab ini. Untuk saat ini, pemrograman dan penambahan pendeskripsi untuk register ini adalah mustahil. LDTR (local descriptor table register) diisi dengan selektor, seperti halnya register segmen diisi dengan selektor. Task register (TR) menampung sebuah selektor yang mengakses sebuah pendeskripsi yang menentukan tugas (task).
20
Register Segmen CS DS ES SS FS GS Cache Pendeskripsi Alamat Basis
TR
Batas
Alamat Basis
Akses
Batas
Akses
LDTR
Alamat Tabel Pendeskripsi GDTR
Alamat basis
Batas
IDTR
Tak terlihat program Gambar 6 Register Tak terlihat Program pada MP 80286, 80386, 80486, Pentium, Pentium II, dan Pentium Pro
d. Paging Memori Mekanisme Paging memori yang ada dalam MP 80386 dan versi di atasnya mengijinkan setiap lokasi memori secara fisik ditunjukkan ke setiap alamat linear. Alamat linear didefenisikan sebagai alamat yang dibangkitkan oleh sebuah program. Dengan Modul 21
Paging memori, alamat linear ditranslasikan secara semu kedalam setiap alamat fisik, yang mengijinkan sebuah aplikasi yang ditulis kefungsi alamat khusus dilokasikan kembali melalui mekanisme paging. Modul ini juga mengijinkan memori ditempatkan ke dalam area dimana tidak ada memori, misalnya pada blok 4 K, ke emori sistem antara video BIOS dan ROM BIOS sistem pada blok memori atas. Tanpa mekanisme paging, penggunaanarea memori ini tidak dimungkinkan. 1) Register Paging Modul Paging dikendalikan oleh isi dari register kontrol MP. Lihat gambar 7 untuk isi register kontrol CR0 sampai CR3. Ingat bahwa register – register ini hanya ada pada MP 80386 sampai Pentium. Mulai Pentium, register kontrol tambahan yang diberi nama CR4 mengendalikan ekstensi dengan arsitektur dasar yang disediakan dalam Pentium dan MP versi diatasnya. Register – register yang penting untuk modul paging adalah CR0 dan CR3. Posisi bit paling kiri (PG) dari CR0 memilih paging pada logika 1. Jika bit PG di nol-kan alamat linear yang dibangkitkan oleh program menjadi alamat fisik yang digunakan untuk mengakses memori. Jika bit PG di set (1), alamat linear diubah ke alamat fisik melalui mekanisme paging. Mekanisme paging berfungsi baik dalam mode real maupun mode terlindung. 2) Direktori Halaman dan Tabel Halaman Direktori halaman terdiri dari 1024 alamat doubleword yang menempatkan sampai 1024 tabel halaman. Direktori halaman dan setiap tabel halaman panjangnya 4K. Jika seluruh memori 4G byte dipakai, sistem harus mengalokasikan memori 4K byte pada direktori halaman, dan 4K dikalikan dengan 1024 atau 4M byte untuk 1024 tabel halaman. Dengan demikian memori yang diperlukan dapat diperkirakan. Sistem DOS dan EMM386.EXE menggunakan tabel halaman untuk mendefenisikan kembali area memori antara lokasi C8000H – EFFFFH sebagai blok memori atas. Hal ini dapat dilakukan dengan repaging memori extended untuk mengisi kembali bagian memori konvensional ini agar DOS dapat mengakses memori tambahan . Diasumsikan bahwa program EMM386.EXE mengijinkan akses ke memori extended 16M byte dan memori konvensional melalui paging dan lokasi C8000H-EFFFFH harus diatur kembali ke lokasi 110000 – 138000H, dengan area memori lainnya yang diatur ke lokasi normalnya. 22
PERTEMUAN KE – 6 & 7 MIKROPROSESSOR 8 BIT
a. Menjelaskan versi MP 8 bit 8008 MP 8088 dapat digambarkan dalam keadaan minimum seperi pada Gambar 7 dibawah ini:
Gambar 7 Konfigurasi Pin pada MP versi 8088 (Adaptasi dari Futurelec.com)
Berikut merupakan fungsi dari kaki – kaki MP: 1) AD0 – AD7 – Bus Alamat /Data Jalur yang dimultipleks untuk menyalurkan data pada saat ALE aktif (1) atau byte rendah alamat pada saat ALE tidak aktif (0). 2) A8 - A15 – Bus Alamat Bit – bit dimana alamat A8 – A15 ada selama siklus bus.
23
3) A19/S6, A18/S5, A17/S4 dan A16/S3 –Alamat / Status Kaki – kaki yang dimultipleks yang digunakan untuk bus alamat bit A16 – A19 pada saat ALE berlogika 1 dan unttuk sisa siklus bus lainnya digunakan bit – bit status S3 – S6. Bit status S6 selalu berlogika 0, bit S5 menandakan kondisi dari bit flag I dan bit S3 dan S4 menandakan segmen yang diakses selama siklus bus yang sedang berlangsung. 4) RD – Read: Sinyal kontrol akan berlevel logika 0 pada saat data bus siap menerima data memori atau I/O. Tabel 7 Fungsi Status Bit S3 dan S4
S3 0 0 1 1
S4 0 1 0 1
Status Extra segment Stack segment Code segment Data segment
5) READY – Ready Input ini diperiksa oleh 8088 pada akhir siklus T2. Jika dalam kondisi logika 0, maka siklus pembacaan atau penulisan data akan diperpanjang sampai input ini kembali ke logika 1. 6) INTR – Interrupt Request: Satu dari dua kaki yang digunakan untuk meminta interrupt hardware. Jika INTR diberi level logika 1 pada saat flag 1 set, 8088 masuk ke siklus interrupt acknowledge (INTA aktif) setelah instruksi yang sedang berlangsung selesai. 7) Test – Test: Kaki yang diperiksa oleh instruksi WAIT. Jika TEST berlogika 0, maka Instruksi WAIT akan meneruskan ke instruksi selanjutnya, dan jia TEST ‘1’, WAIT akan menunggu sampai TEST ‘0’ 8) NMI – Nonmaskable Interrupt: Input yang mengaktifkan interupsi tipe 2 pada akhir dari instruksi yang sedang dilaksanakan.
24
9) RESET –Reset Kaki yang jika diberi level logika 1 untuk minimu 4 clock, akan mereset 8088. Pada saat 8088 reset, 8088 mulai melaksanakan instruksi pada alamat memori FFFF0H dan menonaktifkan interupsi dengan mereset flag I. 10) CLK – Clock: Sebuah input yang menyediakan pewaktu dasar untuk 8088. Clock ini harus berduty cycle 33 persen untuk memberi peaktu yang benar ke 8088. 11) Vcc – Vcc; Input tegangan pencatu +5V, 12)GND –Ground: 13)MN/MAX – Minimum/Maximum Mode: Pin yang digunakan untuk memilih mode operasi yang minimum jika dihubungkan ke +5V dan mode maksimum jika dihubungkan ke ground. 14) IO/M – Input/ Output atau memori: Pin yang menunjukkan isi dari bus alamat adalah informasi pengalamatan memori atau I/O. 15) INTA – Interrupt Acknowledge: Respon untuk INTR. Selama permintaan interupsi, Pin INTA akan berlogika 0 yang menunjukkan bahwa bus 8088 menunggu vector number. 16) ALE –Address Lacth Enable; Pin yang digunakan untuk menunjukkan bahwa bus alamat berisi alamat memori atau alamat port I/O. 17) DT/-R-Data Transmitte/-Receive; Pin yang digunakan untuk mengendalikan arah aliran data yang melewati buffer data. 18) Pin yang aktif bila bus data yang telah berisi data.
b.
Programmable Pheriperal Interface (PPI 8255)
PPI 8255 dari INTEl adalah chip paralel yang sederhana. Keuntungan utamanya adalah interface yang sederhana dari 8 port 8 bit bidirectional. PPI mengandung register 25
control dan tiga port terpisah yang mampu dialamati, disebut port A, B dan C. Seperti yang terlihat pada Gambar 8.
Gambar 8 Pin dari 8255 (Adaptasi dari Weblog)
Diakses tidaknya PPI ini ditentukan dari sinyal pada Pin CS dan arah akses sesuai dengan sinyal RD dan WR. Pin A0 dan A1 menentukan register mana yang dialamati. Tabel 8 menunjukkan bagaimana 4 buah internal register (port) diakses untuk operasi pembacaan dan penulisan oleh CPU. Table 8 Tabel kebenaran 8255 A1 0 0 1 0 0 1 1 x 1 x
A0 0 1 0 0 1 0 1 X 1 X
RD 0 0 0 1 1 1 1 X 0 1
WR 1 1 1 0 0 0 0 X 1 1
CS 0 0 0 0 0 0 0 1 0 0
Keterangan Port A=>data bus Port B => data bus Port C =>data bus Databus => port A Databus =>port B Databus => port C Databus => control Databus =>tri state Ilegal condition Databus => tristate
26
Beberapa fungsi PIN 8255
Gambar 9 Diagram Blok 8255
CS : input ‘Low” akan mengaktifkan IC sehingga dapat dipakai untuk komunikasi data antar 8255 dan CPU. RD : (read); Input “low” akan mengaktifkan IC sehingga dapat mengambil data dan status dari data luar ke CPU. WR (write): Input “Low” akan mengaktifkan IC sehingga dapat mengirim data dan status dari CPU ke perangkat luar. A0 dan A1: Pin ini digunakan untuk memilih port yang akan digunakan. RESET : jika input “HIGH”, maka IC akan menghapus semua register dan Port A, B, C dan diset dalam mode Input.
27
Port A, B dan C : IC ini berisi 3 port 8 bit (A, B dan C). Semua port dapat dikonfigurasikan sesuai dengan karakteristik fungsinya yang ditentukan dari programnya. Port ini dapat dibagi menjadi 4 bit port tergantung kepada kontrol modenya. Masing – masing 4 bit latch dan dapt digunakan untuk output sinyal dan input sinyal status. Karena bit –bit dalam port C kadang –kadang digunakan sebagai bit kontrol, 8255 dirancang sehingga bit – bit itu dapat dikeluarkan secara individual menggunakan intruksi set reset. Ketika PPI menerima satu byte yang diarahkan ke register kontrolnya, PPI akan memeriksa data 7. Jika berharga 1 maka datanya ditransfer ke register kontrol, tetapi jika 0 datanya diperlakukan sebagai instruksi set reset. Pengoperasian PPI 8255 1) Mode 0 : Basic Input/Output Mode ini disebut juga mode simple I/O operation. Pada mode 0 port berfungsi sebagai masukan atau keluaran tanpa strobe. Bila port A dan B bekerja dalam Mode 0, maka port C dapat bekerja sebagai port 8 bit dan juga dapat bekerja sebagai port 4 bit secara terpisah. Bila digunakan sebagai keluaran, port C secara terpisah dapat di SET dan RESET dengan mengirim sinyal CONTROL WORD tertentu ke alamat register kontrol. 2) Mode 1 : Strobed Input/ Output Jika diinginkan port A dan B bekerja sebagai masukan dan keluaran strobe, maka port harus diinisialisasi pada mode 1. pada mode ini beberapa pin dari port C difungsikan sebagai jalur strobe. PC0, PC1, dan PC2 difungsikan sebagai strobe untuk port B. Jika pOrt A diinisialisasi sebagai port keluaran handshake, maka PC3, PC6, PC7 berfungsi sebagai handshake. PC4, PC5 dapat digunakan sebagai jalur masukan atau keluaran. 3) Mode 2: Bi –directional Bus Hanya port A yang dapat diinisialisi pada mode 2. Port A dapat digunakan sebagai transfer data dua arah. PC3 sampai PC7 digunakan sebagai jalur strobe untuk port A dan PC0 – PC2 dapat digunakan sebagai masukan atau keluaran bila Port B digunakan dalam mode 0. Bila port B dalam mode 1, maka PC0 – PC2 digunakan sebagai strobe untuk port B.
28
c. Programmable Interval Timer (PIT 8253/8254) PIT banyak digunakan dalam sistem mikrokomputer karena time delay yang dihasilkan sangat akurat dan mudah diatur dengan software. Ada dua jenis PIT keluaran INTEL yaitu 8253 dan 8254.
Gambar 10 PIT 8253
Perbedaan mendasar kedua tipe IC tersebut adalah : •
Frekuensi denyut maksimum 8253 adalah 2.6 Mhz sedangkan 8254 adalah 5Mhz untuk 8254-5, 8 Mhz untuk 8254 dan 10 Mhz untuk 8254 -2.
•
8254 memiliki sarana readback (baca kembali) yang dapat diaplikasikan dengan 8254 adalah:
Beberapa fungsi timer (waktu) atau counter (cacah) yang dapat diaplikasikan dengan 8254 adalah: PIN D0 – D7
NOMOR PIN 1–8
TIPE I/O
CLK0 OUT0 GATE0
9 10 11
I O I
NAMA & FUNGSI Data bus 3 state 2 arah yang dihubungkan ke data bus Input Clock dari counter 0 Output dari counter 0 Input gate dari counter 0 29
GND VCC WR
12 24 23
I
RD
22
I
CS
21
I
A0, A1
19, 20
I
CLK2 OUT 2 GATE 2 CLK1 GATE1 OUT1
18 17 16 15 14 13
I O I I I O
Hubungan ke power supply Power supply +5 volt Input ini akan low selama CPU membaca operasi Input ini akan low selama CPU membaca operasi Input LOW dari pin ini memungkinkan CPU untuk merespon sinyal RD dan WR Digunakan untuk memilih counter dan control word untuk operasi read / write. Input clock counter 2 Output dari counter 2 Input gate dari counter 2 Input clock counter 1 Input gate dari counter 1 Output dari counter 1
Data Bus Buffer – untuk memindahkan data dari sistem atau sebaliknya, PIT dilengkapi dengan data bus buffer. Data bus buffer ini tri state, bidireksional dan terdiri dari 8 bit. Data bus mempunyai 3 fungsi dasar: 1. Untuk pemograman mode dari PIT 2. Untuk mengisi harga count register 3. Untuk membaca harga yang sedang dihitung. Logika Read and Write – Logika R/W menerima input dari sistem bus dan berfungsi untuk mengontrol operasi dari PIT. Blok ini dikontrol oleh pin CS. Beberapa pin yang dimiliki oleh blok ini adalah: •
RD read : Logika 0 pada pin ini digunakan untuk membaca harga counter
•
WR write: Logika 0 pada pin ini digunakan untuk mengisi harga counter.
30
•
A0, A1: input ini biasanya dihubungkan dengan address bus. Pin ini berfungsi untuk memilih satu dari ketiga counter untuk dioperasikan dan memberi address pada control word register untuk memilih mode.
•
CS (Chip Select)
Control Word Register : Control Word Register dipilih pada saat A0 dan A1 bernilai 1 1. Register ini menerima informasi dari data bus buffer dan menyimpannya di register. Informasi yang disimpan dalam register ini memilih mode tiap counter dan memilih operasi hitung biner atau desimal. Control word ini hanya dapat ditulis dan tidak dapat dibaca. Counter : counter yang digunakan adalah single, 16 bit, pre-settable, down counter. Setiap counter dari PIT adalah independen dan dapat diprogram secara terpisah. Sinyal clock sinkron counter ini dapat berfungsi sebagai timer, sedangkan sinyal clock asinkron counter ini berfungsi sebagai counter biasa. Timer ini akan menghitung setiap kali terjadi perubahan state dari 0 ke 1. Keistimewaan dari counter ini adalah harga counter ini dapat dibaca setiap saat tanpa mengganggu kerja counter itu sendiri. Mode Operasi PIT : Mode operasi 0: Interrupt on terminal count Pada input High sehingga mengenable counter. Kondisi sinyal LOW WR yang pertama adalah penulisan control word ke control register yang membuat Pin OUT menjadi High saat clock transisi ke LOW dengan jumlah N + 1. Jika gate dibuat LOW, maka counter akan tetap pada kondisi hitungan terakhir. Jika jumlah hitungan baru dimasukkan saat menghitung, ia akan menunggu hitungan pertama sampai habis. Mode operasi 1: Hardware Retriggerable one shot : Mode ini menggunakan gate sebagai input trigger. Jika ada trigger, maka pada clock berikutnya dia mulai menghitung sampai satu (HIGH) dan ke 0 (LOW). Jika gate mentrigger saat menghitung begitu hitungan ke -1 usai, akan diteruskan dengan hitungan ke 2 dengan hitungan yang sama. Jika menulis LSB kedua pada saat out Low, hitungan dimuat ke count register, dan OUT menjadi LOW setelah ada pulsa trigger.
31
Mode operasi 2 : Time Interrupt : Pada mode ini OUT HIGH, selama N – 1 hitungan dan hitungan terakhir OUT menjadi LOW. Baru jika Gate LOW saat menghitung, maka nilai hitungan terakhir akan dipertahankan. Hitungan baru dimuat ke countersetelah hitungan pertama selesai (LOW). Mode operasi 3 : Square Wave Mode generator : ada dua kondisi, kondisi pertama jika count genap, perhitungan berkurang setiap hitungan, naik setiap 2 hitungan. Kondisi kedua jika countnya ganjil. Naik turunnya setiap 2 hitungan, tetapi untuk LOW hitungan sampai nol, untuk High sampai 2. Jika gate menjadi LOW saat menghitung, nilai terakhir dipertahankan. Mode operasi 4 : Software trigger Strobe. Mode 4 dan 5 hampir sama dengan mode 1. Mode LOW selama N + 1 sesudah WR, sedang mode 4 – 5 LOW selama i clock setelah N Clock. Jika gate LOW, maka nilai terakhir dipertahankan. Jika nilai ke – 2 dimasukkan pada saat menghitung, nilai pertama diteruskan dengan nilai kedua menjadi LOW. Mode operasi 5: Hardware triger Strobe : Mode 5 sama dengan mode 4 dengan input gate adalah strobe. Jika ada strobe sebelum hitungan selesai, maka hitungan dimulai dari awal lagi.
d.
Programmable Interrupt Controller (PIC 8259)
PIC berfungsi mengatur seluruh sistem interrupt driven. PIC menerima permintaan dari pheriperal dan menentukan prioritas mana yang tertinggi. PIC 8259 terdiri dari 8 pin input interrupt request dan dapat di paralel sampai 64 permintaan interupsi. Cara kerja dari interupsi sistem 8088 jika interrupt flagnya set dan pin INTR menerima sinyal HIGH adalah sebagai berikut: 1. Push flag –flag ke stack, clear TF dan IF 2. Push Address untuk kembali stack 3. data bus dijadikan mode input 4. Mengirimkan pulsa INTA 2 kali 5. tipe interrupsi dari eksternal device di kali 4 untuk memperoleh address pada interrupt. 32
Gambar 11 Diagram Blok PIC
Dari block diagram 8259, ada block – block ISR, IRR, IMR, dan priority resolver. IRR : menampung kondisi – kondisi input IMR : mengenable input register (mask = 1 = disable) ISR : menjaga input yang sedang dikerjakan Priority resolver : menentukan prioritas input.
Inisialisasi 8259 Command word dari 8259 ada 2 yaitu: 1.
Initialitation Commannd Word (ICW) yang berungsi untuk menentukan titik start.
2.
Operation Command word (OCW) yang berfungsi untuk menentukan mode operasi interrupsi.
33
a. Mode OCW adalah : Fully Nested Loop, Special Fully Nested Loop, Non Spesifik Rotating Mode, Specifik Rotating Mode, Special Mask Mode dan Polled Mode. b. Langkah – langkah dalam menentukan inisialisasi: menentukan base address pada memory mapping 8088, Menentukan internal address dari peralatan, Dijumlahkan untuk memperoleh address di memory map dan mengirim control worl yang terdiri dari 2 set yaitu ICW dan OCW. c. Inisialisasi Control Word (ICW): ICW digunakan untuk menyiapkan piranti ini agar menerima saru interrupt request atau lebih. ICW terdiri dari 4 jenis, yaitu ICW1 dan ICW . d. Operational Control Word (OCW): terdiri dari 3 jenis yaitu OCW 1 sampai OCW 3. OCW 1 berfungsi untuk mengatur data yang disimpan dalam IMR (Interrupt Mask Register) atau yang berfungsi menentukan IRQ# yang akan kita mask (disable) dan unmask (enable).
34
PERTEMUAN KE – 8 & 9 PERENCANAAN HARDWARE Perencanaan Hardware (PPI + PCI + PIT) a. Perencanaan Unit Memori dan Peralatan I/O Dalam merencanakan sistem minimum maka harus dipikirkan komunikasi sistem internal dan eksternalnya. Dengan adanya sistem bus, maka perlu diperhatikan pembagian address untuk unit memori dan I/O device. Biasanya digunakan memori map dan I/O memori. Dalam merencanakan hardware dari minimum sistem 8088 dibagi menjadi 6 modul bagian yang terpisah yaitu: 1. Modul sistem minimum berisi a. MP 8088 b. Buffer 74LS245 c. Latch 74LS373 d. Decoder 74LS138 untuk menghasilkan sinyal control e. Clock generator f. Slot expansion 2. Modul memori mengandung a. RAM 6116 b. EPROM 27128 c. Dekoder 74LS138 3. Aplikasi I/O 1 a. Rangkaian display 10 x 7 segmen untuk tampilan display secara buffer data. b. Keypad 4. Aplikasi I/O 2 a. Rangkaian untuk pemakaian kontrol ON/OFF atau read/Write ADC. 5. Aplikasi PIC 8259 a. Rangkaian untuk interupsi
35
6. Aplikasi PIT 8253 a. Rangkaian untuk timer. Mikroprosessor 8088 MP 8088 diset pada mode minimum dengan memberi logika HIGH pada pin 33 dan logika LOW jika difungsikan dalam mode maksimum. Untuk pengalamatan memori, MP 8088 menyediakan 20 bit address yang 8 diantaranya dimultipleks dengan data yaitu AD0 – AD7. Sedangkan A16 – A19 dimultipleks dengan sinyal kontrol S3 – S6. Memori Minimum sistem menggunakan dua buah macam memori yaitu EPROM 27128 berkapasitas 16 Kbytes dan RAM statis 6116 yang berkapasitas 2Kbytes. Karena MP akan menunjukkan pada alamat FFFF0h maka pada alamat tersebut harus sudah ada intruksi lompat ke awal program, oleh karena itu EPROM diletakkan pada bagian terakhir memori sedangkan RAM diletakkan pada bagian awal memori karena untuk penggunaan interrupt, 8088 memakai alamat 00000h -003FFh sebagai tabel vector interrupt. I/O Port Untuk peralatan I/O dari minimum sistem digunakan IC Programmable Peripheral Interface 8255. PPI 8255 merupakan pheriperal interface yang dapat diprogram fungsinya. PPI ini menjadi dua group group A yang terdiri dari port A dan port C upper, group B yang terdiri dari port B dan Port C lower. Fungsi masing – masing pin adalah sebagai berikut: •
Data D0 – D7 : merupakan jalur data
•
Chip select (CS) : untuk mengaktifkan PPI
•
Read (RD) : untuk mengambil data dari PPI
•
Write (WR) : untuk mengeluarkan data dari PPI
•
Address (A0 – A1) : untuk menentukan sinyal register dalam 8255 yang akan dibaca atau ditulis
•
Reset : untuk mereset register PPI
Cara menentukan Alamat Jump reset Misal ROM yang digunakan 16 kb, maka perhitungannya adalah sebagai berikut: FFFFF
(mP 8088 mampu mengakses 1 MB)
2FFF
(Kapasitas ROM) 36
_____ FD000
(awal EPROM)
FFFF0
(tempat jump reset pada 8088)
FD000
(awal EPROM)
______1FF0
(lokasi jump reset pada EPROM 16 kb)
Kemudian dengan menentukan origin dari software, misal origin 100H: FE000
: FE00: 0000 (org 0H)
100 ______FDF00
: FDF0: 0100 (org 100H)
1FF0 100 _____+ 20F0
(Lokasi jump reset pada EPROM 16kb org 100H)
37
PERTEMUAN KE – 10 ANALOG DIGITAL CONVERTER 1. ADC 174/574/674 AD574 dalah sebuah konverter A/D lengkap yang tidak memerlukan komponen luar tambahan untuk memberikan fungsi konversi analog ke digital dengan cara successive approximation. Tegangan referensi internal dibentuk oleh sebuah zner dioda pada 10 volt. Tegangan referensi ini dikeluarkan dan dapat mencatu sampai 1,5 mA ke sebuah beban luar sebagai tambahan keperluan akan resistor input referensi (0,5 mA) dan resistor bipolar (1 mA). Semua beban eksternal yang diterapkan ke referensi AD574 harus konstan selama konversi. ADC ini adalah ADC 12 bit yang mengkombinasikan: a. Kecepatan tinggi b. Konsumsi daya rendah c. Clock internal d. Tegangan referensi internal Waktu konversi maksimum adalah: a. 8 mikrosekon untuk ADC 174 b. 15 mikrosekon untuk ADC 674 c. 25 mikrosekon untuk ADC 574 Input analog bersifat: a. unipolar 0 -10 volt dan 0 – 20 volt b. bipolar -5 - +5 dan -10 dan +10 volt c. Aplikasi yang sesuai dengan ADC ini adalah: a. Pemrosesan sinyal digital b. Kontrol proses dengan akurasi yang tinggi c. Data akuisisi yang cepat d. Sistem elektro mekanik
38
2.
Konfigurasi PIN
Konfigurasi PIN ADC 174/574/674
Gambar 12 Konfigurasi Pin ADC174/574/674
3. Digital Interface AD574 berisi rangkaian logika yang dapat langsung dihubungkan ke sebagian besar sistem mikroprosessor. Sinyal kontrol CE, CS, R/C mengendalikan. operasi dari konverter. Keadaan R/-C saat CE dan CS keduanya dimasukkan untuk menentukan apakah data dibaca (R/C = 1) atau konversi (R/-C=0) akan berlangsung. Input A0 dan 12/8 menentukan lebar konversi dan format data. A0 biasanya dihubungkan ke LSB dari bus alamat. Jika konversi dimulai dengan A0 rendah, siklus konversi 12 bit diinialiasasi. Jika tinggi selama start konversi, akan berlangsung siklus konversi 8 bit. Selama operasi pembacaan data, A0 menentukan bilama buffer 3 state berisi 8 MSB dari hasil konversi (A0 = 0) atau 4 LSB (A0=1)
39
diaktifkan. Pin 12/8 menentukan bagaimana data output diorganisasikan sebagai 2 buah 8 bit (12/8 dihubungkan ke digital common) atau sebuah 12 bit (12/8 dihubungkan ke 5 volt). Pin 12/8 tidak cocok dengan TTL dan harus dihubungkan langsung ke 5 volt atau ke digital common. 4. Format Data Output
HIGH BYTE
D7
D6
D5
D4
D3
D2
D1
D0
MSB
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
(A0 = 0) LOW BYTE (A0 = 1)
5. Timing dan Kontrol Timing diagram ini digunakan untuk mendesain rangkaian agar ADC dapat berfungsi sebagaimana mestinya. a. Timing Start Konversion
Gambar 13 Timing Diagram Start Convertion (adaptasi dari 8051 projects nets)
Sinyal R/-C diberi LOW, kemudian disusul CS LOW. Untuk menandai dimulainya konversi, maka CE diberi HIGH. Kemudian R/-C an CS HIGH baru CE LOW. Status STS akan tetap HIGH selama ADC melakukan proses konversi. Timing ini merupakan timing diagram yang lengkap dan membutuhkan sinyal kontrol 4 buah. Untuk menyederhanakan sinyal kontrol, maka dibuat versi stand alone seperti Gambar 14 dibawah ini:
40
Gambar 14 Timing Diagram Start Conversion Stand Alone
Timing ini dibuat dengan memastikan sinyal CS LOW dan CE HIGH. Sinyal R/-C diberi HIGH – LOW – HIGH. Status STS akan menjadi HIGH selama proses konversi.
b. Timing Read Sinyal R/-C diberi HIGH kemudian disusul CS LOW. Untuk menandai dimulainya pengambilan data, maka CE diberi LOW – HIGH. Data kita ambil dan CE diberi LOW, CS HIGH dan R/-C LOW. Seperti halnya timing start convertion, maka timing read juga disederhanakan dengan memastikan kondisi CE HIGH dan CS LOW.
6.
Power Supply ByPassing
Power Supply dari ADC harus difilter, ter-regulasi dan bebas dari frekuensi tinggi yaitu dengan memberi kapasitor keramik 100N dan kapasitor ELCO 4,7 mikrofarad yang dipasang paralel.
41
PERTEMUAN KE – 11 DIGITAL ANALOG CONVERTER 11.1 DAC0808 DAC0808 adalah Dac 8 bit monolitik yang mampu menghasilkan arus pada skala penuh dalam waktu 150 ns dengan disipasi daya hanya 33mW dan catu daya 5 V. Tanpa pengaturan arus referensiseperti yang diperlukan pada sebagian besar aplikasi karena arus output pada skala penuhnya kurang lebih 1 LSB dari 255 IREF/256. Akurasi relatif lebih baik daripada 0,19 %, linier dan arus output pada level zero kurang dari 4 mikro amper dapat memberikan akurasi Iref>=2mA. DAC0808 dapat diinterfacekan langsung dengan IC yang mempunyai level TTL, DTL atau CMOS. Dan langsung dapat diganti dengan MC1508/MC1408. Spesifikasi: 1. Akurasi Relatif : 0,19 % error maksimum 2. Settling time 150 ns 3. Input kompatible dengan TTL dan CMOS 4. Input slew rate 8 mA, mikroSec 5. Range catu daya : 4,5 V sampai 18 Volt 6. Konsumsi daya 30 mW pada catu daya 5V 11.1.1 Fungsi pin DAC0808 Fungsi masing – masing pin: 1. Iout : arus output 2. Vref (-) : tegangan referensi negatif 3. Vref (+) : tegangan referensi positif 4. Comp : kompensasi 5. Vee : catu daya negatif 6. Vcc : catu daya positif 7. LSB – MSB : data bit input.
42
Rangkaian digital to analog konverter, rangkaian penghasil tegangan DC menggunakan DAC 0808 digambarkan dalam Gambar 16:
Gambar 15 Digital Analog Converter (DAC)
Hal terpenting dalam merencanakan rangkaian ini adalah pemilihan harga resistansi untuk menentukan besarnya level tegangan yang dihasilkan. Tegangan output DAC dapat dihitung dengan menggunakan persamaan: Dimana: Vo = tegangan output Vref = tegangan referensi Ro = resistansi output Ri = Resistansi input pada kaki 14 A1 = MSB data digital A8 = LSB data digital Jadi tegangan output maksimal
A8 A1 A2 Vo = 10V + + ... + 4 256 2
43
Kompensasi dan desain Penguatan Referensi Amplifier referensi memberikan tegangan pada pin 14 untuk mengubah tegangan referensi menjadi arus referensi. Arus referensi input I14 harus slalu mengalir pada Pin 14. Koneksi untuk tegangan positi fseperti gambar 19. Sumber tegangan referensi memberikan arus penuh I14. Untuk sinyal bipolar R15 dapat dihubungkan ketegangan negatif yang besarnya sama dengan level input minimum. Jika R15 dihilangkan akan memengaruhi akurasi dan temperatur drift. Nilai kapasitor kompensasi harus dinaikkan dengan naiknya R14 agar dapat menjaga fase batas yang sesuai, untuk R14 nilai 1,2 K dan 5K, nilai minimum kapasitor adalah 37 pF dan 75 pF. Kapasitor dapat dihubungkan ke VEE atau ground. Tetapi jika menggunakan VEE, maka dapat menaikkan buangan tegangan negatif. Tegangan referensi negatif dapat digunakan jika R14 di ground dan tegangan referensi dapat diberikan k R15 seperti gambar 19. Impedansi input yang tinggi adalah keuntungan dari metode ini. Kompensasi dilakukan dengan memberikan kapasitor terhadap ground pada pin 16. Tegangan referensi negatif yang diberikan yang diberikan paling tidak 4V diatas VEE. Sinyal input bipolar dapat diberikan dengan menghubungkan R14 dengan tegangan referensi positif yang sama dengan level input positif pada pin 15. Range tegangan output Tegangan pada pin 4 tidak boleh berada pada range -0.55 sampai 0.4 volt jika VEE = -5 volt. Tegangan output negatif dari DAC0808 dianjurkan lebih negatif dari – 10 volt. Dengan menggunakan arus skala penuh 1.992 mA dan resistor beban 2K5 antara pin 4 dan ground akan menghasilkan tegangan output dengan 256 level antara 0 sampai -498 volt. Pin 1jika dibiarkan tidak akan mempengaruhi kecepatan dan disipasi daya. Besarnya resistor beban menentukan waktu switch karena naiknya tegangan outputnya. Nilai RL sampai dengan 500 Ohm tidak memengaruhi performansi signifikan, tetapi jika dinaikkan sampai 2K5 akan menyebabkan settling time lebih jelek dari 1.2 mikrosekon (jika Semua Bit On).
44
PERTEMUAN KE – 12 & 13 APLIKASI SISTEM MIKROPROSESSOR 1. Aplikasi I/O Pada bagian ini, MP board dihubungkan dengan modul Interfacing dimana modul ini terdiri dari: a. Modul I/O b. Modul Display a. SIPO (Serial Input Paralel Output) b. PIPO (Paralel Input Paralel Output) c. LCD (Light Cell Display) c. Modul Motor Stepper dan Motor DC Sehingga aplikasi yang digunakan nanti adalah sesuai dengan modul. Selain itu pada MP board juga terdapat display scanning dan keypad. 1.1 Modul I/O pada Modul Interfacing Langkah pertama dalam menerapkan teori dalam bab – bab di depan adalah membuat LED berjalan yang dikontrol oleh PPI dengan alamat: a. 00H untuk port A b. 01H untuk port B c. 02H untuk port C d. 03H untuk control word Percobaan ke -1: gunakan modul seperti gambar 1.3 dengan langkah – langkah berikut: 1. Jumper J1, J2, J3 harus pada posisi Tx (OUT) 2. Semua posisi DIPSWITCH harus OFF 3. Perhatikan format data untuk port A, B dan C output sebagai berikut: D7 1 1
D6 0 0
D5 0 0
D4 A 0
D3 Cu 0
D2 0 0
D1 B 0
D0 0 0
4. Ketik program pada sembarang EDITOR: 5. Kemudian tambahkan program 4 diatas (pada bagian program utama) 45
6. Simpan program dengan nama less1.asm, kemudian compile program dengan menuliskan A Less 1 pada DOS Prompt. Jika tidak ada kesalahan, maka akan dihasilkan file baru dengan nama: a. Less1.obj b. Less1.map c. Less1.com 7. Hubungkan board MP dengan modul EPROM EMULATOR dengan meletakkan pada soket EPROM ( Tanda Merah pada kabel EMULATOR adalah GROUND). Jalankan eeu.exe dan pilih LOAD, kemudian isilah dengan less1.com. Pilih OPTION dan ubahlah EPROM menjadi 2764. Jika tidak terjadi kesalahan pilih DOWNLOAD, kemudian tekan RESET pada board MP. 8. Dengan cara yang sama gantilah data yang sesuai dengan tabel berikut dengan mengganti nilai data sesuai dengan yang tertera pada tabel putar: 9. Kemudian dengan cara yang sama istilah data, sehingga LED yang menyala sesuai dengan tabel.
2.
Aplikasi Display
2.1.1 Display SIPO ( Serial Input Paralel Output) Untuk percoban ini, lihat gambar skematik berikut ini: •
Port A0 untuk sinyal Clock: 010
•
Port A1 untuk sinyal data o ‘0’ segment akan menyala o ‘1’ segment akan padam
Data di port A1 akan dipindahkan apabila mendapatkan sinyal naik port A0 dari logika 0 ke 1. Display 7 segmen yang digunakan adalah common anoda sehingga segmen akan menyala apabila diberi data 0. Untuk mempelajari display, ada urutan yang harus diikuti: •
Menentukan urutan segmen
•
Menampilkan angka 0 sampai 9
•
Menampilkan 3 digit angka sebelah kanan
•
Menampilkan 4 digit angka sebelah kanan 46
Gambar 17. Aplikasi SIPO (Adaptasi dari
2.1.2 Display PIPO
Gambar 18 Display PIPO
47
PERTEMUAN KE – 14, 15 & 16 INTERFACE MIKROPROSESSOR 1. Programmable Peripheral Interface PPI 8255 dari INTEL adalah chip paralel yang sederhana. Keuntungan utamanya adalah interface yang sederhana dari 8 port 8 bit bidirectional. PPI mengandung register control dari tiga port terpisah yang mampu dialamati, disebut port A, B dan C. Diakses tidaknya PPI ini ditentukan dari sinyal pada pin CS dan arah akses sesuai dengan sinyal RD dan WR. Pin A0 dan A1 menentukan register mana yang dialamati. Tabel 1.1 menunjukkan bagaimana 4 buah internal register (port) diakses untuk operasi pembacaan dan operasi penulisan oleh CPU. 2.
Data bus buffer 8 bit buffer tristate 2 arah digunakan untuk perantara 8255 dengan sistem data bus.
Data dikirim atau diterima oleh buffer tergantung kepada instruksi input dan output oleh CPU. Informasi kontrol dan status juga dikirim lewat buffer data bus. 3. Aplikasi dengan PPI untuk motor PC Tujuan dari aplikasi ini adalah untuk mempelajari cara pengaturan kecepatan motor DC dengan komputer. Disini pengaturan kecepatan dilakukan dengan mengatur tegangan yang diberikan kepada motor tersebut. Input tegangan ini dihasilkan oleh modul digital to analog converter, yang biasanya dapat diatur dari komputer. Dengan demikian kita dapat mengatur kecepatan motor sesuai dengan yang diinginkan dengan menekan tombol – tombol di PC. Tombol – tombol yang digunakan dalam percobaan ini adalah tombol ENTER juga berfungsi sebagai tombol untuk menghentikannya. Tombol lainnya adalah tombol panah ke atas (UP Arrow) yang berfungsi untuk mempercapat kecepatan motor. Jika kecepatan sudah maksimum, maka kecepatan motor tidak akan menambah meskipun tombol UP arrow ditekan terus. Demikian pula halnya dengan tombol untuk memperlambat kecepatan motor. Disini digunakan tombol panah ke bawah untuk memperlambat kecepatan motor.
48
Diagram Alir : START
Input dari PC
Tombol PC
ENTER Toggle Motor
UP Tambah Kecepatan
DOWN Kurangi Kecepatan
ESC Motor Mati
END
Gambar 18 Diagram alir PPI untuk motor PC
4. Aplikasi PPI untuk sistem kontrol tertutup Tujuan aplikasi ini adalah untuk memperlajari cara pengaturan tertutup. Disini yang diatur adalah kecepatan motor DC. Pengaturan kecepatan dilakukan dengan mengatur tegangan yang diberikan kepada motor tersebut. Input tegangan ini dihasilkan oleh modul DAC, yang besarnya dapat diatur dari komputer. Sedangkan sebagai elemen umpan baliknya adalah sebuah sensor optocoupler yang memberikan informasi mengenai perputarandari motor tersebut. Dengan demikian kita dapat mengatur kecepatan motor sesuai dengan 49
yang diinginkan dengan menekan tombol – tombol di PC dan membandingkan hasil kecepatan yang sebenarnya dengan yang dinginkan. Tombol yang digunakan dalam percobaan ini adalah tombol ENTER untuk menghidupkan motor dan bila dalam keadaan hidup, tombol ENTER juga berfungsi sebagai tombol untuk menghentikannya. Tombol lainnya adalah tombol panah ke atas (UP Arrow) yang berfungsi untuk mempercepat kecepatan motor. Jika misalnya kecepatan sudah maksimum, maka kecepatan motor tidak akan bertambah meskipun tombol UP Arrow ditekan terus. Diagram alir : Start 1
Tombol PC
N
Y Baca Tombol
Ambil Speed Enter Toggle motor
Kurang
Tombol PC
Lebih
Up Inc speed
1 Inc volt
down Dec speed
esc
Motor off
Stop
Inc speed 1
Sama
Gambar 19 Aplikasi PPI untuk kontrol tertutup
50
Demikian pula halnya dengan tombol untuk memperlambat kecepatan motor. Disini digunakan tombol panah ke bawah (Down Arrow) untuk memperlambat kecepatan motor. Bagian feedback memberikan informasi apakah kecepatan yang dihasilkan sudah tepat seperti yang dinginkan atau belum. Bila sudah tepat maka statusnya akan locked, tegangan DAC sudah terkunci sesuai dengan keinginan. Sedangkan apabila tidak tepat, maka statusnya adalah running, tegangan berusaha mencari level yang tepat agar kecepatan yang dihasilkan sesuai dengan keinginan.
51
Daftar Pustaka : 1 Setiawan Rachmad.2005.Mikrokontroller MCS 51.Graha Ilmu.Yogyakarta. 2 Intel.2005.Microprocessor /Application. NY. 3 Soebakti Hendawan.2007.Sistem Mikrokontroller.Politeknik Batam. Batam 4 Setiawan Rachmad.2005.Teknik Interface. Graha Ilmu.Yogyakarta.
52