• Tidak ada hasil yang ditemukan

KEGIATAN BELAJAR IV. A. Capaian Pembelajaran. 1. Memahami sistem mikroprosesor 2. Menerapkan sistem mikroprosesor 3. Menerapkan sistem mikrokontroler

N/A
N/A
Protected

Academic year: 2021

Membagikan "KEGIATAN BELAJAR IV. A. Capaian Pembelajaran. 1. Memahami sistem mikroprosesor 2. Menerapkan sistem mikroprosesor 3. Menerapkan sistem mikrokontroler"

Copied!
53
0
0

Teks penuh

(1)

KEGIATAN BELAJAR IV A. Capaian Pembelajaran

1. Memahami sistem mikroprosesor 2. Menerapkan sistem mikroprosesor 3. Menerapkan sistem mikrokontroler B. Sub Capaian Pembelajaran

1. Menjelaskan prinsip antarmuka sistem kendali berbasis mikroprosesor 2. Mengenali inisialisasi mikroprosesor

3. Menganalisis alur program mikroprosesor 4. Memperbaiki program mikroprosesor 5. Menganalisis alur program mikrokontroler C. Tujuan Pembelajaran

1. Mampu menjelaskan prinsip antarmuka sistem kendali berbasis mikroprosesor

2. Mampu mengenali inisialisasi mikroprosesor 3. Mampu menganalisis alur program mikroprosesor 4. Mampu memperbaiki program mikroprosesor 5. Mampu menganalisis alur program mikrokontroler D. kok-Pokok Materi

(2)

E. Uraian Materi

Mengenal dan memahami mikroprosesor secara mendalam, diperlukan pengetahuan yang memadai dari sumber yang tepercaya. Pengetahuan tersebut meliputi sejarah munculnya mikroprosesor, perkembangan mikroprosesor, hingga arsitektur dasar komputer dan mikroprosesor itu sendiri. Perkembangan mikroprosesor yang akan diuraikan meliputi mikroprosesor 4 bit, 8 bit, 16 bit, dan 32 bit.

1. Pengertian Mikroprosesor

IstiIah mikroprosesor berasal dari microprocessor, yang secara kasar dapat diterjemahkan sebagai pemroses mikro atau pengolah mikro. Secara fisik, mikroprosesor adalah sebuah keping (chip) keciI, yang merupakan integrasi (perpaduan) dari suatu rangkaian elektronika yang rumit, yang dirancang untuk mengerjakan pekerjaan-pekerjaan yang cukup kompleks.

Istilah mikro pada mikroprosesor berhubungan dengan ukuran-fisik mikroprosesor yang terbilang kecil.Gambar berikut ini memperlihatkan berbagai bentuk dan ukuran mikroprosesor.

(3)

Prosesor Intel Pentium II/III Prosesor AMD 64 bit

Prosesor Intel Pentium 4

Gambar 1.1. Berbagai bentuk dan ukuran Mikroprosessor 2. Registers dan Memori

Register-register yang terdapat pada mikroprosesor keluarga Intel (khususnya 80386-80486) adalah seperti yang diperlihatkan oleh gambar 2.1 di bawah ini, yang terdiri dari: general purpose register (register serbaguna), pointer register (register pointer), index register (register indeks), segment register (register segmen) dan

(4)

Dari gambar 2.1. dapat dilihat bahwa register-register untuk 80386-80486 adalah register-register 32 bit,kecuali register segmen (CS, DS, ES, SS, FS, dan GS) yang lebarnya 16-bit. Di samping berfungsi sebagai register 32-bit, register-register lain (general purpose register, pointer register, index register dan flag register) dapat pula digunakan sebagai register 16 bit, dan khusus untuk general purpose register dapat pula berfungsi sebagai register 8-bit.

Pada mikroprosesor generasi sebelumnya (mikroprosesor 16-bit), semua registernya adalah register 16-bit, kecuali general purpose register yang dapat berfungsi sebagai register 16-bit dan 8-bit. Adapun pada mikroprossesor generasi yang lebih tua lagi (mikroprosesor 8-bit) register-registernya adalah register 8-bit, kecuali flagregister yang lebarnya 16-bit. Perlu diperhatikan: segment register untuk mikroprosesor keluarga Intel (mulai dari generasi 8088 sampai dengan 80486) tidak berubah ukurannya, yaitu 16-bit.

a. General Purpose Register (Register Serbaguna)

General purpose register adalah register yang dipakai untuk keperluan-keperluan umum pemrograman. Setiap general purpose register (untuk prosesor Intel 80386 dan 80486) dapat dialamati sebagai register 32 bit (EAX, EBX, ECX, EDX); sebagai register 16 bit (AX, BX, CX, OX); dan sebagai register 8 bit (AH, AL, BH, BL, CH, CL, OH, DL). Berikut ini adalah register-register serbaguna beserta fungsi-fungsi khususnya.

1) Accumulator Register

EAX merupakan register 32-bit (EAX), seperti halnya register 16-bit (AX), atau dua register 8-bit (AH dan AL). Pengalamatan register 8-bit atau 16-bit akan mengubah bagian dari register 32-bit saja tanpa

(5)

Untuk instruksi ini, akumulator memunyai beberapa kegunaan khusus meski biasanya juga dianggap register multiguna. Pada mikroprosesor 80386 ke atas, register EAX mungkin juga menyimpan alamat offset lokasi dalam sistem memori.

Accumulator register adalah register serbaguna yang berfungsi sebagai:

a) tempat penyimpanan sementara hasil suatu operasi aritmatika atau logika (register AL, AH, AX, dan EAX).

Contoh:

ADD AX,DX menjumlahkan isi register AX dengan DX, hasilnya; disimpan di register AX.

SUB AX,DX mengurankan isi register AX dengan DX, hasilnya; disimpan di register AX.

AND AX,BX isi register AX di-AND-kan dengan BX hasilnya disimpan di AX

XOR AX,AX isi register AX di-XOR-kan dengan dirinya sendiri (untuk mengosongkan isi register AX)

(6)

b) tempat memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi (register AH).

Contoh:

;---………

MOV DL,'A' ; mengisi.register DL dengan karakter yang akan dicetak

MOV AH,02h ; memasukkan layanan nomor 2 interrupt- 21h (memesan layanan pencetakan karakter)

INT 21H ; mencetak karakter yang ada pada register DL ………

;---c) tempat meyimpan bilangan yang dikalikan (register AL, AX, EAX) dan setengah bagian terkecil (least significant part) dari hasil suatu perkalian (register DX-AX dan EDX-EAX).

Contoh:

MUL CL ; mengalikan isi register AL dengan CL, hasilnya disimpan di register AX

MUL CX ; mengalikan isi register AX dengan CX, hasilnya disimpan di register DX dan AX (DX-AX)

MUL ECX ; mengalikan isi register EAX dengan.ECX, hasilnya disimpan di register EDX dan ECX (EDX - EAX)

d) tempat menyimpan setengah bagian terkecil(least significant part) sebuah bilangan yang akan dibagi (register DX-AX' danEDX-EAX) dan hasil bagi suatu pembagian (register" AL, AX, danEDX-EAX). Contoh:

DIV BL ; isi register AL dibagi dengan isi register BL, hasilnya disimpan di register AL, dan sisanya di register AH.

DIV BX ; isi register DX-AX dibagi dengan register BX, hasilnya disimpan di AX, dan sisanya di register DX.

DIV EBX ; isi register EDX-EAX dibagi dengan register EBX, hasilnya disimpan di EAX, dan sisanya do register EDX.

2) Base Register

(7)

pada semua versi mikroprosesor. Pada mikroprosesor 80386 ke atas, EBX juga dapat mengalamati data memori.

Base register adalah register serbaguna yang berfungsi sebagai tempat menyimpan alamat offset data yang terletak di memori (register BL, BH, BX, dan EBX).

Contoh:

MOV AX,[BX]; mengkopikan data pada lokasi memori yang alamat offsetnya ditunjukkan oleh isi register BX ke register AX MOV [BX+DI],DX ; mengkopikan data pada register DX ke lokasi memori yang alamat offsetnya ditunjukkan oleh isi register [BX+DI]

MOV, [BX+DI+25],DI ; mengkopikan data pada register DI ke lokasi memori yang alamat offsetnya ditunjukkan oleh isi register [BX+DI+25]

MOV CX,[BX+DI+100] ; mengkopikan data pada lokasi memori yang alamat offsetnya ditunjukkan oleh isi register [BX+DI+100] ke register CX

