Mikrokontroler merupakan sebuah sistem komputer yang
seluruh atau sebagian besar elemennya dikemas dalam suatu chip IC, sehingga
sering disebut single chip
mikrokomputer. Lebih lanjut, mikrokontroler merupakan sistem komputer yang
mempunyai satu atau beberapa tugas yang sangat spesifik, berbeda dengan personal komputer yang memiliki beragam fungsi. Perbedaan
lainnya RAM dan ROM yang sangat berbeda antar komputer dengan mikrokontroler.
Dalam mikrokontroler, ROM jauh lebih besar dibanding RAM, sedangkan dalam
komputer PC RAM jauh lebih besar dibanding ROM.
a.
Bagian-bagian
Mikrokontroler
1) Register
Register merupakan suatu tempat penyimpanan (variable) bilangan bulat yang terdiri
dari 8 atau 16 bit. Pada umumnya register memiliki jumlah yang banyak,
masing-masing ada yang memiliki fungsi khusus dan ada pula yang memiliki fungsi
atau kegunaan secara umum. Register yang memiliki fungsi secara khusus misalnya
register timer yang berisi data
penghitungan pulsa untuk timer, atau
register pengatur mode operasi counter
(penghitung pulsa). Sedangkan register yang memiliki fungsi umum digunakan
untuk menyimpan data sementara yang diperlukan untuk proses penghitungan dan proses operasi
mikrokontroler.
Register dengan fungsi umum sangat dibutuhkan dalam
sistem mikrokontroler karena mikrokontroler hanya mampu melakukan operasi
aritmetik atau logika hanya pada satu atau dua operand saja, sehingga untuk
operasi-operasi yang melibatkan banyak variabel harus dimanipulasi dengan
menggunakan variabel-variabel register umum.
2) Accumulator
Merupakan salah satu register khusus
yang berfungsi sebagai operand umum proses aritmetika dan logika.
3)
Program
Counter
Merupakan salah satu register khusus yang berfungsi
sebagai pencacah / penghitung
eksekusi program mikrokontroler.
4)
ALU
(Arithmetic and Logic Unit)
ALU
memiliki kemampuan dalam mengerjakan proses-proses aritmatika (penjumlahan,
pengurangan, perkalian, pembagian) dan operasi logika (misalnya AND, OR, XOR,
NOT) terhadap bilangan bulat 8 atau 16 bit.
5) Clock Circuits
Mikrokontroler
merupakan rangkaian logika sekuensial, dimana proses kerjanya berjalan melalui
sinkronisasi clock. Oleh karena itu
diperlukan clock circuits yang
menyediakan clock untuk seluruh
bagian rangkaian.
6)
Internal
ROM (Read
Only Memory)
Merupakan memori penyimpan data dimana data tersebut
tidak dapat diubah atau dihapus (hanya dapat dibaca). ROM biasanya diisi dengan
program untuk dijalankan oleh mikrokontroler segera setelah power dihidupkan. Data dalam ROM tidak dapat hilang meskipun power dimatikan karena bersifat non
volatile.
7)
Stack Pointer
Stack
merupakan bagian dari RAM yang memiliki metode penyimpanan dan pengambilan
data secara khusus. Data yang disimpan dan dibaca tidak dapat dilakukan dengan
cara acak karena data yang dituliskan ke dalam stack yang berada pada urutan yang terakhir merupakan data yang
pertama kali dibaca kembali. Stack
Pointer berisi offset dimana
posisi data stack yang terakhir masuk
(atau yang pertama kali dapat diambil).
8)
I/O (Input/Output) Ports
Merupakan
sarana yang digunakan oleh mikrokontroler untuk mengakses peralatan-peralatan
lain di luar sistem. I/O Port berupa pin-pin yang dapat berfungsi untuk
mengeluarkan data digital ataupun sebagai masukan data eksternal.
9)
Interrupt Circuits
Adalah
rangkaian yang memiliki fungsi untuk mengendalikan sinyal-sinyal interupsi baik
internal maupun eksternal. Adanya sinyal interupsi akan menghentikan eksekusi
normal program mikrokontroler untuk selanjutnya menjalankan sub-program untuk
melayani interupsi tersebut.
Diagram blok di atas tidak selalu sama
untuk setiap jenis mikrokontroler. Beberapa mikrokontroler menyertakan
rangkaian ADC (Analog to Digital Converter) di dalamnya, ada pula yang menyertakan
port I/O serial disamping port I/O paralel yang sudah ada.
10)
Internal RAM (Random Acces Memory)
Merupakan
memori penyimpan data dimana data tersebut dapat diubah atau dihapus. RAM
biasanya berisi data-data variable
dan register. Data yang tersimpan
pada RAM bersifat volatile yaitu akan
hilang bila catu daya yang terhubung
padanya dimatikan.
b. Fungsi Mikrokontroller
Penggunaan utama dari mikrokontroler adalah untuk mengontrol operasi dari mesin.
Strategi kendali untuk mesin tertentu dimodelkan dalam program algoritma
pengaturan yang ditulis dalam bahasa rakitan (assembly language). Program tersebut selanjutnya dtranslasi ke kode
mesin digital yang selanjutnya disimpan di dalam media penyimpan digital yang
disebut ROM. Pendekatan desain dari mikrokontroler dan mikroprosesor adalah
sama. Jadi mikroprosesor merupakan rumpun dari suatu mikrokontroler.
Mikrokontroler terdiri dari fitur-fitur yang terdapat dalam suatu
mikroprosesor yaitu ALU, SP, PC dan register-register temasuk fitur dari ROM,
RAM, input/output paralel dan input/output pencacah (counter seri). Mikrokontroler yang akan
digunakan pada pembuatan alat penghitung
pengunjung perpustakaan ini adalah
jenis mikrokontroler keluarga 8051 buatan ATMEL (AT89S52).
1)
Mikrokontroler
ATMEL
Mikrokontroler keluaran ATMEL dapat dikatakan
sebagai mikrokontroler terlaris dan termurah saat ini. Chip mikrokontroler
ini dapat diprogram menggunakan port
paralel atau serial. Selain itu, dapat beroperasi hanya dengan 1 chip dan beberapa komponen dasar seperti
kristal, resitor dan kapasitor.
2)
Mikrokontroler Generasi terbaru
Mikrokontroler At89S51/52, merupakan versi terbaru
dibandingkan mikrokontroler AT89C51 yang telah banyak digunakan saat ini. Mikrokontroler AT89S52 ialah mikrokomputer CMOS 8 bit
dengan 8KB Flash Programmable dan Erasable Read Only Memory (PEROM).
Mikrokontroler berteknologi memori non volatile kerapatan tingi dari
Atmel ini kompatibel dengan mikrokontroler standar industri MCS-51 baik pin
kaki Ic maupun set instruksinya serta harganya yang cukup murah. Spesifikasi penting AT89S52 adalah sebagai berikut: Kompatibel dengan keluarga mikrokontroler
MCS51 sebelumnya,8
K Bytes In system Programmable (ISP) flash
memori dengan kemampuan
1000 kali baca/tulis, tegangan kerja 4-5.0V, bekerja
dengan rentang 0 – 33MHz, 256x8
bit RAM internal , 32
jalur I/0 dapat diprogram , 3
buah 16 bit Timer/Counter , 8 sumber interrupt , saluran
full dupleks serial UART, watchdog
timer , dual
data pointer , Mode
pemrograman ISP yang fleksibel (Byte dan
Page Mode).
AT89S51/52 mempunyai memori yang
disebut sebagai Memori data internal. Memori data internal terdiri dari RAM internal sebesar 128 byte dengan alamat
00H-7FH dapat diakses menggunakan RAM address register. RAM Internal ini
terdiri dari Register Banks dengan 8
buah register (R0-R7). Memori lain
yaitu 21 buah Special Function Register dimulai dari alamat 80H-FFH. RAM ini beda lokasi dengan Flash PEROM dengan alamat 000H
-7FFH. Jika diperlukan, memori data
eksternal untuk menyimpan variabel yang ditentukan oleh user dapat ditambah berupa IC RAM atau ROM
maksimal sebesar 64KB.
ATMEL AT89S52 menggunakan 256 bytes
RAM dimana 128 bytes bagian atas menempati alamat paralel ke special function register (SFR). Artinya 128 bagian atas mempunyai
alamat yang sama dengan SFR namun secara fisik terpisah dari SFR. Ketika instruksi mengakses lokasi internal
diatas 7FH, mode alamat yang digunakan pada instruksi menentukan apakah CPU
mengakses 128 bytes atas atau
SFR. Instruksi yang menggunakan
pengalamatan langsung akan mengakses ruang SFR.
Sebagai contoh, Port 0 berada diset pada alamat 80H, port 1 90H dan lain lain, informasi ini juga
dapat dilihat pada file MOD51 yang harus
kita sertakan setiap membuat program assembly
dengan sebagian isinya sebagai berikut.
P0 DATA
080H ;PORT 0
SP DATA
081H ;STACK POINTER
DPL DATA
082H ;DATA POINTER - LOW BYTE
DPH DATA
083H ;DATA POINTER - HIGH BYTE
PCON DATA
087H ;POWER CONTROL
TCON DATA
088H ;TIMER CONTROL
TMOD DATA
089H ;TIMER MODE
TL0 DATA
08AH ;TIMER 0 - LOW BYTE
TL1 DATA
08BH ;TIMER 1 - LOW BYTE
TH0 DATA
08CH ;TIMER 0 - HIGH BYTE
TH1 DATA
08DH ;TIMER 1 - HIGH BYTE
P1 DATA
090H ;PORT 1
Sebagai
perbandingan kapasitas memori, Tabel 1. menampilkan kapasitas memori dari
mikrokontroler seri AT89X.
Tabel 1. Kapasitas Memory
Mikrokontroller seri AT89X
Type
|
RAM
|
Flash
Memory
|
EEPROM
|
AT89C51/
AT89S51
|
8
X 128 byte
|
4
Kbyte
|
Tidak
|
AT89C52/
AT89S52
|
8
X 256 byte
|
8
Kbyte
|
Tidak
|
AT89C55
|
8
X 256 byte
|
20
Kbyte
|
Tidak
|
AT89S53
|
8
X 256 byte
|
12
Kbyte
|
Tidak
|
AT89S8252
|
8
X 256 byte
|
8
Kbyte
|
2
Kbyte
|
(a) Sistem Clock

