buku mikon 3_a4

31
25 3 PERANGKAT KERAS MIKROKONTROLER KELUARGA MCS-51 Mikrokontroler dapat diartikan sebagai suatu pengendali berukuran mikro. Namun demikian bila ditinjau dari arsitektur dan prinsip kerjanya mikrokontroler merupakan suatu mikrokomputer oleh karena itu sering disebut sebagai komputer dalam keping tunggal. Suatu mirokontroler secara umum dapat terdiri atas prosesor, memori, input/output, timer/counter, dan serial. Pemakaian mikrokontroler umunya digunakan dalam embedded systems yaitu sub-sistem mikrokomputer khusus sebagai bagian dari sistem-sistem yang pengontrol/mikrokontrolernya dibenamkan langsung dalam sebuah mesin. Ciri khas sistem embedded adalah tidak melakukan transformasi data tetapi langsung berinteraksi dengan perangkat luar (sensor dan aktuator). TUJUAN Setelah mempelajari bab ini diharapkan mahasiswa mapu: 1. Menyebutkan beberapa perbedaan utama mikrokontroler porduk intel dengan atmel. 2. Menyebutkan bagian-bagian utama arsitektur mikrokontroler MCS-51 3. Menjelaskan cara kerja mikrokontroler. 4. Menyebutkan fungsi setiap pin MCS-51. 5. Mendeskripsikan fungsi memori internal 6. Menjelaskan fungsi interupsi. 7. Menjelaskan fungsi timer. 8. Menjelaskan fungsi port serial.

Transcript of buku mikon 3_a4

Page 1: buku mikon 3_a4

25

3

PERANGKAT KERAS MIKROKONTROLER KELUARGA MCS-51

Mikrokontroler dapat diartikan sebagai suatu pengendali berukuran mikro. Namun

demikian bila ditinjau dari arsitektur dan prinsip kerjanya mikrokontroler merupakan

suatu mikrokomputer oleh karena itu sering disebut sebagai komputer dalam keping

tunggal. Suatu mirokontroler secara umum dapat terdiri atas prosesor, memori,

input/output, timer/counter, dan serial. Pemakaian mikrokontroler umunya digunakan

dalam embedded systems yaitu sub-sistem mikrokomputer khusus sebagai bagian dari

sistem-sistem yang pengontrol/mikrokontrolernya dibenamkan langsung dalam sebuah

mesin. Ciri khas sistem embedded adalah tidak melakukan transformasi data tetapi

langsung berinteraksi dengan perangkat luar (sensor dan aktuator).

TUJUAN

Setelah mempelajari bab ini diharapkan mahasiswa mapu:

1. Menyebutkan beberapa perbedaan utama mikrokontroler porduk intel dengan atmel.

2. Menyebutkan bagian-bagian utama arsitektur mikrokontroler MCS-51

3. Menjelaskan cara kerja mikrokontroler.

4. Menyebutkan fungsi setiap pin MCS-51.

5. Mendeskripsikan fungsi memori internal

6. Menjelaskan fungsi interupsi.

7. Menjelaskan fungsi timer.

8. Menjelaskan fungsi port serial.

Page 2: buku mikon 3_a4

26

3.1 KELUARGA MIKROKONTROLER MCS-51

MCS-51 merupakan istilah yang berlaku untuk rumpun mikrokontroler yang

diproduksi oleh INTEL mulai tahun 1970-an, mikroprosesor ini termasuk pada

kelompok Complex Instruction Set Computer (CISC). Kelompok ini referensinya

adalah banyaknya jumlah instruksi. Yang termasuk dalam rumpun ini adalah 8051,

8031, 8751, 8032, 8052 dll. Seiring dengan perkembangan teknologi seri MCS-51 ini

diproduksi juga oleh beberapa perusahaan lain seperti ATMEL dengan produksinya

menggunakan seri AT89XXX. Perbedaan antara seri MCS-51 dengan ATMEL antara

lain tegangan kerja, kecepatan clock, memori dan metode pemrograman memorinya.

Tabel 3.1 memperlihatkan perbandingan beberapa mikrokontroler produk

INTEL dan ATMEL. Contoh mikrokontroler 8051 jumlah memori ROM dan RAM,

port, timer-counter dan UART sama dengan mikrokontroler 8751. Yang

membedakannya hanya ROM, dimana 8751 ROM-nya dibuat dengan versi erasable

programmable read only memory (EPROM).

Tabel 3.1 Perbandingan fitur dalam rumpun mikrokontroler MCS-51 dan ATMEL AT89…

Device EPROM (byte)

ROM (byte)

RAM (byte)

FLASH/ EEPROM

Ports T/C UART

8051 4 K 128 4 2 √ 8031 128 4 2 √ 8751 4K 128 4 2 √ 8052 8 K 256 4 3 √ 8752 8 K 256 4 3 √

83C51FA 8 K 256 4 3 √ 87C51FA 8 K 256 4 3 √ AT89C51 128 4 K 4 2 √ AT89S51 128 4K 4 2 √

AT89C2051 128 2 K 4 2 √

Selain versi AT89C…. atau AT89S….., ATMEL juga mengeluarkan seri AVR

(Alf and Vegard’s Risc Processor) yang mengadopsi metode Reduce Instrunction Set

Computer (RISC). RISC merupakan jenis mikroprosesor yang arsitekturnya sedikit

berbeda dengan jenis CISC yaitu proses eksekusi instruksinya menggunakan metode

fetch during execution, keuntungan metode ini yaitu dua operand dari dua register

dibaca, dieksekusi secara bersamaan dan hasilnya disimpan di salah satu register (salah

satu cirinya antara lain hasil operasi ALU tidak selalu di akumulator). Keseluruhan

proses tersebut dilaksanakan dalam satu siklus clock.

Page 3: buku mikon 3_a4

3.2 ARSITEKTUR MIKROKONTROLER 8051

Mikrokontroler 8051 merupakan mikrokontroler 8 bit yang mampu mengalamati

memori eksternal yaitu 64K-byte memori program dan 64K-byte memori data yang

terpisah sehingga kapasitasnya mencapai 128K-byte. Aristektur yang memisahkan

antara memori program dan memori data disebut arsitektur Harvard. Sebaliknya,

arsitektur yang menyatukan memori program dan memori data disebut arsitektur Van-

Newman. Fitur perangkat mikrokontroler MCS-51 memiliki 4 kilo byte (4096 byte)

program memori, 128 byte random access memory (RAM) internal, dua timer/counter

16 bit, satu serial port, empat port paralel input/output dan lima sumber interupsi yang

dikontrol secara logik. Selain RAM internal fasilitas dalam chip lainnya yaitu memiliki

beberapa special function register (SFR) yang terdiri atas register kontrol dan data.

Fitur-fitur tersebut diperlihatkan dalam diagram blok gambar 3.1.

Osilatordan

Pewaktuan

ProgrammableI/O Port Serial

2 unit16 bit Timer/

Counter

Memori data128 byte

CPU8051

MemoriProgram

4096 byte

Kontrol BusSerialTimer 0Timer 1

EA

ALERSTPSEN

P3P0 P1 P2TxD RxD

T1T0X2X1

INT0INT1

Gambar 3.1 Diagram blok mikrokontroler MCS-51

3.3 KONFIGURASI KAKI DAN FUNGSI

Bagian ini menjelaskan perangkat keras dari persepektif susunan pin/kaki seperti

diperlihatkan dalam gambar 3.2. Masing-masing pin/kaki IC MCS-51 memiliki fungsi

dan karakteristik tersendiri yang harus dipahami oleh pemakai. Secara umum fungsi

masing-masing pin adalah sebagai input/output, saluran alamat, saluran data, jalur

kontrol dan tentunya catu daya. Mikrokontroler yang terdapat di pasaran Indonesia pada

umumnya dalam kemasan dual in line package (DIP), kemasan ini paling banyak