3) Counter Register

ECX adalah register multiguna yang juga menyimpan cacahan (count) untuk berbagai instruksi. Pada mikroprosesor 80386 ke atas, register ECX juga dapat menyimpan alamat offset dari data memori. Instruksi yang menggunakan cacahan adalah instruksil string berulang (REP/REPE/REPNE); shift, rotate, dan instruksil LOOP/LOOPD. Instruksi shift dan rotate menggunakan CL sebagai cacahan, instruksi string berulang (repeated string instruction) menggunakan CX, dan instruksi LOOP/LOOPD menggunakan CX atau ECX.

Counter register adalah register serbaguna yang befungsi sebagai:

a) pencacah untuk operasi loop/kalang/pengulangan (register CX dan ECX).

Contoh:

;---...

...

MOV CX,03h ; mengeset pencacah = 3

(8)

LOOP UL ; mengulangi proses penjumlahan 2 kali lagi

... ...

;---b) pencacah untuk operasi shift dan rotate(register CL).

Contoh:

;---...

...

MOV CL,04h ; mengisi register CL dengan 04h. MOV AX,88h ; mengisi register AX dengan 88h.

SHL AX,CL ; isi register AX digeser KE KIRI sebanyak langkah yang ditunjukkan oleh register CL.

SHR AX,CL ; isi register AX digeser KE KANAN sebanyak langkah yang ditunjukkan oleh register CL.

ROL ROR

... ...

;---c) pencacah (counter) untukoperasi string (CX).

Contoh:

;---...

...

COCOKKAN PROC NEAR ; awal prosedur

MOV SI, OFFSET TAB1 ; mengambil alamat offset variabel TAB1 di memori

MOV D1,OFfSET TAB2 ; mengambil alamat offset variabel TAB2 di memori

CLD ; mengeset autoincrement (pencacahan naik)

(9)

COCOKKAN ENDP ; akhir prosedur ...

...

;---4) Data Register

EDX adalah register multiguna yang menyimpan hasil perkalian atau pembilang pada pembagian. Pada 80386 ke atas, register ini juga dapat mengalamati memori data.

Data register adalah register serbaguna yang berfungsi sebagai: a) tempat menyimpan setengah bagian terbesar(most significant

part) hasil suatu perkalian bilangan 16-bit (register DX-AX) dan 32-bit (register EDX-EAX).

Contoh:

MUL CX ; mengkalikan isi register AX dengan isi register CX, hasilnya disimpan di register DX-AX

MUL ECX mengalikan isi register EAX dengan isi register ECX, hasilnya disimpan di register EDX-EAX

b) tempat menyimpan setengah bagian terbesar(most significant part) suatu bilanganyang akan dikenai operasi pembagian(register DX-AX dan EDX-EAX), sertas sisa suatu pembagian (register DX dan EDX)

Contoh: .'

DIV BX ;membagi isi register DX-AX dengan isi register BX, hasilnya disimpan di register AX, sisanya di register DX

DIV EBX ; membagi isi register EDX-EAX dengan isi register EBX, hasilnya disimpan di register EAX, sisanya di register EDX

(10)

b. Pointer Register (Register Pointer)

Sebenarnya pointer register dapat berfungsi sebagai sebuah general purpose register, akan tetapi pointer register lebih sering digunakan untuk menujukkan alamat sebuah data di lokasi memori. Penunjukan alamat ini biasanya dibutuhkan pada saat operasi perpindahah data (dari atau ke memori), operasi stack (PUSH dan POP), dan penunjukan alamat suatu instruksi yang akan dieksekusi (saat sebuah program sedang dijalankan).Berikut ini adalah register-register yang termasuk dalam kategori pointer register beserta fungsi-fungsi khususnya.

1) Stack Pointer Register (SP dan ESP)

ESP mengalamati suatu area dalam memori yang disebut stack. Memori stack menyimpan data melalui pointer ini dan akan dijelaskan lebih lanjut nanti beserta instruksi yang digunakan untuk mengalamati data stack. Register ini disebut SP ketika digunakan sebagai register 16-bit dan disebut ESP sebagai register 32-bit.

Berpasangan dengan register SS, ditulis sebagai "SS:SP", stack pointer register berfungsi untuk:

a) menunjukkan alamat stack memory pada operasi PUSH dan POP Contoh:

PUSH AX ; isi register AX dikopikan ke tumpukan stack paling atas (dialamati oleh SS: SP-2)

POP BX ; isi tumpukan stack paling atas .(dialamati oleh SS: SP) dipindahkan ke register BX

b) menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur (CALL) dan mengarahkan kembali Control Unit ketika prosedur yang dipanggil telah selesai dieksekusi (RET).

2) Base Pointer Register (BP)

EBP menunjuk lokasi memori pada semua versi mikroprosesor untuk transfer memori data. Register ini dapat dialamati, baik

(11)

Berpasangan dengan register SS, ditulis sebagai "SS:BP", base pointer register berfungsi untuk menunjukkan aJamat sebuah data di suatu lokasi memori.

Contoh:

MOV AX,[BX]; data pada lokasi memori yang, alamat offsetnya ditunjukkan oleh isi register-BX dikopikan ke register AX

MOV [BX],DX; isi register BX dikopikan ke lokasi memori yang alamat offsetnya ditunjukkan oleh isi register BX

3) Instruction Pointer Register (IP)

Berpasangan dengan register CS ("CS:IP") berfungsi untuk menenunjukkan alamat instruksi berikutnya. EIP (pointer instruksi) digunakan untuk mengalamati insttuksi selanjutnya yang ada pada suatu bagian memori seperti yang didefinisikan dalam segmen kode. Register ini disebut IP (16-bit) ketika mikroprosesor berbperasi dengan mode riil dan disebut dengan EIP (32-bit) ketika 80386 ke atas beroperasi dengan mode terproteksi. Perlu diketahui, me ski 8086, 8088, dan 80286 memunyai EIP, hanya 80286 ke atas yang beroperasi dalam mode terproteksi. Pointer instruksi, yang menunjuk instruksi selanjutnya dalam suatu program, digunakan oleh mikroprosesor untuk mendapatkan urutan instruksi selanjutnya dalam program yang terdapat pada segmen kode. Pointer instruksi dapat dimodifikasi dengan instruksi jump atau call.

c. Index Register (Register Indeks)

Sama halnya dengan pointer register, index register pun dapat berfungsi sebagai sebuah general purpose register, akan tetapi index register lebih sering digunakan untuk rnenunjukkan alamat sebuah data di lokasi memori pada operasi-operasi string. Secara khusus, index register juga dipakai untuk rnenunjukan alamat suatu data berindeks(data bertipe larik) di dalarn memori.

Berikut ini adalah register-register yang termasuk dalam kategori index register beserta-fungsi-fungsi khususnya.

(12)

1) Source Index (SI)

ESI digunakan sebagai ESI maupun SI Register indeks asal sering digunakan untuk mengalamati data string asal untuk instruksi string. Seperti halnya EDI, ESI juga berfungsi sebagai register multiguna. Sebagai register 16-bit, register tersebut dialamati sebagai SI, sedangkan sebagai register 32-bit, dialamati sebagai ESI

Source index register biasanya digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.

Contoh:

MOV SI, OFFSET TBLl ;mengambil alamat TBL1 2) Destination Index (DI)

EDI sering digunakan untuk mengalamati data string tujuan untuk instruksi string. Register ini juga berfungsi sebagai register multi guna 32-bit (EDI) maupun 16-bit (DI).source index register, destination index juga biasanya digunakan pada operasi string untuk mengakses alamat suatu data di dalam memori secara langsung.

Contoh:

MOV DI,OFFSET TBL2 ;mengambil alamat TBL.

d. Segment Register (Register Segmen)

Segment register (bersama dengan register-register tertentu) membentuk alamat memori bagi suatu data. Segment register pada operasi real-mode berbeda dengan segment register pada. operasi protected mode Ketika sebuah segment register didefinisikan, daerah tertentu pada:memori fisik diberi nama, diberi alamat, dan dialokasikan sebagai sebuah lokasi memori secara logika. Dalam bagian ini fokus perhatian akan ditujukan pada segment register dalam operasi real-mode.

1) Code Segment Register (CS)

(13)

