Вы находитесь на странице: 1из 31

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.
25
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 ROM RAM FLASH/ Ports T/C UART
(byte) (byte) (byte) EEPROM
8051 4K 128 4 2 √
8031 128 4 2 √
8751 4K 128 4 2 √
8052 8K 256 4 3 √
8752 8K 256 4 3 √
83C51FA 8K 256 4 3 √
87C51FA 8K 256 4 3 √
AT89C51 128 4K 4 2 √
AT89S51 128 4K 4 2 √
AT89C2051 128 2K 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.
26
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.

X1 X2 T0 T1

Osilator Memori 2 unit


Memori data
dan Program 16 bit Timer/
128 byte
Pewaktuan 4096 byte Counter

CPU
8051

Programmable
Kontrol Bus Port Serial
I/O
Serial
Timer 0
Timer 1
EA
INT1 INT0 PSEN RST
ALE TxD RxD
P0 P1 P2 P3

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
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
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).
Alamat Vcc
Kontrol

Read Latch

Pin P0.x
Internal Bus
D Q
P0x
Latch
Write to Latch
CLK Q
MUX
Vss

Read Pin

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
Vcc

Read Latch Internal


Pull-up

Pin P1.x
Internal Bus
D Q
P1x
Latch
Write to Latch
CLK Q
Vss

Read Pin

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.

Alamat Vcc
Kontrol

Read Latch Internal


Pull-up

Pin P2.x
Internal Bus
D Q
P0x
Latch
Write to Latch
CLK Q

Vss

Read Pin

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
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.

Fungsi Vcc
output
alternatif
Read Latch Internal
Pull-up

Pin P3.x
Internal Bus
D Q
P3x
Latch
Write to Latch
CLK Q Vss

Read Pin
Fungsi
input alternatif

Gambar 3.6 Rangkaian internal port 3

31
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.
32
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.

Manual Power-on Reset


+5V
+5V

100 +
10uF
Reset
RST

8,2K

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
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).
34
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.

FFH FFH
DIAKSES DENGAN DIAKSES DENGAN
128 PENGALAMATAN TAK
ATAS LANGSUNG PENGALAMATAN
(8052) LANGSUNG
80H 80H
7FH DIAKSES DENGAN - Port-port
128 PENGALAMATAN - Bit-bit kontrol dan
BAWAH Register status
LANGSUNG dan Fungsi - Timer
0 REGISTER Khusus - 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.

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,
35
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
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:
Hex 0FH Desimal 15
+7FH +127
8EH 142

37
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.
38
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).
39
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.

Overflow
Frekuensi Osilator/12
Update
TH0,TL0
P3.4(T0) Mode Select

TMOD
GATE C/T M1 M0
SFR89H

P3.2(INT0)

TCON
TF0 TR0
SFR88H

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
(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.

MSB LSB
GATE C/T M1 M0 GATE C/T M1 M0

Timer/Counter 1 Timer/Counter 0

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
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.
MSB LSB
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

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
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.

Osc :12 C/T=0


Interrupt
TLX THX
TFx
C/T=1 5 BIT 8 BIT
TxPin Control
C/T

TRx

GATE

INTx

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
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.

Osc :12 C/T=0


Interrupt
TLX THX
TFx
C/T=1 8 BIT 8 BIT
TxPin Control
C/T

TRx

GATE

INTx

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.

Osc :12 C/T=0


Interrupt
TLX
TFx
C/T=1 8 BIT
TxPin Control
Reload
C/T
THX
8 BIT
TRx

GATE

INTx

Gambar 3.16 Timer/counter mode 2


44
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.

Osc :12 C/T=0


Interrupt
TL0
TF0
C/T=1 8 BIT
T0Pin Control
C/T

TR0

GATE

INT0
Interrupt
TH0
Osc :12 TF1
8 BIT
Control
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
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
46
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.
TXD RXD
(P3.1) (P3.0)

D
SBUF
Clk Q Shift Register
(Write Only)
Clk

Baud Rate
Baud Rate clock
clock (receive)
(transmit) SBUF
(Read Only)

Data bus internal MCS-51

Gambar 3.18 Diagram blok sistem komunikasi serial MCS-51


47
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:
48
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

49
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.

50
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 Program
Waktu

a. Eksekusi program tanpa interupsi

Eksekusi
interupsi ISR ISR ISR

* ** * ** * **
Eksekusi
Main Main Main Main Main
Waktu

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
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.

52
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.

Register IE Register IP Interupsi


1 prioritas
INT0 IT0 IE0 tinggi
0
Interupsi
prioritas
TF0
rendah

1
INT1 IT1 IE1
0 Urutan
polling
TF1 interupsi

R1
TI
Enable interup
Interupsi
Enable Global
diterima

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
- 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.

54
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 ?

55

Вам также может понравиться