digunakan para mahasiswa karena murah dan mudah dalam perakitannya.

27

Page 4: buku mikon 3_a4

DIP (Dual In-line Package) Pin 1-8 = Input/Output Port 1 Pin 9 = Resart Pin 10-17 = Input/Output Port 3 Pin 18 dan 19 = untuk ‘xtal Pin 20 = Ground power supply Pin 21-28 = Input/output Port 2 Pin 29 = -PSEN (program store enable) Pin 30 = ALE (address latch enable) Pin 31 = -EA/VPP (eksternal address dan Tegangan pemrograman EPROM internal) Pin 32-39 = Input/Output Port 0 Pin 40 = +5V power supply

Gambar 3.2 Konfigurasi pin MCS-51

3.3.1 Port 0

Port 0 adalah salah satu port yang berfungsi sebagai input/output serbaguna

dengan lebar data 8 bit. Port 0 terdapat dalam pin 32-39 dengan nama P0.0 sampai P0.7.

Dalam pemakaian memori eksternal, port-0 tidak dapat digunakan sebagai saluran

input/output tetapi port-0 merupakan saluran alamat yang dimultipleks dengan data.

Pemilihan ini diatur dengan multiplexer melalui kontrol internal. Pada setiap setengah

siklus memori pertama, port-0 akan membangkitkan saluran alamat A0 sampai A7 dan

pada setengah siklus memori kedua akan digunakan untuk saluran bus data seperti

diperlihatkan pada Gambar 3.3.

Gambar 3.3 Saluran alamat yang dimultiplek dengan data

28

Page 5: buku mikon 3_a4

Gambar 3.4 memperlihatkan rangkaian internal port 0. Pada saat digunakan

sebagai port output, bersifat open drain dan tidak memiliki internal pull-up. Saat

digunakan sebagai input, “port 0 latch” harus bernilai 1. Keadaan ini menyebabkan

kedua FET-nya tidak aktif, oleh karena itu kondisi input port ini mengambang (high

impedance).

D

CLK Q

Q

Read Pin

MUXVss

Vcc

Pin P0.x

Read Latch

KontrolAlamat

Internal Bus

Write to Latch

P0xLatch

Gambar 3.4 Rangkaian internal port 0

3.3.2 Port 1

Port 1 merupakan salah satu port input/output serbaguna yang menempati pin 1-8

dengan nama P1.0-P1.7 dan tidak mempunyai fungsi alternatif seperti port lainnya. Port

ini memiliki internal pull-up. Pada saat digunakan sebagai input, output flip-flop “port 1

latch” dibuat berlogik 1 yang akan mematikan FET. Pada kondisi seperti ini P1.x akan

berlogik 1 akibat adanya resistor full-up internal. Bila dihubungkan dengan input yang

berlogik rendah, port ini akan mengeluarkan arus yang disebut dengan IIL. Rangkaian

internal port 1 diperlihatkan dalam gambar 3.5.

Bila P1.x difungsikan sebagai input maka sinynal kontrol read pin ecara

otomatis akan diaktifkan sehingga status logik yang ada di P1.x akan masuk ke internal

bus. Namun bila difungsikan sebagai port i/o sinyal read pin ini otomatis dibuat tidak

aktif sehingga gate tersebut menjadi terbuka. Misalkan port 1.x ini akan dibuat berlogik

1, prosesnya dimulai dengan mengirimkan logik satu ke internal bus lalu mengirimkan

sinyal kontrol ke write to latch. Dengan sinyal ersebut logik satu akan dimuatkan ke D

flip-flop yang menyebabkan output Q berlogik satu dan –Q berlogik nol sehingga FET

tidak konduksi yang menyebabkan pin P1.x akan berlogik satu.

29

Page 6: buku mikon 3_a4

D

CLK Q

Q

Read Pin

Vss

Pin P1.x

Read Latch

Internal Bus

Write to Latch

P1xLatch

Vcc

InternalPull-up

Gambar 3.5 Rangkaian internal port 1

3.3.3 Port 2

Port 2 menempati pin 21-28 adalah port dengan dua fungsi yaitu sebagai saluran

input/output serbaguna dan saluran alamat byte atas (A8-A15) apabila bekerja dengan

eksternal memori. Gambar 3.5 menunjukkan rangkaian internal port 2.

D

CLK Q

Q

Read Pin

Vss

Vcc

Pin P2.x

Read Latch

KontrolAlamat

Internal Bus

Write to Latch

P0xLatch

InternalPull-up

Gambar 3.5 Rangkaian internal port 2

Perpindahan antara saluran input/ouput dengan bus alamat dikontrol oleh oleh sinyal

kontrol internal. Selama mengakses memori eksternal isi SFR P2 tidak berubah. Port 2

memiliki resistor pull-up internal dan disebut juga sebagai quasi bidirectional. Cara

kerja resistor pull-up internal sama dengan resistor pull-up internal pada port 1.

Resistor pull-up internal pada port 2 juga akan digunakan saat mengeluarkan alamat bit

yang bernilai 1.

30

Page 7: buku mikon 3_a4

3.3.4 Port 3

Port 3 menempati pin 10-17 merupakan port dengan dua fungsi yaitu sebagai

saluran input/output serbaguna dan fungsi lainnya diperlihatkan dalam Tabel 3.2.

Gambar 3.6 menunjukkan rangkaian internal port 3.

Tabel 3.2 Fungsi alternatif dari port 3

BIT Nama Alamat Bit Fungsi Alternatif

P3.0 RxD B0H Jalur penerima data dalam komunikasi serial

P3.1 TxD B1H Jalur penggirim data dalam komunikasi serial

P3.2 -INT0 B2H Interupsi eksternal 0

P3.3 -INT1 B3H Interupsi eksternal 1

P3.4 T0 B4H Input eksternal Timer/Counter 0

P3.5 T1 B5H Input eksternal Timer/Counter 1

P3.6 -WR B6H Sinyal strobe untuk menulis ke memori eksternal

P3.7 -RD B7h Sinyal strobe untuk membaca memori eksternal - tanda aktif rendah

Pada saat port 3 latch bernilai 1 output port 3 akan dikendalikan oleh sinyal fungsi

output alternatif. Sedangkan fungsi input alternatif adalah untuk mengaktifkan fungsi

alternatif port. Fungsi internal pull-up sama dengan port 1.

D

CLK Q

Q

Read Pin

Vss

Vcc

Pin P3.x

Read Latch

Fungsioutput

alternatif

Internal Bus

Write to Latch

P3xLatch

InternalPull-up

Fungsiinput alternatif

Gambar 3.6 Rangkaian internal port 3

31

Page 8: buku mikon 3_a4

32

Untuk semua port, saat pin bernilai 1 (high), jika dihubungkan dengan input berlogik 0

(rendah) pin ini akan mengeluarkan arus yang disebut IIL.

Sebaliknya saat pin berlogik 0, jika ada input yang berlogik 1 maka pin akan menyerap

arus yang disebut IOL. Yang perlu diperhatikan untuk pemakai adalah batas maksimum

yang diperbolehkan untuk kedua jenis arus tersebut. Data maksimumnya terdapat dalam

lembar data sheet setiap tipe MCS-51.

3.3.5 PSEN

Program Status Enable (-PSEN, aktif rendah) merupakan sinyal output pada pin

29 yang berfungsi sebagai jalur kontrol untuk mengakses program memori eksternal.

Pin ini biasanya dihubungkan ke pin output enable (-OE) EPROM sehingga dapat

membaca byte-byte program yang tersimpan di EPROM. Pin ini akan rendah saat

membaca memori program eksternal dan tinggi saat membaca memori program internal.

3.3.6 ALE

Address Latch Enable (ALE) pin 30 merupakan jalur output yang berfungsi

sebagai demultiplekser saat port 0 ini digunakan sebagai saluran alamat dan data. Pada