Segmen kode (code segment) merupakan bagian memori yang menyimpan kode (program dan prosedur) yang digunakan oleh mikroprosesor Register segmen kode mendefinisikan alamat awal dari bagian memori yang menyimpan kode. Dalam operasi mode riil, register tersebut mendefinisikan awal bagian memori 64K. byte; sedangkan pada mode terproteksi, register tersebut memilih deskriptor dan menentukan alamat awal dan panjang memori yang: digunakan untuk menyimpan kode. Segmen kode dibatasi hanya sebesar 64K byte pada 8088-80286, dan 4G byte pada 80386 ke atas.

2) Data Segment Register (DS)

Data segment register berpasangan dengan register-register lainnya ("DS:reg"). berfungsi untuk menunjukkan alamat data pada operasi pemindahan data.Segmen data (data segment) merupakan bagian memori yang menyimpan sebagian besar data yang digunakan oleh program. Data diakses pada segmen data melalui alamat offset atau isi dan register lain yang menyimpan alamat offset tersebut. Seperti halnyal segmen kode dan segmen yang lain, panjangnya dibatasi hanya 64K byte pada 8086-80286, dan 4G byte pada 80386 ke atas Contoh:

MOV [BX],AX ; isi register AX dikopikan ke lokasi memori yang alamat offsetnya ditunjukkan oleh register BX atau alamat absolut yang ditunjukkan oleh isi register DS x 10 h + isi register BX

MOV CX,[DX] ; isi lokasi memori yang alamat offsetnya ditunjukkan oleh register DX (alamat absolutnya ditunjukkan oleh isi register DS x 10 h +isi register DX) dikopikan ke register CX

3) Extra Segment Register .(ES)

Extra segment register merupakan register segment tambahan yang digunakan pada operasi-operasi stringuntuk menyimpan data tujuan.

4) Stack Segment Register (SS)

Segmen stack (stack segment) mendefinisikan area memori yang digunakan untuk stack. Masukan stack ditentukan oleh segmen,

(14)

stack dan register stack pointer. Register BP juga mengalamati data dalam segmen stack.

Berpasangan dengan register SP ("SS:SP") stack segment register berfungsi untuk:

a) menunjukkan alamat stack memory pada operasi PUSH dan POP b) menyimpan alamat instruksi berikutnya ketika memanggil suatu

prosedur (CALL) dan mengarahkan kembali eksekusi ke program utama (RET).

5) FS dan GS Register

Register ini merupakan register segmen tambahan pada 80836-80486 dan Pentium sehingga segmen memori yang dapat diakses oleh program menjadi lebih besar.

(15)

e. Flag Register (Register Status)

Flag register berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosesor. Gambar 2.2. berikut ini memperlihatkan flag register untuk semua versi mulai dari 8086-80486 sampai dengan Pentium dan Pentium 4. Flag register pada mikroprosesor terdahulu tetap kompatibel untuk mikroprosesor generasi berikutnya. Mikroprosesor 8086-80286 memiliki flag register 16 bit, sedangkan 80386-80486 memiliki flag register 32 bit.

Segmen FS dan GS merupakan register segmen tambahan yang terdapat pada mikroprosesor 80386, 80486, dan Pentium sampai Pentium4 agar menggunakan dua segmen memori tambahan untuk diakses program.

Gambar 2.2. Flag register untuk mikroprosesor keluarga intel. Bit-bit pada flag register akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Bit-bit tersebut adalah sebagai berikut:

1) C (cary): mengindikasikan ada/tidaknya bawaan (cary) setelah operasi pengurangan. C = 1 berarti ada bawaan, sebaliknya C = 0 berarti tidak ada bawaan. Bit C dapat juga berfungsi untuk mengindikasikan kesalahan (error) pada beberapa program dan prosedur (procedure).

Carry menyimpan bit carry setelah proses penjumlahan atau borrow setelah pengurangan. Flag carry juga menandakan kondisi eror seperti yang ditentukan oleh beberapa program atau prosedur.

(16)

2) P (parity): mengindikasikan jumlah bit 1 dalam suatu data. Bila P = 0 berarti paritasnya ganjil, dan bila P = 1 berarti paritasnya genap. Sebagai contoh, bila dalam suatu data ada 3 bit "1" berarti P = 0 (berparitas ganjil). Dalam komunikasi data antar komputer, paritas dapat digunakan untuk pengecekan kesalahan pengiriman data. Parity adalah logika 0 untuk paritas ganjil dan 1 untuk paritas genap. Paritas merupakan jumlah bit satu dalam sebuah angka yang dinyatakan dalam jumlah genap atau ganjil. Sebagai contoh jika suatu angka memunyai tiga buah bit satu maka angka tersebut mempunyai paritas ganjil. Jika suatu angka mempunyai sebuah bit nol, angka tersebut memunyai paritas genap. Flag paritas tak banyak digunakan pada program aplikasi modem meski pada mikroprosesor terdahulu berguna untuk mengecek data pada lingkungan komunikasi data. Saat ini, pengecekan paritas lebih sering dilakukan oleh peranti komunikasi data dan bukan oleh mikroprosesor.

3) (auxilirry carry): mengindikasikan ada/tidaknya bawaan (carry) pada bit ke-3 dan ke-4 setelah operasi pengurangan. A = 1 berarti ada bawaan, sebaliknya A = 0 berarti tidak ada bawaan. Bit A ini relatif jarang digunakan dalam program.

Auxiliary carry menyimpan half carry setelah penjumlahan atau borrow setelah pengurangan antara posisi bit 3 dan 4 dari hasil. Flag khusus ini diuji oleh instruksi DAA dan DAS untuk menyesuaikan nilai AL setelah penjumlahan atau pembagian BCD. Selain itu, bit flag A tidak digunakan oleh mikroprosesor atau instruksi yang lain.

4) Z (zero): mengindikasikan apakah hasil suatu operasi aritmatika atau logika bernilai 0 atau bukan. Bila Z = 1 berarti hasilnya 0, dan Z = 0 berarti hasilnya bukan 0. Seperti hal-nya bit C, bit Z juga dapat digunakan untuk mengindikasikan kesalahan dalam suatu program atau prosedur.Flag zero menunjukkan bahwa hasil dari suatu operasi aritmatika atau logika adalah nol. Jika Z = 1, hasilnya adalah nol dan jika Z =1 maka hasilnya bukan nol.

(17)

5) S (sign): mengindikasikan apakah hasil suatu operasi aritmatika atau logika positif atau negatif. Bila S = 1 berarti hasil negatif, <.lan S = 0 berarti hasilnya positif.Flag sign menyimpan tanda aritmatika dari hasil setelah menjalankan instruksi aritmatika atau logika. Jika S = 1 maka bit sign (bit paling kiri dari angka) adalah set atau negatif; jika S = 0, bit sign adalah clear atau positif.

6) T (trap): bila diset 1, dimungkinkan melakukan debugging (penelusuran kesalahan).Flag trap memungkinkan pembuatan jebakan melalui fitur on-chip debugging. (Suatu program di-debug dengan tujuan untuk mencari eror atau bug.) Jika flag T diaktifkan (1), mikroprosesor akanr menginterupsi aliran program pada kondisi yang diindikasikan oleh register debug dan register kontrol. Jika flag T berlogika 0, fitur trapping (debugging) dinonaktifkan: Pada program Code View, dapat digunakan fitur trap dan register debug untuk men-debug kesalahan program.

7) I (Interrupt): mengendalikan operasi ihterupsi perangkat keras. Bila I = 1 berarti pin INTR enabled (bisa digunakan), bila I = 0 pin berarti INTR disabled (tidak bisa digunakan). Untuk mengendalikan bit I ini dapat dilakukan dengan instruksi STI (mengeset I = 1) dan CLl (mereset I = 0).Flag interupsi mengontrol operasi dari pin masukan INTR (interrupt request). Jika I = 1, pin INTR diaktifkan dan jika I = 0 maka pinINTR dinonaktifkan. Kondisi flag I dikontrol dengan instruksi STI (set I flag) dan CLI (clear I flag).

8) D (direction): mengendalikan arah pencacahan (increment atall decrement) DI dan SI pada operasi string. Bila D = 1 arah pencacahan adalah turun (decrement), bila D = 0 arah pencacahan adalah naik (increment). Untuk mengendalikan bit D ini dapat dilakukan dengan instruksi STD (mengeset D = 1) dan CLD (mereset D = 0).Flag direction memilih mode increment (naik) atau decrement (turun) untuk register DI dan SI selama instruksi string. Jika D = 1, maka register tersebut secara otomatis akan diturunkan; jika D = 0, maka register tersebut secara otomatis akan dinaikkan. Flag D diset