Sistem diatas bekerja
sebagai berikut:
Kapasitor C1 dan Resistor
R1 digunakan untuk sistem Reset,
saat pertama suplay
diberikan ke mikrokontroler maka
kaki
9
akan
berlogika
1,
selama 2 siklus mesin. Setelah itu pin 9 akan berlogika 0 kembali. Proses
seperti
ini
bisa terjadi
berdasarkan proses
pengisian
dan pengosongan kapasitor.
Kapasitor C2 dan C3, dipasang
bersamaan dengan keramik resonator
(x-tal) untuk menghasilkan Clock internal. Nilai dari clock
ini tergantung dari keramik resonator
(x-tal) yang diberikan.
(b)
Fungsi Masing masing PIN
Fungsi Masing-Masing Pin
Gambar 2.
Deskripsi Pin
Mikrokontroler
mempunyai sebuah peta memori yang disebut sebagai Special Function Register (SFR) . Port 0 berada di alamat 80h, port
1 90h, port 2 A0h dan P3 di alamat
B0h. Sedangkan SBUF untuk komunikasi
serial berada pada alamat 99h. Yang membedakan mikrokontroler
AT89S52 dengan C51(seri
sebelumnya) adalah cara pengisian
program (flash
programming).
Pada
mikrokontroler
AT89S52 terdapat
fasilitas
ISP
(In System
Programming). Artinya mikrokontroler ini
mampu
diprogram
meskipun
dalam kondisi
bekerja. Letak perbedaan pada hardware
adalah adanya MOSI, MISO, dan SCK, pin ini berguna saat flash programming. Adapun fungsi dari pin pin yang lain, fungsinya sama seperti
pada seri sebelumnya.
Tabel 2. Fungsi
pin untuk mikrokontroler AT89S52.
Nomor
|
Nama
|
Alternatif
|
Ket
|
20
|
GND
|
Sebagai Kaki Suplay
GND
|
|
40
|
VCC
|
Sebagai Kaki Suplay
VCC
|
|
32..39
|
P0.7.. P0.0
|
D7..D0 & A7..A0
|
Port 0 dapat
berfungsi sebagai I/0
biasa, juga bisa
sebagai alamat rendah dan bus data untuk memori eksternal
|
1..8
|
P1.0.. P1.7
|
Sebagai port I/0
biasa, mempunyai internal
pull up dan berfungsi sebagai input dengan
memberikan logika 1Terdapat pin MISO,
MOSI, SCK
|
|
21..28
|
P2.0.. P2.7
|
A8.. A15
|
Port 0 sebagai
I/0 biasa, atau
sebagai high order
address, pada saat mengakakses memori eksternal.
|
10..17
|
Port 3
|
Sebagai I/O biasa, namun juga mempunyai fungsi khusus
|
|
10
|
P3.0
|
RXD
|
Port serial input
|
11
|
P3.1
|
TXD
|
Port serial output
|
12
|
P3.2
|
INT0
|
External Interupt 0
|
14
|
P3.4
|
T0
|
External timer 0 input
|
15
|
P3.5
|
T1
|
External timer 1 input
|
16
|
P3.6
|
WR
|
External data memory
write strobe
|
17
|
P3.7
|
RD
|
External data memory
read strobe
|
Nomor
|
Nama
|
Alternatif
|
Ket
|
18
|
ALE
|
Prog
|
Pin ini dapat berfungsi sebagai Address Latch Enable (ALE)yang
me-latch low byte address pada saat mengakses memori eksternalSedangkan pada
saat Flash Programming (PROG) berfungsi sebagai pulse input untuk Pada
operasi normal ALE akan mengeluarkan sinyal Pin ini dapat berfungsi sebagai
Address Latch Enable (ALE) yang me-latch low byte address pada saat mengakses
memori eksternal Sedangkan pada saat Flash Programming (PROG) berfungsi
sebagai pulse input untuk Pada operasi normal ALE akan mengeluarkan sinyal
clock sebesar 1/16 frekwensi oscillator kecuali pada saat mengakses memori
eksternal Sinyal clock pada pin ini dapat pula didisable dengan men-set bit 0
dari Special Function Register alamat 8EH ALE hanya akan aktif pada saat
mengakses memori ekster- nal (MOVX & MOVC)
|
19
|
PSEN
|
Pin ini berfungsi pada
saat mengeksekusi program yang terletak pada memori eksternal. PSEN akan
aktif dua kali setiap cycle
|
|
20
|
EA
|
Pada kondisi low maka pin ini akan berfungsi sebagai EA yaitu
mikrokontroler akan menjalankan program yang ada pada memori eksternal
setelah sistem direset Apabila berkondisi high maka pin ini akan berfungsi
untuk menjalankan program yang ada pada memori internal
|
|
21
|
XTAL1
|
Input Oscillator
|
(c)
Penulisan program
Pada umumnya program pada mikrokontroler di tulis dalam
bahasa assembly dan bahasa mesin.
Suatu statemen dalam program terdiri dari 4 bagian yaitu label, op-code,
operan dan keterangan. Penggunaan label memudahkan untuk mereferensi
instruksi atau untuk menetapkan operasi percabangan. Op-code (kode operasi) berisi singkatan-singkatan dan instruksi
yang akan di laksanakan, misalnya INC untuk increment
(operasi penjumlahan).
Operan terdiri dari sintaks yang di berubah-ubah sesuai dengan
instruksi yang harus di laksanakan. Pada penulisan program dalam bahasa assembly
yang sulit adalah penulisan operannya.
Pemberian keterangan berfungsi untuk menjelaskan operasi pelaksanaan dari suatu
insturksi.
Perintah
dasar yang biasa digunakan pada mikrokontroler adalah
sebagai berikut:
1) Clr(clear)
format : clr a (mereset atau memberi nilai 00h pada akumulator), clr rx (mereset atau memberi nilai 00h pada register x) Contoh: clr r0
clr py (mereset atau memberi nilai 00h pada port y)Contoh: clr p1
format : clr a (mereset atau memberi nilai 00h pada akumulator), clr rx (mereset atau memberi nilai 00h pada register x) Contoh: clr r0
clr py (mereset atau memberi nilai 00h pada port y)Contoh: clr p1
2) . mov
format : mov a, px (menyalin isi data pada port x ke dalam akumulator) Contoh: mov a,p3mov px, #(menyalin suatu nilai 8-bit ke port x)
Contoh: movp0,#0feh mov px, ry (menyalin isi data yang nilainya terdapat pada register y ke dalam port x) Contoh: mov p3, r5.
format : mov a, px (menyalin isi data pada port x ke dalam akumulator) Contoh: mov a,p3mov px, #(menyalin suatu nilai 8-bit ke port x)
Contoh: movp0,#0feh mov px, ry (menyalin isi data yang nilainya terdapat pada register y ke dalam port x) Contoh: mov p3, r5.
3) Setb (set bit) format : setb px.y(menset
atau memberikan logika 1 pada port x.y)Contoh: setb p1.0
4) call
Call terbagi menjadi dua format
yaitu acall (absolute call) dan lcall (long call), perbedaannya hanya pada
kemampuan jauh dekatnya pemanggilan subrutin. Seandainya penggunaan acall hanya
mampu memanggil sampai alamat 100h maka untuk lcall dapat lebih dari itu, namun
juga untuk penggunaan lcall membutuhkan memori dan siklus mesin yang lebih
banyak.
Saat perintah call dijalankan, isi
register PC (Program Counter) akan disimpan ke dalam stack dan digantikan
dengan alamat subrutin yang dipanggil. Saat subrutin berakhir dengan ditandai
perintah ret (return) register PC akan diisi kembali oleh isi dari stack, dan
mikrokontroler akan menjalankan perintah di bawah baris perintah call tadi. Format
: acall (perintah untuk memanggil program pada subrutin):
acall computer. lcall (perintah untuk memanggil program pada subrutin)
Cat.: Penggunaan
subrutin sebaiknya menggunakan kata, untuk kata-katanya sesuka pemrogram boleh
menggunakan nama sendiri, nama kota ataupun nama-nama lainnya.