tengah perioda siklus memori pertama pin ini tinggi mengakibatkan jalur alamat di-

latch, pada tengah perioda siklus memori kedua port ini digunakan sebagai data bus.

Frekuensi ALE adalah 1/6 dari frekuensi on-chip osilator, dapat digunakan untuk

pewaktuan eksternal dan kegunaan lainnya untuk pemrograman memori program

internal jenis IC EPROM.

3.3.7 EA

External Address (-EA, aktif rendah) merupakan pin yang berfungsi sebagai input

kontrol pada pemakaian program memori. Jika pin ini dihubungkan dengan Vcc maka,

akan terhubung dengan program memori internal. Seperti dalam AT89C51 bila alamat

program memorinya antara 0000h sampai 0FFFh yang dipakai adalah memori internal,

tetapi mulai alamat 1000h yang dipilih program memori eksternalnya. Sebaliknya jika

di hubungkan dengan Vss/Gnd yang terbaca hanya program memori eksternal. Fungsi

lainnya adalah sebagai tegangan pemrograman internal untukn program memori jenis

EEPROM.

Page 9: buku mikon 3_a4

3.3.8 RST

Pin ini merupakan input untuk me-reset IC MCS-51. Jika pada pin ini diberikan

logika satu sekurang-kurangnya 2 siklus mesin, IC ini akan direset dan status register

setelah direset diperlihatkan dalam Tabel 3-3. Register yang terpenting saat direset

adalah program counter yaitu akan menjadi 0000h. Apabila pin RST kembali rendah

eksekusi program dimulai lagi dari alamat 0000h. Saat di reset isi RAM internal tidak

berubah. RST dapat diaktifkan dengan cara manual atau saat pertama kali diberikan

daya (power on reset) melalui jaringan R-C.

RST

+

+5V+5V

10uF100

8,2K

Reset

Manual Power-on Reset

Gambar 3.7 Rangkaian sistem reset MCS-51

Nilai kapasitor dan resistor power on reset ditentukan dengan mengacu kepada

pin RST berlogik satu yaitu sekurang-kurangnya dua siklus mesin, Gambar 3.7

memperlihatkan implementasi rangkaian sistem reset.

Tabel 3.3 Nilai beberapa register setelah direset

Register-register Isi setelah di-reset Program Counter 0000H Akumulator 00H Register B 00H PSW 00H DPTR 0000H Port 0 – 3 FFH IP (8031/8051) XXX00000B IE (8031/8051) 0XX00000B Timer Register 00H SCON 00H SBUF 00H PCON (CMOS) 0XXX0000B

33

Page 10: buku mikon 3_a4

34

3.3.9 On-chip Osilator Input

On-chip osilator merupakan pembangkit frekuensi yang berasal dari sebuah

crystal. Crystal ini dihubungkan dengan pin 18 dan 19. Diperlukan juga kapasitor

penstabil yang dihububngkan masing-masing pin ke ground. Frekuensi nominal untuk

kebanyakan MCS-51 adalah 12 MHz.

3.3.10 Koneksi Catu Daya

MCS-51 ini hanya memerlukan catu daya tunggal yaitu +5V yang dihubungkan

dengan Vcc dan Vss dihubungkan ke ground. Berdasarakan lembar data, mikrokontroler

produk ATMEL seri AT89xxx dapat beroperasi pada tegangan 4V sampai dengan 5,5V.

3.4 ORGANISASI PROGRAM DAN DATA MEMORI

Fugsi memori adalah untuk menyimpan informasi. Informasi dalam sistem

mikrokomputer dapat berupa data atau program. Memori dalam sistem mikrokontroler

MCS-51 dibedakan menjadi dua yaitu memori program dan memori data. Memori

program digunakan untuk menyimpan program dan bersifat hanya bisa dibaca (read

only) sedangkan memori data bersifat baca/tulis (read/write). Memori program diakses

dengan alamat 16 bit sedangkan memori data diakses dengan alamat 8 bit.

3.4.1 Memori Program

Setelah di-reset, prosesor akan membaca program mulai alamat 0000h. Pemakai

dapat menggunakan memori program internal atau memori program eksternal. Jenis IC

seri 8031 tidak memiliki memori program internal, untuk itu perlu penambahan IC

EPROM yang digunakan untuk memori program eksternal. Tetapi bila yang dipilih

jenis IC 8751 atau seri AT89xxx maka tidak perlu lagi memori program eksternal

karena IC ini sudah memilikinya perhatikan Tabel 3-1. Kapasitas dan jenis memori

program bervariasi tergantung dari seri mikrokontrolernya seperti diperlihatkan dalam

Tabel 3.1. Bila diperlukan, pemakai dapat menambahkan eksternal memori sampai 64

kilo byte. Apabila terjadi pemakaian memori program eksternal maka kemampuan port

input/output IC ini akan berkurang karena port-0 dijadikan saluran alamat yang

dimultiplek dengan data (AD0-Ad7) dan port-2 dijadikan saluran alamat untuk byte atas

(A7-A15).

Page 11: buku mikon 3_a4

3.4.2 Memori Data

Memori data dapat internal dan/atau eksternal. Memori data internal meliputi

bank register, bit-teralamati, RAM dan special function register (SFR) yang alamatnya

mulai 00h sampai FFh. Alamat 00h sampai 7Fh dialamati secara langsung atau register

sedangkan alamat 80h-sampai FFh dialamati secara langsung untuk seri 8051 dan

dialamati secara tidak langsung untuk seri 8052 seperti diperlihatkan dalam Gambar 3.8.

DIAKSES DENGANPENGALAMATANLANGSUNG dan

REGISTER

DIAKSES DENGANPENGALAMATAN

LANGSUNG80H

FFH

0

7FH80H

DIAKSES DENGANPENGALAMATAN TAK

LANGSUNG(8052)

FFH

128ATAS

128BAWAH Register

FungsiKhusus

- Port-port- Bit-bit kontrol dan status- Timer- Register- Stack Pointer- Akumulator

Gambar 3.8 Organisasi memori internal MCS-51

Gambar 3.9 memperlihatkan pembagian memori internal secara rinci. Bank

register terdiri atas 4 bank yaitu mulai bank 0 sampai bank 3. Masing-masing bank

memiliki 8 register yang diberi nama R0 sampai R7. Defaultnya akan menempati bank

0. Pemilihan bank mempergunakan bit RS0 dan RS1 yang terdapat dalam program

status word. Memori bank ini dapat diakses dengan dua cara yaitu langsung (direct) dan

register. Bit-teralamati atau bit-addresable fungsi umumnya sama dengan bang register

yaitu sebagai RAM. Selain fungsi itu memori ini setiap bit-nya dapat akses, jumlahnya

mencapai 128 bit mulai alamat 00h sampai 7Fh yang menempati alamat byte mulai 20h

sampai 2Fh. Kelebihan memori ini dapat dialamati secara byte atau bit. General purpose

RAM atau sering juga disebut scratch pad area merupakan ruang memori yang bebas

digunakan oleh pemakai untuk menyimpan variabel atau sebagai alamat inisialisasi

stack pointer. Memori ini hanya dapat diakses per-byte dengan metoda direct

addressing. Memori ini menempati alamat mulai 30h sampai 7Fh.

35

3.4.3 Register-register Fungsi Khusus

Register-register fungsi khusus atau special function registers (SFR) merupakan

sejumlah register khusus yang mencakup alamat port, akumulator, register B, timer,

sejumlah register control. Beberapa SFR hanya bisa diakses per byte seperti TH0, TH1,

Page 12: buku mikon 3_a4

tetapi ada juga SFR yang dapat diakses secara bit seperti P0, P1 lebih jelasnya

perhatikan Gambar 3.9. Pengalamatan SFR dapat berbentuk implisit seperti INC A atau

langsung. Perhatikan instruksi SETB 0E0H, instruksi ini sebenarnya mengeset bit 0