(18)

9) O (overflow): mengindikasikan apakah hasil operasi penjumlahan atau pengurangan melampaui kapasitas mesin atau tidak. Sebagai contoh, bila sebuah bilangan 7Fh (= 127d) dijumlahkandengan 01h (= 01d) akan menghasilkan 80h. Bila kedua bilangan dijumlahkan dengan menggunakan register 8bit, 80h akan diartikan sebagai -128d, padahal seharusnya 128d (positif). Pada kasus ini, bit 0, akan . diset = 1 untuk mengindikasikan bahwa operasi penjumlahan 8 bit tidak mampu menjumlahkan kedua biangan tersebut. Sebagai pemecahannya, dapat dilakukan dengan operasi penjumlahan 16-bit.Overflow terjadi ketika angka bertanda dijumlahkan atau dikurangi. Overflow merupakan tanda bahwa hasil melebihi kapasitas mesin. Sebagai contoh, jika 7FH (+127) dijumlahkan -menggunakan pejumlahan 8-bit - dengan OlH (+1), hasilnya adalah 80 (-128). Hasil ini merepresentasikan kondisi overflow yang ditandakan dengan overflow flag untuk penjumlahan bertanda. Untuk operasi tak bertanda (unsigned operation), overflow flag diabaikan.

10) IOPL (input-output privilege level): digunakan untuk operasi protected mode untuk memilih tingkat keistimewaan (privilege level) piranti masukan-keluaran.IOPL digunakan dalam operasi mode terproteksi untuk memilih level privilege (privilege level) peranti I/O. Jika level privilese saat ini lebih tinggi atau lebih dipercaya dari pada IOPL, I/O dijalankan tanpa halangan. Namun, jika IOPL lebih rendah dari level privilese saat ini maka ketika terjadi interupsi, akan menyebabkan penangguhan jalannya I/O. Perlu diketahui bahwa ketika IOPL bernilai 00 maka tingkatannya adalah paling tinggi atau dapat dipercaya; jika IOPL bemilai 11 maka tingkatannya adalah paling rendah atau tidak dipercaya.

11) NT (nested task): mengindikasikan apakah operasi yang sedang dilakukan digandeng (nested) dengan operasi lain pada operasi protected mode.Flag nested task menandakan bahwa tugas saat ini disarangkan (nested) dalam tugas lain pada operasi mode terproteksi. Flag ini set ketika tugas tersebut disarangkan oleh perangkat lunak.

(19)

12) RF (resume): digunakan pada saat debugging untuk mengendalikan kelanjutan eksekusi.Flag resume digunakan dengan debugging untuk mengatur permulaan eksekusi setelah instruksi selanjutnya.

13) VM (virtual mode): memilih operasi virtual mode pada operasi protected mode.Bit flag VM memilih operasi mode virtual dalam sistem mode terproteksi. Sistem mode virtual memungkinkan pembagian beberapa memori DOS berukuran 1M byte dalam sistem memori. Pada dasarnya, hal ini mendukung sistem program untuk menjalankan beberapa program DOS.

14) AC (alignment check): untuk mengecek apakah suatu data word atau doubleword dialamati ke memori yang bukan data word atau bukan doubleword.Bit flag aligment check aktif ketika word atau doubleword dialamati dengan batas non-word atau non-doubleword. Hanya mikroprosesor 80486SX yang memunyai bit aligment check yang terutama digunakan oleh koprosesor numeriknya, yaitu 80487SX, untuk sinkronisasi.

15) VIF (virtual interrupt flag) adalah salinan dari flag interupsi yang terdapat pada mikroprosesor Pentium-Pentium 4.

16) VIP (virtual interupt pending), menyediakan informasi mengenai interupsi mode virtual untuk mikroprosesor Pentium-Pentium 4. Bit ini digunakan pada lingkungar multitasking untuk menyediakan informasi bagi sistem operasi mengenai flag interupsi virtual dan interupsi yang tertunda (interrupt pending).

17) Flag ID (identification) menandakan bahwa mikroprosesor Pentium-Pentium 4 mendukung instruksi CPUID. Instruksi CPUID melengkapi sistem dengan informasi mengenai mikroprosesor Pentium, seperti nomor versi dan pabrik pembuatnya.

(20)

Ruang memori dalam suatu sistem berbasis mikroprosesor dapat diperlihatkan (direpresentasikan) sebagai memori secara fisik (physical memory) dan memori secara logika (logical memory). Struktur.memori secara fisik dan logika berbeda untuk sebagian besar kasus.

a. Memori Secara Logika (Logical Memory)

Memori secara logika adalah memori yang dilihat dari sudut pandang pemrogram. Struktur memori secara logika pada dasarnya sarna untuk semua mikroprosesor Intel. Perbedaannya hanya pada kapasitas memori yang berbeda-beda untuk setiap generasi mikroprosesor.

(21)

Memori logika 8086, 8088, dan 80186 dimulai dari alamat 00000h sampai FFFFFh (1MB). Memori logika 80286 dan 80386SX dimulai dari alamat 0000000h sampai FFFFFFFh (sebesar 16MB). Memori logika 80386SL adalah sebesar 32MB, dimulai dari alamat 0000000h sampai 1FFFFFFh. Dan akhirnya memori logika 80386DX, 80486SX, dan 80486DX adalah sebesar 4GB, dimulai dari alamat 00000000h sarnpai FFFFFFFFh (1GB = 1024 MBd 1MB, = 1024 KB, 1K = 1024 B, 1B = 8 bit).

Bila mikroprosesor mengalamati sebuah data .16 bit di memori, maka 2 byte yang berturutan akan diakses. Sebagai contoh, sebuah word (data dengan panjangn 16 bit) yang berada pada lokasi memori 00122h, akan disimpan pada alamat 00122h dan 00123h dengan least significant byte (byte terendah) pada alamat 00122h. Dengan cara yang sama bila mikroprosesor mengalamati sebuah data 32 bit di memori, maka 4 byte yang berturutan akan diakses. Sebagai contoh, double yang berada pada lokasi memori 00120h, akan disimpan pada alamat 00120h, 00121h, 00122h, dan 00123h dengan least significant byte (byte terendah) pada alamat 00120h.

b. Memori secara Fisik (Physical Memory)

Memori secara fisik adalah memori yang berwujud fisik (hardware). Memori fisik mikroprosesor keluarga Intel berbeda-beda lebarnya. Memori untuk 8088 lebarnya 8-bit; untuk 8086, 80186, 80286, dan 80386SX lebamya 16-bit; dan untuk 80386DX dan 80486 lebamya 32-bit. Perbedaan lebar memori fisik bukanlah sebuah masalah, karena untuk keperluan pemrograman, memori diperlakukan sebagai memori logika yang lebarnya selalu 8-bit.

Memori diorganisasikan dalam bank memori (memory bank), kecuali untuk 8088. Sebuah bank memori memiliki lebar 8-bit, dengan demikian mikroprosesor 16 bit akan memiliki 2 bank memori yang dialamati sebagai byte dan word, dan mikroprosesor 32-bit akan memiliki 4 bank memori yang dialamati sebagai byte, word, dan

(22)

c. Memori pada Personal Computer (PC)

PC dikembangkan berbasis (kompatibel dengan) mikroprosesor 8088. Oleh karenanya pengorganisasian memori pada PC mirip dengan memori 8088 yang hanya memiliki memori utama sebesar 1Mb. Memori ini biasanya disebut sebagai real memory (memori yang sesungguhnya). Gambar 3.3 berikut ini memperlihatkan peta memperlihatkan peta momori pada PC

(23)

Daerah 640 KB pertama dari ruang memori disebut TPA (transient program area) atau disebut juga conventional memory. TPA adalah daerah memori tempat mikroprosesor meletakkan sistem operasi (operating system), program-program pengendali piranti I/O (I/O devices controller programs) dan program-program aplikasi. System area dipakai sebagai video display RAM (untuk menyimpan video images), sebagai tempat untuk meletakkan program BIOS (basic input/output system) yang berfungsi untuk mengendalikan seluruh sistem, dan sebagai daerah terbuka untuk trame-frame yang digunakan untuk mengakses expanded memory.

