buku mikon 3_a4
Transcript of 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.
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.
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
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).
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
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
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
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.
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
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).
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,
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:
37
Hex 0FH+7FH
8EH
Desimal 15+127
142
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.
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).
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
(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
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
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
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
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
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
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
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:
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
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.
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
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.
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
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.
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 ?