akumulator dan bit lainnya tidak berubah. Alamat 0E0H juga merupakan alamat byte

untuk akumulator dalam pengalamatan direct. Jadi alamat 0E0H bisa dialamti secara bit

atau byte.

Gambar 3.9 Pembagian ruang register (memori internal) 36

Page 13: buku mikon 3_a4

3.4.4 Program Status Word

Program Status Word (PSW) berisikan beberapa bit yang menyatakan status

prosesor yang sedang berjalan. PSW biasa digunakan untuk mengontrol jalannya suatu

program. Bit-bit yang dimaksud adalah, carry (CY), auxilary carry (AC), flag

serbaguna (F0), pemilih register bank (register select, RS), overflow (OV) dan paritas

(P). Tabel 3.4 memperlihatkan ringkasan PSW.

Tabel 3.4 Ringkasan PSW

BIT Simbol Alamat Bit Keterangan Bit PSW.7 CY D7H Carry flag PSW.6 AC D6H Carry flag Bantu PSW.5 F0 D5H Flag 0 PSW.4 RS1 D4H Pemilih register bank 1 PSW.3 RS0 D3H Pemilih register bank 0 00 = bank 0, alamat 00H – 07H

01 = bank 1, alamat 08H – 0FH 10 = bank 2, alamat 10H – 17H 11 = bank 3, alamat 18H – 1FH

PSW.2 OV D2H Flag overflow PSW.1 - D1H Cadangan PSW.0 P D0H Flag untuk paritas genap

Bit CY, selain berfungsi sebagai bit carry dalam operasi aritmatika, juga

berfungsi sebagai akumulator 1 bit dalam operasi Boolean. Apabila terdapat carry dari

bit ke 7 saat operasi aritmatika bit ini akan set. Misalkan isi akumulator FFh, bila

diberikan instruksi ADD A,#01H, hasilnya akumulator akan berisi 00H dan bit carry

akan set.

Bit RS0 dan RS1 dipergunakan untuk memilih salah satu dari 4 bank register

yang diperlihatkan dalam Gambar 3.9. Sejumlah instruksi mengacu ke lokasi RAM ini

sebagai R0 sampai R7. Memilih yang mana dari 4 bank yang akan digunakan

tergantung kepada bit RS0 dan RS1 (lihat Tabel 3.4).

Bit overflow (OV) akan set setelah operasi penjumlahan atau pengurangan bila

terdapat overflow aritmatika. Bit ini dipergunakan dalam operasi aritmatika bilangan

bertanda. Bila hasil operasinya lebih besar +127 atau lebih kecil –128 bit, OV akan set.

Misalkan dalam operasi penjumlahan berikut ini:

37

Hex 0FH+7FH

8EH

Desimal 15+127

142

Page 14: buku mikon 3_a4

38

sebagai bilangan bertanda, 8EH nilai desimalnya adalah –114, jadi jelaslah bahwa hasil

yang benar adalah 142 bukan -114, oleh karena itu bit OV menjadi set.

Bit paritas (P) menunjukkan jumlah logik satu di akumulator. Bit P sama

dengan satu jika logik satu dalam akumulator jumlahnya ganjil, dan P = 0 jika jumlah

logik satunya genap. Misalkan isi akumulator 10101101, maka bit P akan berlogik 1

karena jumlah logik satunya ada 5 (ganjil). Bit ini biasa digunakan dalam komunikasi

serial untuk memeriksa paritas data sebelum dikirim atau setelah diterima. Susunan

PSW sebgaia berikut :

b7 b6 b5 b4 b3 b2 b1 b0

CY AC F0 RS1 RS0 0V - P

Gambar 3.10 Alokasi nama setiap bit dalam register PSW

3.4.5 Akumulator

Akumulator atau biasa disebut Acc merupakan register untuk menyimpan hasil

operasi aritmatika dan beberapa instruksi logika. Akumulator menempati alamat E0H.

Register ini disebut akumulator karena fungsi khusunya dalam mengakumulasi hasil

operasi aritmatika.

3.4.6 Register B

Register B menempati alamat F0H, fungsi khususnya dalam operasi perkalian

dan pembagian. Dalam operasi lain dapat digunakan sebagai scratch pad RAM.

3.4.7 Stack Pointer

Stack pointer (SP) menempati alamat 81H, fungsi register ini sebagai pencatat

alamat operasi tumpukan (stack). Saat pertama kali sistem dihidupkan register ini diset

07H. Pemakai dapat mengubah isi register ini sesuai dengan kebutuhan di area mana

tumpukan akan dicatat. Misalkan jika alamat tumpukannya ingin dimulai dari 30H

maka set SP dengan instruksi MOV SP,#2FH. Nilai register ini secara otomatis akan

dinaikkan satu sebelum data operasi tumpukan atau sub-program (instruksi PUSH dan

CALL) disimpan.

Page 15: buku mikon 3_a4

39

3.4.8 Data Pointer

Register data pointer merupakan dua register yaitu DPL menempati alamat 82H

dan DPH menempati alamat 83H masing-masing 8 bit. Kedua register itu dapat

digabungkan menjadi DPTR (data pointer) sehingga menjadi 16 bit. Fungsi register ini

sebagai penyimpan alamat 16 bit. Contoh penggunaan register DPTR adalah MOVC A,

@A+DPTR, yaitu mengutipkan data dari alamat memori program.

3.4.9 Register Port

MCS-51 mempunyai 4 port, setiap port memiliki register untuk menyimpan

datanya. Ke empat port itu menempati alamat 80H, 90H, A0H, dan B0H masing-masing

untuk Port 0 sampai Port 3. Port 0, 2 dan 3 tidak dapat digunakan sebagai input/output

bila menggunakan memori eksternal. Semua port merupakan bit-addressable. Hal ini

menjadikan pengantarmukaannya berdayaguna. Jika sebuah motor terhubung ke Port 1

bit 7 melalui driver relay, maka untuk menghidupkan atau mematikan motor tersebut

dapat menggunakan instruksi tunggal, yaitu:

SETB P1.7 ;menghidupkan motor CLR P1.7 ;mematikan motor

3.4.10 Serial Data Buffer

Mikrokontroler MCS-51 dilengkapi dengan port serial untuk berkomunikasi

dengan perangkat serial lainnya seperti modem atau IC lainnya seperti ADC serial,

nonvolatile RAM serial dan sebagainya. Register serial data buffer (SBUF) dengan

alamat 99H, merupakan register penampung data yang akan dikirim atau diterima.

Lebih lanjut tentang komunikasi serial dibahas pada sub-bab 3.7.

3.4.11 Control dan Timer Register

Mikrokontroler 8051 mempunyai 2 buah register timer/counter masing-masing

16 bit yang dapat digunakan untuk interfal pewaktuan dan penghitung kejadian.

Pertama adalah Timer 0 terdiri atas TH0 dan TL0 dengan alamat 8CH dan 8AH, Kedua

adalah Timer 1 terdiri atas TH1 dan TL1 dengan alamat 8DH dan 8BH. Pengaturan

timer ini dilaksanakan oleh timer control register (TCON) dan timer mode register

(TMOD).

Page 16: buku mikon 3_a4

3.5 TIMER DAN COUNTER

Mikrokontroler MCS seri 8051 atau AT 89C51 mempuyai dua internal

timer/counter. Masing-masing timer/counter berkaitan dengan dua SFR. Timer/counter

0 berkaitan dengan TH0 dan TL0, dan timer/counter 1 berkaitan dengan TH1 dan TL1.

Kedua register ini membentuk timer/counter menjadi 16 bit. Setiap input pulsa yang

masuk ke timer/counter akan menaikkan isi salah satu atau kedua SFR itu tergantung

mode operasinya. Timer menggunakan clock sistem sebagai sumber input pulsa,

counter menggunakan sumber input pulsa eksternal. Pulsa eksternal diterima melalui