Daerah memori di atas 1 MB disebut sebagai extended-memory. Pada masa awal perkembangan mikroprosesor, daerah ini tidak bisa diakses oleh mikroprosesor, sampai ditemukan,suatu teknik baru (teknik expanded memory), yaitu pemanfaatan daerah-daerah kosong (frame-frame sebesar 64 KB) pada system area untuk mengakses daerah memori tersebut. Akan tetapi, semenjak 80286 dapat mengakses memori di atas 1 MB. ini, maka teknik expanded memory mulai ditinggalkan, karena akses memori : melalui ftame-frame tersebut ternyata lebih lambat daripada teknik yang dikembangkan untuk generasi 80286 dan seterusnya tersebut.

d. Segmen dan Offset pada Real Mode Memory

Alamat suatu data pada lokasi memori ditentukan oleh alamat segment dan alamat offset. Biasanya dilambangkan sebagai segment:offset. Alamat yang sebenarnya (absolut) dari suatu data beralamat segment offset adalah segment x 10h + offset.

Contoh:

Alamat relatif Segment Offset Alamat Absolut

1000 : 2500 1000h 0250h 10250h

(24)

0350 : 0100 0350h 0100h 3600h

Suatu ukurannya adalah 64 K, oleh karenanya alamat segment xxxxh dimulai dari alamat xxxx0h sampai dengan alamat xxxx0h + FFFFh. Berikut ini adalah beberapa contoh lokasi memori segmen.

Register Segment Alamat Awal Alamat Akhir 100h 1000h 2500h 1234h 1000h 10000h 25000 12340h 10FFFh 1FFFFh 34FFFh 2233Fh

Untuk mikroprosessor Intel ada 4 register segmen, dan setiap register segmen mempunyai pasangan register lain sebagai offsetnya. Berikut ini adalah tebel pasangan register segmen dan offset untuk mikroprosessor Intel.

Tabel 3.1. Default segment dan offset untuk 8086-80286

Segment Offset CS DS SS ES IP

BX, DI, SI, bilangan 16 bit SP, BP

DI, (untuk operasi string)

Tabel 3.2. Default segment dan offset untuk 80386-80486

Segment Offset

CS DS

SS

EIP

EAX, EBX, ECX, EDI, ESI, bilangan 8 bit dan 32 bit

(25)

FS GS

Tidak ada Tidak ada

4. Arsitektur Dasar Komputer

Agar dapat berfungsi sebagaimana mestinya, sebuah bangunan harus dibagi menjadi ruangan-ruangan dengan berbagai bentuk dan ukuran. Masing-masing ruangan dirancang untuk fungsi-fungsi tertentu, dan saling dihubungkan dengan pintu atau jendela. Analogi ini dapat pula diterapkan kepada komputer.

Arsitektur komputer berhubungan dengan perancangan blok-blok dasar (seperti prosesor, memori, dan piranti masukan dan keluaran), dan bagaimana blok-blok tersebut berinteraksi satu sarna lain. Seorang arsitek komputer memilih dan membangun interkoneksi antar blok dengan mempertimbangkan beberapa hal, seperti kecepatan, harga, dan kehandalan. Arsitektur komputer yang dihasilkan haruslah dapat menggambarkan fungsi-fungsi yang dapat dilakukan oleh sebuah komputer. Komputer berarsitektur von Neumann terdiri dari 3 komponen utama, yaitu sebuah unit pengolah pusat (Central Processing Unit/CPU), pengingat/memori (memory), dan piranti masukan dan) keluaran "(input/output devices)

(26)
(27)

Ketiga komponen utama tersebut dapat dijelaskan secara singkat sebagai berikut.

1. CPU (mikroprosesor), yang dapat dianggap sebagai 'otak' sebuah sistem komputer, mengorganisasikan semua operasi yang terjadi di dalam komputer. Operasi-operasi perpindahan data, operasi aritmatika dan logika, dan pengendalian piranti masukan dan keluaran beserta seluruh sumber daya (resources) yang ada dikendalikan oleh CPU. 2. Memori komputer digunakan untuk menyimpan data maupun

instruksi-instruksi program. Ada 2 jenis memori yang digunakan dalam komputer, yaitu: RAM (random access memory) dan ROM (read only memory). RAM menyimpan data dan instruksi program yang sedang dijalankan oleh komputer. RAM ini bersifat sementara (temporary), yang berarti isinya akan hilang begitu catu dayanya dimatikan (turned off). Berbeda dengan RAM, ROM bersifat permanen. Data-data pada ROM tidak akan hilang meskipun catu daya komputer dimatikan. ROM biasanya digunakan untuk menyimpan instruksi-instruksi initial boot up, yaitu instruksi-instruksi yang dijalankan ketika komputer baru dihidupkan. Instruksi-instruksi ini berfungsi untuk mempersiapkan komputer agar dapat digunakan sebagaimana mestinya.

3. Piranti masukan/keluaran (I/O devices) adalah piranti-piranti eksternal yang dibutuhkan oleh. komputer untuk berhubungan dengan dunia luar (termasuk dengan.manusia sebagai pengguna komputer). Beberapa piranti yang dapat dikategorikan sebagai piranti masukan keluaran adalah sebagai berikut:

a. layar monitor (untuk keperluan penampilan suatu proses dan hasil proses tersebut),

b. papan ketik/keyboard (untuk pemasukan data bernpa teks. maupun baris baris perintah/command line),

c. printer (untuk keperluan pencetakan),

(28)

e. scanner (untuk memasukkan data citra), f.dan lain-lain.

Ketiga komponen utama tersebut (CPU, memori, dan piranti masukan dan keluaran) saling dihubungkan dengan 3 buah bus (jalur penghubung), yaitu bus data (data bus), bus kendali (control bus), dan bus alamat (address bus).

Setiap bus memiliki fungsi sendiri-sendiri: bus data untuk melewatkan data, bus kendali untuk melewatkan sinyal kendali, dan bus alamat untuk melewatkan alamat.

5. Arsitektur Dasar Mikroprosesor

CPU (mikroprosesor), yang menjadi fokus perhatian di sini, dapat pula dijabarkan lebih terperinci: Gambar 1.3 merepresentasikan komponen-komponen internal sebuah mikroprosesor. Seperti yang terlihat pada gambar, sebuah mikroprosesor terdiri dari 3 komponen internal utama, yaitu ALU, CU, dan Register.

(29)

Gambar 1.3. Arsirekrur internal mikroprosesor a. ALU (Arithmetic and Logic UnitlUnit Aritmatika dan Logika)

Unit ini berfungsi untuk menangani operasi-operasi aritmatika (penjumlahan, pengurangan, perkalian, pembagian) dan operasi-operasi logika (and, or, exor, dan lain-lain). Operasi-operasi aritmatika dan logika akan dibahas kemudian dalam bab tersendiri.

b. CU (Control UnitlUnit Kendali)