dua bit dari port 3 yaitu P3.4 dan P3.5. Timer/counter juga dapat membangkitkan

interupsi, bila saluran interupsinya tidak ditutup oleh Interrupt Enable (IE). Interupsi

akan terjadi saat isi timer terjadi overflow dan mulai dari 0. Gambar 3.11

memperlihatkan diagram blok timer 0.

TMOD

SFR89H

C/T M1 M0 GATE

P3.4(T0)

Frekuensi Osilator/12Update

TH0,TL0Mode Select

P3.2(INT0)

TCON

SFR88H

TF0 TR0

Overflow

Gambar 3.11 Diagram blok timer 0 yang disederhanakan

Prinsip kerja timer/counter dibagi dalam tiga tahap, (1) sumber input, (2) kontrol

operasi, (3) mode update. Sumber input bisa dari frekuensi osilator, atau pulsa yang

diterima melalui Port 3 kaki T0 (P3.4) untuk timer 0 dan T1 kaki (P3.5) untuk timer 1.

Sumber input dipilih oleh kontrol bit C/-T dalam register TMOD.

Operasi timer/counter dikontrol dengan blocking atau passing pulsa-pulsa dari

sumber ke register pencacah data. Pulsa-pulsa sumber diteruskan ke register data timer

0 jika kondisi :

40

Page 17: buku mikon 3_a4

(GATE OR INT0) AND TR0 sama dengan TRUE (logik 1).

GATE merupakan bit kontrol untuk timer 0 yang terdapat di register TMOD.

Timer/counter mulai beroperasi bila GATE diberikan logika rendah (0). TR0 juga

merupakan bit kontrol Timer 0 yang juga terdapat di register TMOD. INT0 adalah kaki

P3.2 pada IC 8051. Kondisi ini menunjukkan bahwa register data Timer 0 diperbaharui

sesuai dengan sumbernya jika bit kontrol TR0 set dan bit kontrol GATE reset or Port

P3.2 berlogik satu. Perlu diperhatika bahwa P3.2 mempunyai dua fungsi yaitu INT0 dan

bit kontrol untuk Timer 0. Apabila difungsikan sebagai saluran interupsi aktif rendah

yaitu pada transisi logik 1 ke 0. Bit port ini apabila digunakan dalam bit kontrol Timer

0, bit ini akan meng-enable-kan Timer 0 jika berlogik satu.

3.5.1 Register Timer

Operasi timer/counter diatur dengan register TMOD dan register TCON.

Gambar 3.12 dan 3.13 menunjukkan alokasi bit register TMOD dan TCON.

GATE M0M1C/T GATE M0M1C/T

Timer/Counter 1 Timer/Counter 0

MSB LSB

Gambar 3.12 Alokasi bit register TMOD

Penjelasan untuk TMOD sebagai berikut:

M0 dan M1 : Bit-bit ini berfungsi untuk meilih salah satu dari empat mode. Mode-

mode tersebut ditunjukkan dalam Tabel 3.4

C/-T : dipergunakan untuk memilih fungsi timer atau counter. Jika C/-T = 0,

bekerja dalam mode timer dan menggunakan sinyal clock internal. Jika

C/-T=1, artinya bekerja dalam mode counter maka inputnya diambil dari

kaki T0 untuk timer/counter 0 dan T1 untuk timer/counter 1. Untuk lebih

jelasnya perhatikan Gambar 3.13 dan 3.14.

GATE : Befungsi mengatur apakah timer dikontrol oleh GATE atau pin INTx.

Jika GATE =0, Pin INTx tidak berpengaruh, tetapi jika GATE =1 maka

pin INTx harus yang berfungsi. Perahtikan lagi Gambar 3.13 dan 3.14.

41

Page 18: buku mikon 3_a4

Tabel 3.4 Mode operasi timer/counter

M1 M0 Mode Operasi 0 0 0 Timer/counter, 13 bit compatible dengan 8048 0 1 1 Timer/counter, 16 bit 1 0 2 Timer/counter, 8 bit auto reload 1 1 3 Split timer untuk timer 0, Timer tidak aktif.

Register TCON merupakan register yang mengontrol timer/counter dan interupsi

eksternal. Setiap bit register ini dapat dialamati dan berfungsi seperti diperlihatkan

dalam Tabel 3.5.

TF1 TR0TF0TR1 IE1 IT0IE0IT1

MSB LSB

Gambar 3.13 Alokasi bit-bit dalam register TCON

Tabel 3.5 Register TCON

Bit Alamat bit Simbol Deskripsi TCON.7 8FH TF1 Timer/counter 1 Overflow Flag TCON.6 8EH TR1 Timer 1 Run Control Bit TCON.5 8DH TF0 Timer/counter 0 Overflow Flag TCON.4 8CH TR0 Timer 0 Run Control Bit TCON.3 8BH IE1 External Interupt 1 Edge Flag TCON.2 8AH IT1 External Interupt 1 Type Control Bit TCON.1 89H IE0 External Interupt 0 Edge Flag TCON.0 88H IT0 External Interupt 0 Type Control Bit

Dari 8 bit TCON hanya 4 bit yang digunakan untuk timer/counter, sisanya utuk

interupsi. Fungsi masing-masing bit adalah:

TF1: akan berlogik ‘1’ saat nilai timer/counter 1 TH1 dan TL1 mengalami overflow.

TF1 akan berlogik ‘0’ saat prosesor melompat ke interrupt service routine atau

ISR.

TR1: harus diberikan logik ‘1’ oleh pemakai untuk menjalankan timer/counter 1.

TF0: akan berlogik ‘1’ saat nilai timer/counter 0 TH0 dan TL0 mengalami overflow.

TF0 akan berlogik ‘0’ saat prosesor melompat ke interrupt service routine atau

ISR.

TR0: harus diberikan logik ‘1’ oleh pemakai untuk menjalankan timer/counter 0.

42

Page 19: buku mikon 3_a4

3.5.2 Mode Operasi

Mode operasi dalam sistem timer/counter MCS-51 terdiri atas 4 mode, setiap

mode mempunyai karakteristik khusus. Berikut ini akan dijelaskan masing-masing

karakter dari setiap modenya.

3.5.2.1 Mode 0

Mode 0 merupakan timer/counter 13 bit. Timer/counter mode 0 diperlihatkan

dalam Gambar 3.14. Mode ini khusunya disediakan untuk menjaga kompatibilitas

dengan mikrokontroler intel generasi pertama yaitu 8048. Dalam mode ini register TLx

(TL0 atau TL1) hanya digunakan 5 bit terendahnya saja, sedangkan register TH0 atau

TH1 tetap 8 bit. Isi register TLx akan bertambah setiap ada pulsa input. Register TH0

akan bertambah satu setiap register TLx berubah dari 1Fh ke 00h. Oleh karena itu

hanya perlu input pulsa sebanyak 213 atau 8192 untuk sampai pada membangkitkan

interupsi. Overflow terjadi pada saat perubahan dari nilai FF1Fh ke 0000h, pada saat itu

flag TFx akan berlogik 1. Register TLx dan THx dapat diubah oleh pemakai setiap saat

dalam program.

TLX5 BIT

THX8 BIT TFx

C/T=0

C/T=1

:12Osc

TxPin Control

INTx

Interrupt

C/T

TRx

GATE

Gambar 3.14 Timer/counter mode 0

3.5.2.2 Mode 1

Timer/counter mode 1 pada dasarnya sama dengan mode 0, bedanya terletak di

register TLx yaitu semua bit-nya digunakan dengan demikian mode 1 ini meruapakan

timer/counter 16 bit. TLx akan bertambah satu stiap ada pulsa input, bila telah

mencapai FFh ia akan kembali ke 00h dan register THx bertambah 1. Overflow terjadi

43

Page 20: buku mikon 3_a4

saat perubahan pada register Thx dan TLx berubah dari FFFFh ke 0000h dan saat itu

pula dibangkitkan interupsi. Jadi untuk membangkitkan interupsi diperlukan pulsa input

216 atau 65536. Register TLx dan THx dapat diubah oleh pemakai setiap saat dalam

program. Timer/counter mode 1 diperlihatkan dalam Gambar 3.15.

TLX8 BIT

THX8 BIT TFx

C/T=0

C/T=1

:12Osc

TxPin Control

INTx

Interrupt

C/T

TRx

GATE

Gambar 3.15 Timer/counter mode 1

3.5.2.3 Mode 2

Mode 2 merupakan timer/counter 8 bit dengan fasilitas auto reload. TLx

bertindak sebagai timer/counter 8 bit dan THx berfungsi untuk memuati TLx saat TLx

overflow. Jadi nilai TLx saat terjadi overflow tidak diisi dengan 00h tetapi dimuati oleh

isi register THx. Proses ini dikerjakan oleh perangkat kerasnya secara otomatis sehingga

pemakai tidak perlu memeriksa apakah nilai TLx sudah overflow dan tidak perlu

mengisi ulang nilai TLx. Mode 2 biasa digunakan untuk menghasilkan baud rate.

Timer/counter mode 2 diperlihatkan dalam gambar 3.16.

TLX8 BIT

THX8 BIT

TFx

C/T=0

C/T=1

:12Osc

TxPin Control

INTx

Interrupt

C/T

TRx

GATE

Reload

Gambar 3.16 Timer/counter mode 2

44

Page 21: buku mikon 3_a4

3.5.2.4 Mode 3

Mode 3 atau disebut mode split timer perhatikan Gambar 3.17. Timer 0 dibagi

menjadi dua yitu TL0 berfungsi sebagai timer/counter 8 bit dengan overflow pada TF0.

TL0 ini dikendalikan oleh bit timer 0 meliputi GATE, C/-T, TR0 dan INT0. TH0 akan

menjadi timer 8 bit yang dikendalikan oleh bit kontrol timer/counter 1 yaitu TR1. Jadi

TR1 mengendalikan TH0 dan timer/counter 1 secara bersamaan. Timer counter 1 masih

dapat dioperasikan selain dalam mode 3. Umumnya timer/counter 1 dioperasikan dalam

mode 2 dan berfungsi sebagai penghasil baud rate.

TL08 BIT TF0

C/T=0

C/T=1

:12Osc

T0Pin Control

INT0

Interrupt

C/T

TR0

GATE

TH08 BIT TF1:12Osc

Control

Interrupt

TR1

Gambar 3.17 Timer/counter mode 3

3.6 INISIALISASI TIMER

Inisialisasi timer adalah proses mengaktifkan timer/counter dengan mengeset

semua register yag terkait, sehingga dapat digunakan sesuai dengan keperluan. Tahapan

inisialisasi sebagai berikut:

a. Mengisi setiap bit pada register TMOD

Contoh : Buatlah timer sehingga menghasilkan waktu tunda (delay) selama 1000

mikro detik. Asumsikan frekuensi kerja prosesor 12 MHz. Dengan frekuensi ini

maka clock internal timer/counter adalah 1 MHz atau 1 mikro detik. Dari

permasalahan dapat ditentukan mode yang digunakan yaitu mode 0 atau mode 1.

Pada kesempatan ini dipilih timer/counter 0 dan mode 1. Oleh karena itu TMOD-

nya diset sebagai berikut: 45

Page 22: buku mikon 3_a4

46

GATE C/-T M1 M0 GATE C/-T M1 M0

x x x x 0 0 0 1

Instruksinya adalah : MOV TMOD,#xxxx0001b

b. Mengisi register TL0 dan TH0

Supaya menghasilkan delay 1000 mikro detik yaitu dengan mengurangkan nilai

maksimum kedua register itu dengan delay yang diperlukan. Nilai maksimumnya

adalah 65536 – 1000 = 64536, selanjutnya angka tersebut ubah ke hexa yaitu

FC18H. Selanjutnya nilai tersebut masukan ke TL0 dan TH0. Instruksinya sebagai

berikut:

MOV TL0,#18H ;mengisi register TL0 dengan data 18h MOV TH0,#FCH ; mengisi register TH0 dengan data FCh

c. Menjalankan timer

Register yang terlibat yaitu TCON, bit yang terkait dengan timer/counter 0 adalah

TR0 dan TF0. Bit TR0 untuk menjalankan timer/counter sedangkan bit TF0 adalah

flag overflow untuk timer/counter 0. Instruksinya adalah :

SETB TR0 atau MOV TCON,#0001000b

d. Memeriksa timer overflow

Instruksi untuk memeriksa bit TF0, yaitu:

Tunggu: JNB TF0,Tunggu ;tunggu 1000 us SJMP $

Brikut ini contoh program membuat lampu di Port 1.0 ON/OFF setiap 50 mili

detik. Untuk itu register TH0 dan TL0 harus diisi sebagai berikut :

65536 – 50000 = 15536 atau dalam hexa = 3CB0H. Nilai inilah yang harus diisikan ke

register TH0 dan TL0. Program lengkapnya sebagai berikut :

PROGAM 3-1

ORG 0H MOV TMOD,#XXXX0001b;muati register dengan mode operasi MOV TH0,#3Ch ; MOV TL0,#0B0h SETB TR0 ;timer mulai kerja

Page 23: buku mikon 3_a4

Tunggu: JNB TF0,Tunggu CPL P1.0 MOV TH0,#3Ch MOV TL0,#B0h CLR TF0 SJMP Tunggu

3.7 ANTARMUKA SERIAL

Dua mode komunikasi serial, yaitu synchronous dan asynchronous Synchronous

merupakan komunikasi serial dimana data dan clock dikirim bersama-sama. Contoh

mode ini digunakan antara keyboard dengan komputer. Dalam mode asynchronous yang

dikirim hanya data, oleh karena itu pengirim dan penerima harus mempunyai clock

dengan frekuensi yang sama. Contoh komunikasi ini adalah COM1 (RS232) dalam

komputer. Perlu diperhatikan bahwa level tegangan MCS-51 masih level TTL oleh

karena itu bila akan disambungkan dengan perangkat lain seperti komputer perlu diubah

terlebih dahulu ke level tegangan standar RS-232. MCS-51 mempunyai fasilitas

komunikasi sinkron maupun asinkron.

Port serial pada MCS-51 bersifat full-duplex, artinya dapat mengirim dan

menerima data secara bersamaan. Kelengkapan port ini adalah dua buffer serial atau

SBUF yang berfungsi sebagai penampung data yang akan dikirim atau yang diterima

seperti diperlihatkan dalam gambar 3.18. SBUF sisi pengirim selain berfungsi sebagai

buffer data yang akan dikirim, juga berfungsi sebagai pengubah paralel ke serial. Pada

sisi penerima pengubah serial ke paralelnya adalah shift register.

SBUF(Write Only)

TXD(P3.1)

QClk

Baud Rateclock

(transmit)

Shift Register

RXD(P3.0)

Baud Rateclock

(receive)

D

Clk

SBUF(Read Only)

Data bus internal MCS-51

Gambar 3.18 Diagram blok sistem komunikasi serial MCS-51

47

Page 24: buku mikon 3_a4

48

3.7.1 Mode Operasi

Port serial dalam MCS-51 dapat beroperasi dalam 4 mode, yaitu:

Mode 0:

Mode ini bekerja secara sinkron yaitu data dikirim dan diterima melalui kaki

RxD, sementara kaki TxD digunakan sebagai clock sikronisasinya. Bit yang

pertama dikirim adalah LSB. Dalam mode ini baud rate yang digunakan adalah

1/12 frekuensi osilatornya.

Mode 1:

Pada mode 1, data dikirim melalui kaki TxD dan diterima melalui kaki RxD,

Jumlah data yang dikirim adalah 10 bit yang terdiri atas start-bit, data 8 bit dan