Unit ihi berfungsi untuk mengatur semua proses internal (perpindahan data, penanganan interupsi, pengendalian jalannya program, pengendalian piranti masukan dan keluaran beserta seluruh sumber daya (resources) pada mikroprosesor.

c. Register

Pada dasamya, register adalah memori yang dapat diakses dengan sangat cepat oleh mikroprosesor. Operasi-operasi aritmatika dan logika yang kompleks membutuhkan tempat penyimpan sementara hasil dari tahapan-tahapan operasi tersebut. Proses pemindahan data dari lokasi memori ke media penyimpan juga memerlukan tempat penampung sementara. Banyak lagi pekerjaan mikroprosesor yang memerlukan 'tempat sementara' (semacam kertas buram), yang dapat diakes dengan sangat cepat. Tempat sementara itu adalah register. Pada bagian berikut akan dibahas sedikit tentang register-register yang ada pada mikroprosessor Intel pada umumnya.

6. CARA MENGAKSES PORT

Karena prosesor 8051 memiliki internal Port, maka prosesor ini dapat digunakan sendirian (single chip application) tanpa melibatkan external clock generator, external I/O device, external Memory, address decoder atau chip digital lainnya. Prosesor ini sudah dapat digunakan sebagai kontroler tanpa melibatkan chip digital lainnya.

(30)

a. Port pada 8051.

Untuk menghubungkan algoritma program dengan sistem atau alat yang akan dikendalikannya, telah disediakan 32-pin yang dikelompokkan menjadi 4 port, yaitu Port 0, Port 1, Port 2 dan Port 3. Setiap bit pada register port terkait langsung dengan kondisi pin tertentu, misalnya jika bit pada P1.5 (baca: bit kelima pada Port 1) diberi nilai biner “1”, maka pin yang terkait dengannya, yaitu pin nomor 6 (lihat Gambar 5.1.) akan berkondisi HIGH atau tegangan 5 volt. Jika pin 6 ini disambungkan ke sebuah LED, maka LED akan menyala. Sebaliknya, jika pin 6 tsb disambungkan ke sebuah sensor dan sensor tsb dalam kondisi HIGH, maka P1.5 akan bernilai “1”. Pada kasus LED, pin P1.5. berfungsi sebagai pin output, sedangkan pada kasus sensor, pin tsb berfungsi sebagai pin input bagi prosesor.

Register P0, P1, P2 dan P3 merupakan register bit addressable, setiap bit dapat diakses 2 arah (input atau output) secara terpisah tanpa mempengaruhi bit lainnya. Sebagai contoh, saat P1.5 digunakan sebagai pin input, P1.4 dapat digunakan sebagai output atau sebaliknya.

Gambar 5.1. Konfigurasi Pin Mikrokontroler AT89C51 Port 0.

(31)

8-maupun LOW. Output dari port 0 dapat mensuplai arus ke 8 buah pin TTL. Meskipun demikian, karena pin pada port 0 tidak dilengkapi dengan internal pull-up, biasanya pin-pin pada port ini digunakan sebagai pin input.

Selain untuk paralel port, pin-pin pada port 0 juga dapat digunakan untuk pin address (A0– A7) maupun pin data (D0– DA7) ketika prosesor menggunakan

memory atau I/O eksternal. Port 1.

Port 1 terdapat pada pin 1 s/d pin 8. Port 1 adalah port paralel 8-bit dua arah yang telah dilengkapi dengan internal pull-up. Setiap pin pada port 1 dapat mensuplai arus ke 4 buah pin TTL. Seluruh pin dapat digunakan sebagai input maupun output.

Port 2.

Port 2 terdapat pada pin 21 s/d pin 28. Port 2 adalah paralel port dua arah yang dilengkapi dengan rangkaian pull-up. Output dari port 2 dapat mensuplai arus ke 4 buah pin TTL. Selain sebagai paralel port. Port 2 juga dapat digunakan sebagai pin address (lihat Gambar 5.1.). Untuk fungsi ini port 2 mengunakan internal pull-up yang kuat.

Port 3.

Port 3 terletak pada pin 10 s/d 17. Port 3 adalah port paralel dua arah yang dilengkapi dengan rangkaian pull-up. Output dari port 3 dapat mensuplai arus ke 4 pin TTL. Selain itu port 3 juga memiliki fungsi lain yang dapat dilihat pada tabel 3.1 berikut :

(32)

b. Mengakses Port pada 8051.

Cara mengakses Port tertentu adalah dengan menuliskan nama port tsb dalam instruksi, misalnya :

MOV P1,#10010110B atau MOV P1,#96H

Berarti Register Port 1 pada SFR diberi data 10110110 dalam bilangan biner. Karena program menyebabkan Port 1 mendapat data, berarti pada saat tsb Port 1 digunakan sebagai OUTPUT port. Akibatnya pin-pin pada Port 1 akan memberikan tegangan sesuai dengan data yang dimasukkan tadi, yaitu P1.0 (baca: bit ke-nol pada Port 1) atau pin 1 (lihat Gambar 5.1.) akan bertegangan 0 volt karena diberi data “0”, sedangkan P1.1 atau pin 2 akan bertegangan 5 volt karena diberi data “1”, dst sampai P1.7.

Karena P0, P1, P2 dan P3 merupakan register bit addressable, maka cara mengaksesnya juga dapat dilakukan bit per bit, tidak harus sekaligus 1-byte atau 8-bit. Gambar 5.2. merupakan contoh 2 cara mengakses Port, yaitu dengan memberikan data sekaligus 1-byte atau 8-bit (sebelah kiri tanda sama dengan), dan memberikan data bit per bit (sebelah kanan tanda sama dengan). Sebuah instruksi :

MOV P1,#10010110B

untuk mengakses sekaligus seluruh bit pada register Port 1, setara dengan 8 instruksi yang mengakses bit-bit pada Port 1 satu per satu, yaitu :

CLR P1.0 SETB P1.1 SETB P1.2 CLR P1.3 SETB P1.4 SETB P1.5

(33)

PORT

1 = P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

96H = 1 0 0 1 0 1 1 0

Gambar 5.2. Dua cara mengakses Port.

Jika kita ingin menjadikan Port 1 sebagai Port input, maka kita dapat mengambil data dari Port 1 sekaligus 1-byte atau kita ambil dan cek setiap bit pada Port 1 satu per satu.. Berikut ini adalah contoh koneksi P1.4 dengan sebuah tombol. Seperti tampak pada Gambar 5.3. di bawah ini, P1.4 dalam keadaan menggantung (floating). Jika tombol ditekan, maka P1.4 akan terhubung dengan ground sehinggan keadaannya LOW atau logika ‘0’. Ketika tombol dilepas, maka P1.4 akan berlogika HIGH, karena masing-masing pin pada Port 1 dilengkapi dengan internal pull-up, yaitu sebuah resistor yang menghubungkan Vcc dengan pin tersebut.

Gambar 5.3. koneksi P1.4 dengan sebuah tombol. tombol

(34)

Berdasarkan Gambar 5.3, jika kita ingin memastikan apakah tombol sedang ditekan atau tidak, kita cukup memeriksanya dengan instruksi JNB (Jump if No Bit) atau instruksi JB (Jump if Bit). Perhatikan instruksi di bawah ini :

JB P1.4, $ ;tetap di sini selama P1.4 HIGH atau tombol dilepas

JNB P1.4, $ ;tetap di sini selama P1.4 LOW atau tombol ditekan

ADD A,#10 ;A = A + 10 dilakukan setelah tombol dilepas kembali.

Instruksi pertama dan kedua merupakan instruksi Conditional Jump. Jika mengeksekusi instruksi ini, prosesor akan lompat ke lokasi memory tertentu untuk mengambil kode instruksi tergantung dari kondisi bit yang akan diperiksanya, dalam hal ini P1.4. Jika kondisi yang diharapkan terpenuhi, maka prosesor akan melompat ke lokasi instruksi yang ditulis di sebelah kanan tanda koma. Tulisan $ berarti prosesor harus melompat ke lokasi sekarang (current memory address), artinya prosesor tidak akan mengeksekusi instruksi pada lokasi memory berikutnya, tetapi akan mengeksekusi kembali instruksi yang sekarang sedang dieksekusinya.

Sedangkan instruksi ketiga merupakan instruksi penjumlahan yang melibatkan register A. Persamaan A = A +10 bukan persamaan yang salah tulis. Pada bahasa pemrograman tulisan ini dianggap legal. Simbol A di sebelah kiri tanda = berarti isi baru register A, sedangkan simbo A di sebelah kanan tanda = berarti isi lama register A. Instruksi ketiga ini dieksekusi setelah P1.4 tidak lagi dalam kondisi LOW, artinya instruksi ini dieksekusi ketika tombol dilepas.

(35)

Pada bagian ini akan dipaparkan salah satu contoh penggunaan Port pada 8051 , yaitu mengambil data dari IC DTMF, kemudian menampilkan data tersebut pada LED 7-segment.

DTMF (Dual Tone Multiple Frequency) merupakan standar yang dipakai untuk nada panggil pada komunikasi via saluran telepon. Tekanan pada salah satu tombol angka akan menghasilkan nada tertentu pada saluran telepon. Nada tersebut merupakan kombinasi dari 2 sinyal yang berbeda frekuensi. Gambar 5.4. di bawah ini memperlihatkan peta hubungan antara tekanan tombol angka dengan frekuensi yang dihasilkannya. Misalnya, jika tombol ‘1’ ditekan, maka pada saluran telepon akan keluar nada yang merupakan kombinasi dari frekuensi 697 Hz dan 1209 Hz. Kombinasi nada ini merupakan standar untuk semua pesawat telepon nada yang ada saat ini.

(36)

Karena prosesor hanya menerima sinyal digital sedangkan saluran telepon dilalui oleh sinyal analog, maka untuk menghubungkan prosesor dengan saluran telepon diperlukan komponen khusus. Jika kita ingin mengubah besaran analog ke besaran digital, kita dapat menggunakan ADC (Analog to Digital Converter), sedangkan untuk tujuan sebaliknya kita dapat menggunakan DAC (Digital to Analog Converter). Untuk mengubah sinyal analog nada DTMF menjadi sinyal digital yang dapat dibaca oleh prosesor cukup digunakan decoder DTMF. Input DTMF adalah sinyal analog berupa 1 di antara 16 kemungkinan nada yang dihasilkan oleh tekanan tombol pesawat telepon, sedangkan outputnya berupa sinyal digital 4-bit. Gambar 5.5. memperlihatkan diagram blok internal DTMF decoder MT8870, sedangkan Tabel 3.2. memperlihatkan hubungan antara tombol yang ditekan untuk menghasilkan nada panggil dengan output yang dihasilkan oleh decoder DTMF.

(37)

Tanda panah pada Gambar 5.5. menandakan arah sinyal, misalnya, TOE merupakan pin input sedangkan STD merupakan pin output. Sinyal nada yang akan dikonversi ke bentuk biner diumpan ke pin IN+, IN- dan GS. Sedangkan 4-bit hasil konversinya diberikan melalui pin Q4, Q3, Q2 dan Q1, dengan MSB pada Q4.

Pada tabel 3.2. terlihat, jika pin TOE dibuat LOW, maka Q4 – Q1 akan diputus secara elektris dengan memberikan kondisi high impedance.

(38)

Tabel 3.2 Tabel Kebenaran DTMF Dekoder fLOW fHIGH tombol Q4 Q3 Q2 Q1

697 1209 1 0 0 0 1 697 1336 2 0 0 1 0 697 1477 3 0 0 1 1 770 1209 4 0 1 0 0 770 1336 5 0 1 0 1 770 1477 6 0 1 1 0 852 1209 7 0 1 1 1 852 1336 8 1 0 0 0 852 1477 9 1 0 0 1 941 1209 0 1 0 1 0 941 1336 * 1 0 1 1 941 1477 # 1 1 0 0 697 1633 A 1 1 0 1 770 1633 B 1 1 1 0 852 1633 C 1 1 1 1 941 1633 D 0 0 0 0 - - lainnya Z Z Z Z

(39)

Perlu ditekankan di sini, decoder DTMF bukan mengubah tekanan tombol menjadi bilangan biner 4-bit, tetapi mengubah sinyal analog nada telepon menjadi bilangan biner 4-bit, di mana nada telepon tersebut berasal dari pesawat telepon yang salah satu tombol angkanya ditekan. Gambar 5.6. berikut ini memperlihatkan contoh koneksi DTMF decoder.

(40)

Pada Gambar 5.6. tersebut terlihat input DTMF berasal dari saluran telepon, sedangkan outputnya berupa 4-bit sinyal biner dan 1-bit sinyal indikator StD. Cara kerja DTMF decoder dipaparkan pada Gambar 5.7.

Seperti tampak pada Gambar 5.7., pin ESt akan HIGH selama nada yang masuk dari saluran telepon merupakan nada valid yang berupa salah satu dari 16 jenis nada DTMF. Jika nada tidak valid, termasuk keadaan tanpa nada, maka pin ESt akan kembali LOW. Pada Gambar 5.6. terlihat bahwa pin ESt ini diumpan balik ke pin St/GT.

Ketika ada nada baru yang valid, pin StD bernilai LOW sampai nada baru tersebut selesai dikodekan atau dikonversi ke biner dan di-latch atau dikunci pada register output. Pin StD akan HIGH saat nada baru selesai dikonversi, pin ini tetap HIGH sampai datang nada baru yang valid. Selama nada yang masuk pada pin input DTMF masih sama, atau selama tidak ada nada baru, maka pin StD akan tetap HIGH. Ini berguna agar prosesor tidak mengambil nada saat 4-bit data yang ada pada register output DTMF belum valid atau mantap.

Pin StD ini juga berguna sebagai indikator untuk menghindari pengambilan data yang sama dilakukan berulang kali. Ketika kita, manusia, menekan salah satu tombol angka pada telepon, biasanya tombol tersebut tertekan selama 100 ms atau lebih. Sedangkan prosesor 8051 yang dilengkapi kristal 12 MHz hanya membutuhkan waktu 2  s untuk mengambil data tersebut dari DTMF. Ini berarti, jika prosesor dibiarkan terus menerus mengambil data dari DTMF selama tombol ditekan, maka prosesor akan mengambil data yang sama sebanyak 50 ribu kali. Untuk membatasi prosesor dari aksi salah ini, maka DTMF perlu dilengkapi dengan indikator, sehingga prosesor cukup melakukan 1 kali pengambilan saja, yaitu ketika StD dalam keadaan HIGH, setelah itu prosesor menunggu sampai pin StD LOW kembali, atau menunda pengambilan berikutnya selama 100 ms.

(41)
(42)

Berikut ini adalah contoh potongan program untuk mengambil 3 nada yang datang berurutan melalui DTMF kemudian menyimpannya pada RAM internal mulai alamat 50H. Pin StD pada Output DTMF dihubungkan dengan P1.4, sedangkan masing-masing pin Q4, Q3, Q2 dan Q1 pada output DTMF dihubungkan dengan P1.3, P1.2, P1.1 dan P1.0.

JNB P1.4, $ ;tunggu di sini selama StD LOW MOV 50H,P1 ;ambil data dari Port1 kemudian copy ke RAM internal

JB P1.4, $ ;tunggu sampai StD LOW kembali JNB P1.4, $ ;ulangi lagi untuk kedua kalinya MOV 51H,P1 ;ambil data nada kedua

JB P1.4, $ ;tunggu sampai StD LOW kembali JNB P1.4, $

MOV 52H,P1 ;ambil data nada ketiga JB P1.4, $

Meskipun cara pengambilan data di atas benar, cara tsb tidak lazim dalam pemrograman, sebaiknya digunakan teknik LOOP, yaitu eksekusi program kembali berulang seperti berikut ini :

MOV B,#3 ;B sebagai Counter diisi angka 3 MOV R0,#50H ;R0 diisi angka 50H

AmbilLagi: JNB P1.4, $

MOV A,P1 JB P1.4, $

ANL A,#0FH ;ambil 4-bit LSB saja MOV @R0,A ;copy data nada ke RAM

yang alamatnya berada di R0

INC R0 ;isi R0 ditambah satu

DJNZ B,AmbilLagi;Isi B dikurangi 1,

(43)

Dengan cara penulisan program seperti ini, modifikasi program lebih mudah dilakukan, misalnya jika data yang ingin diambil berjumlah 30, maka perubahan yang dilakukan cukup dengan mengganti instruksi pertama menjadi :

MOV B,#30

Contoh 3.2 : menulis angka pada LED 7-segment.

Untuk menulis angka ke LED 7-segment kita cukup mengatur pemadaman atau penyalaan beberapa LED atau segment. Jika kita menggunakan LEDcommon anoda, maka LED yang ingin kita padamkan harus diberi kondisi HIGH. Misalnya, jika kita ingin menulis angka ‘0’, maka semua LED kita nyalakan kecuali LED atau segmentg, sehingga semua pin kita beri kondisi LOW kecuali ping.

Gambar 5.8. Contoh LED 7-segment.

Misalkan masing-masing pin g, f, e, d, c, b dan a pada LED 7-segment dihubungkan dengan P2.6, P2.5, P2.4, P2.3, P2.2, P2.1 dan P2.0. Jika kita ingin menampilkan data yang diambil dari DTMF tadi, maka penulisan potongan programnya adalah sebagai berikut :

(44)

MOV R0,#50H ;R0 diisi angka 50H

MOV DPTR,#Segment ;DPTR = alamat ROM yang diberi label Segment

AmbilLagi: JNB P1.4, $

MOV A,P1 ;ambil nada dari port 1

JB P1.4, $ ;tunggu sampai nada tsb berlalu ANL A,#0FH ;ambil 4-bit LSB saja dengan

cara masking

MOV @R0,A ;copy data nada ke RAM yang

alamatnya berada di R0

INC R0 ;isi R0 ditambah satu

MOVC A,@A+DPTR ;ambil data dari ROM sesuai isi A.

MOV P2,A ;kirim ke 7-segment DJNZ B,AmbilLagi;Isi B dikurangi 1,

lompat balik jika B belum nol SJMP $ ; gfedcba Segment: DB 11000000B ; angka 0 DB 11111001B ; angka 1 DB 10100100B ; angka 2 DB 10110000B ; angka 3 DB 10011001B ; angka 4 DB 10010010B ; angka 5 DB 10000010B ; angka 6 DB 11111000B ; angka 7 DB 10000000B ; angka 8 DB 10010000B ; angka 9 DB 11111111B ;Blank, padam semua

(45)

Kode tsb ditujukan untuk menuliskan data pada ROM dimulai dengan alamat yang diberi label Segment. DB merupakan singkatan dari Define Byte, yaitu data yang akan ditulis berukuran 1-byte, dalam hal ini 11000000. Data tsb akan dicopy ke Port 2 untuk memadamkan dan menyalakan beberapa LED. Karena yang dipakai hanya P1.6 sampai P1.0, maka bit ke-7 atau bit paling kiri tidak mempengaruhi LED 7-segment. Sedangkan 7-bit berikutnya dipakai untuk menentukan angka yang tampil pada 7-segment, dalam hal ini data 100 000 akan diumpan ke pin gfedcba. Sehingga semua segment menyala, kecuali segment g yangmendapatkan logika ‘1’ atau kondisi HIGH. Jika disesuaikan dengan Gambar 5.5, maka angka yang ditampilkan oleh 7-segment tsb adalah angka ‘0’. Pola untuk angka lainnya dapat kita cocokkan dengan Gambar 5.8.

7. SISTEM MINIMUM ATMEGA 8535

Sistem Minimum Mikrokontroler adalah sebuah rangkaian paling sederhana dari sebuah mikrokontroler agar IC mikrokontroler tersebut bisa beroperasi dan diprogram. Dalam aplikasinya sistem minimum sering dihubungkan dengan rangkaian lain untuk tujuan tertentu. Ada beberapa yang harus diperhatikan dalam membuat sistem minimum mikrokontroler, yaitu:

a. Power Supply

Semua komponen elektronika membutuhkan power supply atau sering juga disebut catu daya. Mikrokontroler beroprasi pada tegangan 5 volt. Biasanya pembuatan catu daya mikrokontroler menggunakan IC regulator 7805 agar tegangannya bisa stabil.

(46)

Gambar: Regulator 7805 b. Osilator (Pembangkit Frekuensi)

Pada dasarnya mikrokontroler memiliki sifat seperti manusia. Kalau manusia memiliki jantung untuk bisa hidup maka mikrokontroler memiliki osilator untuk bisa beroprasi. Mikrokontroler sendiri sudah memiliki osilator internal yaitu sebesar 8Mhz tetapi kadang kala agar kinerja mikronkontroler lebih cepat osilator internal tidak bisa menangani kasus tersebut. Oleh karena itu dibutuhkan osilator eksternal (kristal) yang nilainya lebih dari 8Mhz. Perlu diperhatikan mikrokontroler hanya bisa beroprasi sampai 16 Mhz. jadi kalau memilih krsital untuk AVR tidak boleh lebih dari 16Mhz.

(47)

c. ISP (In-System Programmable)

Sistem Minimum Mikrokontroler dibuat untuk di program. Prinsipnya mikrokontroler bisa diprogram secara parallel atau secara seri. Pemrograman mikrokontroler secara seri atau lebih dikenal dengan ISP tidak perlu memerlukan banyak jalur data. Tapi ISP memiliki kelemahan, jika salah setting fuse bit yang memiliki fungsi fital misal pin reset di disable maka alamat DEH sudah tidak bisa digunakan lagi. Untuk mengembalikan settingan fuse bit tadi, harus menggunakan pemrograman tipe parallel (high voltage programming).

Gambar: Settingan Port ISP

(48)

d. Rangkaian Reset

Rangkaian reset sama fungsinya dengan rangkaian reset pada komputer. Fungsi reset di mikrokontroler yaitu untuk merestart program, sehingga kembali ke program awal. Penggunaan reset pada mikrokontroler opsional, bisa di pake atau nggak tergantung si pengguna.

Berikut Gambar Rangkaian Sistem Minimum Mikrokontroler

Gambar: Rangkaian Sistem Minimum Mikrokontroler

(49)

Rangkaian Sistem Minimum Mikrokontroler AT89S51

(Sistem Minimum ini dapat pula digunakan untuk Mikrokontroler AT89S52, AT89S53, AT89S54, dan AT89S55)

(50)

Rangkaian Sistem Minimum Mikrokontroler AVR ATMEGA8515(L)

(51)

(Sistem Minimum ini dapat pula digunakan untuk Mikrokontroler ATMEGA16(L), ATMEGA32(L), ATMEGA163(L), dan ATMEGA323(L)

(52)
(53)

F. Rangkuman

IstiIah mikroprosesor berasal dari microprocessor, yang secara kasar dapat diterjemahkan sebagai pemroses mikro atau pengolah mikro. Secara fisik, mikroprosesor adalah sebuah keping (chip) keciI, yang merupakan integrasi (perpaduan) dari suatu rangkaian elektronika yang rumit, yang dirancang untuk mengerjakan pekerjaan-pekerjaan yang cukup kompleks.

Arsitektur komputer berhubungan dengan perancangan blok-blok dasar (seperti prosesor, memori, dan piranti masukan dan keluaran), dan bagaimana blok-blok tersebut berinteraksi satu sarna lain. Seorang arsitek komputer memilih dan membangun interkoneksi antar blok dengan mempertimbangkan beberapa hal, seperti kecepatan, harga, dan kehandalan. Arsitektur komputer yang dihasilkan haruslah dapat menggambarkan fungsi-fungsi yang dapat dilakukan oleh sebuah komputer. Komputer berarsitektur von Neumann terdiri dari 3 komponen utama, yaitu sebuah unit pengolah pusat (Central Processing Unit/CPU), pengingat/memori (memory), dan piranti masukan dan) keluaran "(input/output devices). Sistem Minimum Mikrokontroler adalah sebuah rangkaian paling sederhana dari sebuah mikrokontroler agar IC mikrokontroler tersebut bisa beroperasi dan diprogram. Dalam aplikasinya sistem minimum sering dihubungkan dengan rangkaian lain untuk tujuan tertentu. Ada beberapa yang harus diperhatikan dalam membuat sistem minimum mikrokontroler, yaitu:Power Supply, Osilator (Pembangkit Frekuensi), ISP (In-System Programmable), Rangkaian Reset.

G. Referensi

Ta’ali, 2010, Modul 2, Registers Dan Memori, Padang

Garland, 2001, Microprocessor System Design, Prentice Hall.

Intel Corporation, 1999, MCS51 - Family of the Single Chip Microcomputers User Manual, Intel 1981

Intel Corporation, 8 Bit Embedded Controller Handbook, Intel 1989 Jan Axelson, 1997,The Microcontroller Idea Book, Lakeview Research

Gambar

Gambar 1.1. Berbagai bentuk dan ukuran Mikroprosessor 2. Registers dan Memori
Gambar 2.2. Flag register untuk mikroprosesor keluarga intel.
Gambar 3.1. Peta memori secara logika untuk mikroprosessor Intel
Tabel 3.1. Default segment dan offset untuk 8086-80286
+7

Referensi

Dokumen terkait

Data transaksi volume saham yang ditunjukkan oleh kedua sektor yaitu sektor infrastruktur dan konstruksi dimungkinkan mempunyai interval waktu yang sangat pendek dengan frekuensi

Fakultas Ekonomi USU (FE-USU), yang berjudul : Persepsi Akademisi Akuntansi.. USU terhadap Adanya Akuntansi Forensik (Studi Mahasiswa/I

Berdasarkan adanya fenomena dan gab penelitian diatas maka penelitian mengenai Pengaruh Kepemilikan Institusional, Proporsi Dewan Komisaris Independen, Ukuran

Beberapa gejala yang dapat timbul berkaitan dengan hormon melatonin, antara lain, sukar tidur (insomnia), gangguan pada irama sirkadian, jet lag, serta berbagai gejala lain.

Skripsi yang berjudul: “PERBANDINGAN KONSTITUSIONAL PENGATURAN IMPEACHMENT PRESIDEN DAN WAKIL PRESIDEN ANTARA REPUBLIK INDONESIA DENGAN AMERIKA SERIKAT DAN KOREA

Dalam konteks ini, pendidikan agama (Islam) sebagai media penyadaran umat dihadapkan pada problem bagaimana mengembangkan pola keberagamaan berbasis inklusivisme, pluralis dan

Pengawasan dan pengendalian elaksanaan Rencana Tapak Kawasan Obyek Wisata Gua Lawa guna menjamin tercapainya maksud dan tujuan Rencana sebagaimana dimaksud

Hal ini dikarenakan metode yang diterapkan guru masih monoton yaitu guru hanya menggunakan metode ceramah, tanya jawab, dan pemberian tugas pada setiap