stop-bit. Disisi penerima stop-bit akan dimasukkan secara otomatis ke RB8 yang

terdapat pada register SCON. Baud rate dapat diatur oleh pemakai melalui timer.

Mode 2:

Dalam mode ini prinsipnya sama dengan mode 1 tetapi jumlah bit yang dikirm

adalah 11 bit terdiri atas start-bit, 8 bit data, bit ke-9 dan stop-bit. Bit ke-9 ini

diatur oleh pemakai dengan mengisikannya ke TB8 dalam register TCON.

Baud rate dalam mode ini dapat dipilih yaitu /64 atau 1/32 frekuensi osilatornya

bila SMOD sama dengan 1.

Mode 3:

Mode 3 hampir sama dengan mode 2. Perbedaannya terletak di baud rate. Dalam

mode ini baud-rate diatur dengan menggunakan timer 1.

3.7.2 Register Konrol Port Serial

Untuk mengaktifkan port serial perlu dipahami register serial control (SCON).

Gambar 3.19 memperlihatkan susunan bit regster SCON.

MSB LSB SM0 SM1 SM2 REN TB8 RB8 TI RI 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H

Gambar 3.19 Susunan bit register SCON

Penjelasan setiap bit register SCON sebagai berikut:

SM0 dan SM1 digunakan untuk memilih mode komunikasi, sebagai berikut:

Page 25: buku mikon 3_a4

49

Tabel 3.6 Mode komunikasi serial

SM0 SM1 Mode Deskripsi Baud Rate

0 0 0 Shift register Tetap (Frek. Osilator ( 12)

0 1 1 8-bit UART Dapat diatur ( dengan Timer)

1 0 2 9-bit UART Tetap (Frek. Osilator ( 12 atau ( 64)

1 1 3 9-bit UART Dapat diatur (dengan Timer)

SM2, Serial port mode bit.

Bit ini membolehkan komunikasi multiprosesor dalam mode 2 dan 3, Bila saat

menerima bit 9 = 0 maka RI tidak diaktifkan.

REN, bit ini untuk meng-enable-kan penerima.

Bila ingin menerima karakter harus di set.

TB8, bit ini digunakan saat transmisi serial 9 bit mode 2 dan 3.

Bit ini di-set/reset dengan perangkat lunak. Biasanya digunakan untuk bit paritas.

RB8, bit ini menyimpan bit ke-9 saat menerima transmisi 9-bit.

TI, Transmit Interrupt flag, bit ini akan set pada akhir transmisi karakter, dan clear

denga perangkat lunak.

RI, Receive Interrupt flag, set pada akhir penerimaan karakter, dan clear dengan

perangkat lunak.

3.7.3 Menginisialisasi dan mengakses regsiter port serial

Untuk dapat menerima karakter maka Bit receiver enable (REN) pada SCON

harus diset dengan perangkat lunak untuk meng-enable-kan penerimaan karakter. Ini

dilakukan pada permulaan dimana port serial, timer dan lainnya diinisialisasi.

Inisialisasi bit REN dapat dilakukan dengan dua cara :

SETB REN atau MOV SCON,#xxx1xxxxb

Berikut ini proses menginisialisasi port serial dalam mode 1 dengan baud rate 9600 :

INIT: MOV SCON,#01010010b ; serial port mode 1 MOV TMOD,#20H ; timer 1 mode 2 MOV TH1,#0FDH ; nilai untuk 9600 bps SETB TR1 ; timer 1 run

END

Page 26: buku mikon 3_a4

50

Setelah inisialiasi, proses selanjutnya terima atau kirim karakter. Dalam proses

ini yag menjadi kontrolnya adalh bit TI dan RI dalam SCON. Kedua bit ini di-set oleh

perangkat keras tetapi harus di-clear dengan perangkat lunak. Bit RI akan set pada akhir

penerimaan karakter dan menunjukkan bahwa buffer penerima telah penuh. Oleh karena

itu bila menerima karakter harus ditunggu sampai RI set dan setelah dibaca bit ini harus

di-clear. Berikut ini program untuk menerima karakter:

WAIT: JNB RI,WAIT ; Periksa RI sampai set CLR RI ; clear RI MOV A,SBUF ; baca karakter

Bit TI set pada akhir transmisi karakter dan menandakan bahwa buffer telah

kosong. Bila perangkat lunak ingin mengirim karakter ke perangkat yang terhubung

degan port serial, haru dilakukan dulu pemeriksaan kesiapan port itu. Dengan kata lain

apakah karakter sebelumnya sudah dikirim, tunggu sampai selesai dikirim. Berikut

program mengirim karakter :

WAIT: JNB TI,WAIT ; Periksa TI sampai set CLR TI ; clear TI MOV SBUF ,A ; kirim karakter Urutan instruksi terima dan kirim di atas biasanya merupakan sub-rutin input/output

karakter.

3.8 INTERUPSI

Sebuah interupsi terjadi pada suatu keadaan yang menyebakan pelaksanaan

program utama ditunda sementara, lalu mengerjakan program lainnya. Interupsi

memainkan peranan penting dalam perancangan dan implementasi aplikasi

mikrokontroler. Dalam proses seperti ini dimungkinkan sebuah sistem dapat merespon

kejadian secara asinkron dan menerima kejadian sambil mengeksekusi program lainnya.

Sistem dengan interupsi seolah-olah melakukan berbagai pekerjaan secara bersamaan.

Tentu saja CPU tidak dapat mengerjakan lebih dari satu instruksi pada saat yang sama,

tetapi CPU dapat menunda sementara ekseksi programnya lalu mengeksekusi sub-

program, setelah itu kembali ke program yang tertunda.

Page 27: buku mikon 3_a4

Program yang beroperasi dengan interupsi disebut interrupt service routine

(ISR) atau interrupt handler. ISR dieksekusi saat terjadi interuspsi dan umunya

mengerjakan operasi input/output suatu perangkat. Bila terjadi interupsi program

utamanya untuk sementara ditunda dan melompat ke ISR, ISR dikerjakan sampai

dengan instruksi “return from interrupt”, dan kembali melanjutkan program yang

ditunda. Proses kerja sistem tanpa interupsi dan dengan interupsi diperlihatkan dalam

gambar 3.20

Main

ISR

Main

* **ISR

* **Main

ISR

* **Main

Main Program

Waktu

Waktu

Eksekusi interupsi

EksekusiMain

a. Eksekusi program tanpa interupsi

b. Eksekusi program dengan interupsi

Gambar 3.20 (a) Sistem tanpa interupsi, (b) Sistem dengan interupsi

Contoh sistem dengan interupsi adalah “oven microwave”, sistem ini tugas

utamanya mengontrol pemanas untuk memasak sesuai dengan yang diinginkan

pemakai, sementara mengontrol pemanas sistem harus menanggapi beberapa

permintaan tombol input manual seperti pembuka pintu dan perubahan waktu memasak.

Bila pemakai menekan salah satu tombol itu akan dibangkitkan interupsi (misalnya

sinyal tinggi ke rendah) dengan itu program utamanya diinterupsi. ISR akan membaca

kode keypad dan mengubah kondisi memasak kekondisi yang sesuai dan mengakhirinya

dengan memberikan kontrol kembali ke program utama. Hal penting yaitu input manual

terjadi secara asinkron dengan interval tidak dapat diprediksi atau dikontrol dengan

perangkat lunak, itulah interupsi.

3.8.1 Organisasi Interupsi dalam MCS-51

Terdapat lima sumber interupsi dalam MCS-51: dua interupsi eksternal, dua

interupsi timer dan port serial. Setelah sistem di-reset semua interupsi dinonaktifkan dan

51

Page 28: buku mikon 3_a4

52

dapat diaktifkan secara individu melalui perangkat lunak. Dalam keadaan terjadi lebih

dari satu iterupsi secara bersamaan atau terjadi interupsi saat sedang melayani interupsi

lainnya, pelayanannya dapat dilakukan dengan dua cara yaitu polling atau prioritas.

Urutan pelayanan polling tetap, sedangkan prioritas dapat diprogram.

Masing-masing sumber interupsi dapat diaktifkan atau dinonaktifkan melalui

pengalamatan bit pada register khusus IE (interrupt enable) yang beralamat di 0A8H

seperti diperlihatkan dalam Tabel 3.7. Selain secara individual juga terdapat bit

enable/disable untuk semua interupsi. Dua bit harus di set untuk mengaktifkan interupsi

yaitu bit untuk individu dan bit untuk semua interupsi. Berikut ini contoh mengaktifkan

interupsi timer 1:

SETB ET1 ; enable interupsi timer 1 SETB EA ; enable semua bit interupsi atau dengan instruksi berikut ini:

MOV IE,#10001000b

Sebaiknya menggunakan metoda SETB untuk meng-aktifkan/nonaktifkan bit interupsi,

supaya tidak mengganggu bit lainnya.

Tabel 3.7 Register IE

Bit Alamat bit Simbol Deskripsi (1=enable, 0=disable) IE.7 AFH EA Timer/counter 1 Overflow Flag IE.6 AEH - Timer 1 Run Control Bit IE.5 ADH - IE.4 ACH ES Enable serial port interrupt IE.3 ABH ET1 Enable timer 1 Interupt IE.2 AAH EX1 Enable external 1 Interupt IE.1 A9H EXT0 Enable timer 0 Interupt IE.0 A8H EX0 Enable external 0 Interupt

Pengaturan prioritas interupsi dilakukan melalui register fungsi khusus yaitu IP

yang beralamat di 0B8H seperti diperlihatkan dalam Tabel 3.8. Setelah di reset, register

IP di clear dan semua tingkat prioritas interupsi dikembalikan pada nilai mulanya

(default). Ide pemakaian prioritas adalah mengizinkan suatu ISR diinterupsi oleh suatu

interrupt baru bila interrupt baru tersebut prioritasnya lebih tinggi dibandingkan

interupsi yang sedang dikerjakan. Bila dua interupsi muncul bersamaan dengan berbeda

prioritas maka prioritas tertinggi yang pertama dilayani.

Page 29: buku mikon 3_a4

Tabel 3.8 Register IP

Bit Alamat bit Simbol Deskripsi IP.7 - - Belum ditentukan IP.6 - - Belum di tentukan IP.5 - - IP.4 BCH PS Prioritas interupsi port serial IP.3 BBH PT1 Prioritas interupsi timer 1 IP.2 BAH PX1 Prioritas interupsi eksternal 1 IP.1 B9H PT0 Prioritas interupsi timer 0 IP.0 B8H PX0 Prioritas interupsi eksternal 1 (1=tingkat tertinggi, 0=tingkat terendah)

Jika dua interupsi dengan prioritas yang sama muncul bersamaan, “polling urutan

tetap” akan menentukan yang pertama dilayani. Urutan polling interupsi adalah

eksternal 0, timer 0, external 1, timer 1 dan port serial. Gambar 3.21 meperlihatkan lima

sumber interupsi dengan mekanisme enable individu dan global.

IE0

IE1

TF0

TF1

INT0

INT1

R1TI

Interupsiprioritas

tinggi

Interupsiprioritasrendah

Urutanpolling

interupsi

Enable Global

Enable interup

Register IE Register IP

IT0

IT1

1

1

0

0

Interupsiditerima

Gambar 3.21 Struktur interupsi MCS-51

3.8.2 Pemrosesan Interupsi

Bila suatu interupsi diterima oleh CPU, program utama terinterupsi. Aksi

berikutnya adalah:

- menyelesaiakan eksekusi intruksi yang sedang dikerjakan

- Program Counter (PC) disimpan ke stack

- Status interupsi tersimpan secara internal 53

Page 30: buku mikon 3_a4

54

- Interupsi-interupsi di blok sesuai dengan tingkatannya

- PC dimuati dengan vector alamat ISR

- ISR dieksekusi

ISR dieksekusi dan aksi ini merupakan respon interupsi yang masuk. ISR

diselesaikan sampai dengan instruksi RETI (return from interrupt). Nilai PC lama

diambil kembali dari stack dan status interupsi sebelumnya dikembalikan. Berikutnya

melanjutkan mengeksekusi program utama yang tertunda.

3.8.3 Vektor Interupsi

Apabila interupsi diterima, nilai yang dimuatkan ke PC disebut vector interupsi.

Nilai itu merupakan alamat mula ISR untuk interupsi yang masuk. Vektor interupsi

diberikan dalam tabel 3-9.

Tabel 3-9 Vektor Interupsi

Interupsi Flag Vektor Interupsi

Sistem Reset RST 0000H Eksternal 0 IE0 0003H Timer 0 TF0 000BH Eksternal 1 IE1 0013H Timer 1 TF1 001BH Serial Port RI dan TI 0023H Timer 2 TF2 atau EXF2 002BH

Apabila divektorkan ke suatu interupsi, flag yang menyebabkan interupsi secara

otomatis di-clear oleh perangkat keras, kecuali flag RI dan TI pada interupsi serial dan

flag TF2 dan EXF2 pada interupsi timer 2. Karena terdapat dua kemungkinan sumber

untuk setiap interupsi tersebut, hal itu menjadikan CPU tidak dapat meng-clear flag

interupsi. Bit itu harus diuji dalam ISR untuk menentukan sumber interupsi, dan flag

yang menginterupsinya di-clear dengan perangkat lunak. Umumnya sebuah

percabangan lompat ke suatu kegiatan, tergantung kepada sumber interupsinya.

Mengingat vektor-vektor interupsi berada di bagian bawah memori kode

(memori program lihat Tabel 3.9), instruksi pertama ISR-nya sering lompat dari area

memori ini ke alamat program memori di atasnya, misalnya LJMP 0030H.

Page 31: buku mikon 3_a4

55

SOAL-SOAL LATIHAN

1. Sebutkan nama pabrikan selain Intel yang memproduksi mikrokontroler ?

2. Apakah perbedaan 8051 dengan 8751 ?

3. Port manakah yang digunakan untuk mengakses memori eksternal ?

4. Bisakah 8031 beroperasi sebagai mikrokomputer keping tunggal ?

5. Apakah fungsi resistor full-up yang terdapat di port ?

6. Jelaskan perbedaan AT89C51 dan AT89S51 ?

7. Berapakah jumlah special function register dalam mikrokontroler MCS-51 ?

8. Menempati alamat berapa RAM serbaguna/pemakaian umum ?

9. Bagaimanakah status setiap port pada saat direset ?

10. Gambarkan rangkaian manual reset dan jelaskan cara kerjanya ?

11. Apakah fungsi power on reset ?

12. Bila MCS-51 bekerja dengan xtal 4 MHz, berapakah durasi satu siklus mesinnya ?

13. Berapakah alamat bit tertinggi dari alamat byte 25H ?

14. Kapan bit over flow digunakan ?

15. Apakah fungsi bit carry ? Jelaskan !

16. Register A berisi 78H dan register B berisi 5FH, jika dijumlahkan berapa isi

akumulator ?

17. Kapan bit paritas berlogik satu ?

18. Apakah fungsi register TCON dan TMOD ?

19. Berapakah isi program counter dan stack pointer setelah sistem direset ?

20. Sebutkan langkah-langkah untuk mengoperasikan timer 0 dalam mode 1 ?

21. Apakah perbedaan timer dan counter ? Jelaskan !

22. Tuliskan cara kerja port serial jika mengirim satu karakter ?

23. Jelaskan cara kerja interupsi yang disebabkan oleh timer ?

24. Saat terjadi interupsi apa yang terjadi dengan stack pointer ?

25. Berapakah vektor alamat interupsi untuk timer 1 ?