Anda di halaman 1dari 104

MIKROKONTROLLER

(UC)

1. Apakah PERBEDAAN mikrokontroler dan

mikroprosesor?
2. Apakah yang dimaksud dengan CPU, piranti memori

dan I/O port?


3. Apakah Bit dan Byte
4. 1111100011101 + 1011000011101 ?
5. ubahlah bilangan hexa berikut menjadi biner : FFAB234

Mikrokontroler adalah merupakan one chip

microcomputer, dimana dalam satu chip


sudah terdapat piranti sebuah komputer
secara umum, yaitu RAM, ROM, CPU, dan I/O
port

Mikroprosesor adalah piranti pemrosesan

sental/cpu yang merupakan tempat prosesproses sebuah komputer dijalankan. Sebuah


mikroprosesor memerlukan periperal lain
seperti RAM, ROM dan I/O untuk dapat
melakukan tugas-tugasnya. Mikroprosesor
adalah otaknya PC (personal Computer)

hardware

adalah perangkat fisik yang


nampak berupa sebuah chip yang langsung
berhubungan dengan piranti fisik lain.

Software

adalah
software
yang
perangkat fisik

Antara

perangkat lunak berupa


mapu
menggerakkan

hardware
dan
software
dalam
mikrokontroler tidak bisa dipisahkan satu
sama
lainnya.
Tanpa
software
mikrokontroler hanyalah sebuah chip kosong
yang tidak berarti apa-apa, sedangkan tanpa
hardware mikrokontroler tidak bisa berjalan.

Perkembangan teknologi semionduktor begitu pesat

sehingga di pasaran beredar ribuan jenis IC (integrated


circuit dengan kegunaan beragam, kebutuhan manusia
yang semakin kompleks memungkinkan untuk dibuat IC
yang bisa di program sesuai dengan kebutuhan,
semikonduktor yang masuk jenis ini adalah
mikroprosesor, mikrokontroler, CPLD (Complex
Programable Logic Device) dan FPGA (Field Programable
Gate Array)

APLIKASI MIKROKONTROLER
Mikrokontroler digunakan mulai dari mainan anak-anak,

perangkat elektronik rumah tangga, perangkat pendukung


otomotif, peralatan industri, peralatan telekomunikasi,
peralatan medis dan kedokteran, sampai dengan
pengendali robot serta persenjataan militer.

Kegunaan uC?
Kegunaan dari mikrokontroler pada umumnya banyak

digunakan untuk aplikasi sistem kendali atau monitoring,


misalnya sebagai alat kontrol penampil tulisan, sistem
pengukuran jarak jauh (telemetri), berbagai mainan anakanak dan sistem elektronika lainnya

Keuntungan piranti yang bisa


diprogram antara lain:
(1)Biaya yang bisa di tekan
(2)Penghematan ruang dan fleksibilitas tinggi
(3)Dengan

manipulasi
software
dapat
meminimumkan penggunaan piranti fisik dan
mengoptimalkan unjuk kerja sistem

Bagian-bagian Mikrokontroler:
(1)Unit Memori
(2)CPU (Central Processing Unit)
(3)Bus
(4)Unit I/O
(5)Pembangkit Clock-Osilator
(6)Unit Timer/Counter
(7)Piranti Tambahan
(8)Program

(1) Unit Memori


Memori adalah bagian mikrokontroler yang berfungsi

untuk menyimpan data. 3 hal yang perlu diperhatikan


mengenai memori yaitu:
(1)Alamat adalah lokasi tempat memori berada.
(2)Data adalah isi dari memori yang diakses
(3)Jalur kendali (kontrol) adalah jalur yang berisi perintah
CPU, apakah suatu lokasi memori akan di baca atau
ditulis

Menurut Sifatnya Memori dibagi 2:


(1) Memori menguap (Volatile memory) adalah sifat

memori yang akan hilang jika catudaya dimatikan. Memori


jenis ini dikenal juga sebagai RAM (random Access
Memory)
(2) Memori tidak menguap (Non Volatile Memory) memori
jenis ini tidak akan hilang jika catudaya dimatikan, memori
jenis ini dinamakan ROM (Read Only Memory)

(2) CPU (Central Processing Unit)


CPU merupakan pengendali utama dari seluruh aktivitas

mikrokontroler. CPU bertugas melakukan eksekusi


program dan melakukan koordinasi dengan bagian lain
dari mikrokontroler.
Dalam Mikrokontroler terdapat ALU (Arithmetic Logic Unit)
yang bertugas melaukan perhitungan aritmatika dan
fungsi logic.
Selain itu di dalam CPU terdapat memori sementara yang
bisa diakses selama proses eksekusi berlangsung disebut
sebagai register

(3) Bus
Bus adalah jalur-jalur fisik yang mengubungkan CPU

dengan memori dan unit lain dari mikrokontroler.


Jalur-jalur ini tergabung dalam satu grup, jalur inilah yang
disebut sebagai Bus

(4) I/O (input-output port)


I/O digunakan untuk mengontrol dan menerima data dari

lingkungan luar
2 macam inteface I/Oyang biasa digunakan adalah
I/O serial standard RS 232/UART digunakan untuk komunikasi

dengan PC
Interface paralel/PIO (setiap pabrik mengeluarkan nama sendiri
[PIA (motorolla), PPI (intel), PDC (rockwell)

(5) Pembangkit Clock - Oscilator


Rangkaian osilator pada mikrokontroler berfungsi sebagai

penyedia clock
Clock digunakan oleh mikrokontroler untuk dapat
mengeksekusi instruksi program secara serempak
(sinkron)
Frekuensi clock yang dibangkitkan oleh osilator akan
menentukan waktu yang diperlukan oleh mikrokontroler
untuk mengeksekusi suatu instruksi

(6) Unit Timer/Counter


Timer digunakan untuk keperluan menghasilkan: Delay

(waktu tunda) yang berfungsi untuk keperluan operasi


pewaktuan dan kontrol
Mencacah pulsa
Mengetahui keberadaan proses yang sedang
berlangsung dan sebagainya

(7) Komponen Tambahan


Pada mikrokontroler selain komponen standar ada juga

komponen tambahan dengan fungsi tambahan pula.


Contoh komponen tambahan adalah: ADC (analog to
digital converter) yang berfungsi untuk pengubah analog
ke digital. ADC dan komparator sebagai penghubung ke
sistem analog
PWM (Pulse Width Modulation) adalah format sinyal
output mikrokontroler yang nilainya dinyatakan dalam
bentuk lebar pulsa, PWM digunakan untuk pengendali
kecepatan motor.

(8) Program (Perangkat Lunak)


Mikrokontroler adalah piranti yang harus di program

supaya dapat bekerja, program mikrokontroler ditulis


dalam berbagai bahasa.
Program untuk mikrokontroler harus dikompilasi agar
mendapatkan hasil file eksekusi dengan ekstensi .HEX,
.File kemudian di download ke memori program dengan
perantaraan sebuah programmer.

Mikrokontroler bekerja harus diprogram!, Bahasa

Pemrograman MCU ini adalah Low Level Programming ,


ada 2 bahasa yang digunakan:
Bahasa Mesin (machine language) Contoh EP2732b pada

Mottorolla MC68HC908GP32 atau MC68705U3


Bahasa perakit (Assembly Language), Contoh: ASM51 untuk MCU
89C51 Intel

Interupsi
Interupsi adalah suatu permintaan khusus kepada

mikroposesor untuk melakukan sesuatu. Bila terjadi


interupsi, maka komputer akan menghentikan dahulu apa
yang sedang dikerjakannya dan melakukan apa yang
diminta oleh yang menginterupsi.

Mikrokontroler MCS-51
Mikrokontroler dengan arsitektur MCS-51 merupakan

salah satu jenis arsitektur mikrokontroler yang paling


lama, paling populer dan paling banyak digunakan di
dunia. Arsitektur ini dikeluarkan pertama kali oleh Intel
dan kemudian menjadi banyak dipakai dan dipelajari di
seluruh dunia.

Di Indonesia, mikrokontroler MCS-51 banyak dipakai

karena telah lama populer, mudah untuk didapatkan, dan


harganya yang murah.
Berbagai seri mikrokontroler berarsitektur MCS-51 telah
diproduksi oleh berbagai vendor dan digunakan di dunia
sebagai mikrokontroler yang bersifat low cost dan high
performance.
Antar seri mikrokontroler berarsitektur MCS-51 memiliki
beragam tipe dan fasilitas, namun kesemuanya memiliki
arsitektur yang sama, dan juga set instruksi yang relatif
tidak berbeda.

Berikut tabel perbandingan beberapa seri


mikrokontroler MCS-51 buatan Atmel.

Keterangan:
Flash adalah suatu jenis Read Only Memory yang

biasanya diisi dengan program hasil buatan manusia


yang harus dijalankan oleh mikrokontroler
RAM (Random Acces Memory) merupakan memori yang
membantu CPU untuk penyimpanan data sementara dan
pengolahan data ketika program sedang running
EEPROM (Electrically Erasable Programmable Read
Only Memory) adalah memori untuk penyimpanan data
secara permanen oleh program yang sedang running
Pin I/O adalah kaki untuk jalur keluar atau masuk sinyal
sebagai hasil keluaran ataupun masukan bagi program

Timer adalah modul dalam hardware yang bekerja untuk

menghitung waktu/pulsa
UART (Universal Asynchronous Receive Transmit) adalah
jalur komunikasi data khusus secara serial asynchronous
SPI (Serial Peripheral Interface) adalah jalur komunikasi
data khusus secara serial secara serial synchronous
ISP (In System Programming) adalah kemampuan khusus
mikrokontroler untuk dapat diprogram langsung dalam
sistem rangkaiannya dengan membutuhkan jumlah pin
yang minimal

Arsitektur Mikrokontroler MCS-51


Arsitektur mikrokontroler MCS-51 diotaki oleh CPU 8 bit

yang terhubung melalui satu jalur bus dengan memori


penyimpanan berupa RAM dan ROM serta jalur I/O
berupa port bit I/O dan port serial. Selain itu terdapat
fasilitas timer/counter internal dan jalur interface address
dan data ke memori eksternal.

Salah satu tipe mikrokontroler

arsitektur MCS-51 yang banyak


digunakan saat ini adalah tipe
Atmel 89S51/52

Pengenalan Mikrokontroller AT89S51/52


Merupakan versi terbaru dibandingkan mikrokontroler

AT89C51 yang telah banyk digunakn saat ini.


Mikrokontroler ini merupakan mikrokontroler CMOS 8 bit
dengan 8 Kbyte Flas Programmable dan Erasable Read
Only Memori (PEROM). Mikrokontroler ini berteknologi
memori non volatile kerapatan tinggi dari AMTEL yang
kompatibel dengan mikrikontroler standar industri MCS51.

Dalam 89S51/52 terdapat 32 jalur port yang

dikelompokkan dalam 4 buah port yang masing-masing


terdiri dari 8 bit.
Masing-masing bit dapat diprogram secara individual dan
bebas sebagai input maupun output dan dapat
dikonfigurasikan secara dinamis lewat perangkat lunak.

A.Port 0

Merupakan dual-purpose port (port yang memiliki dua


kegunaan). Pada desain yang minimum (sederhana) digunakan
sebagai port I/O (Input/Output).Port 0 terdapat pada pin 32-39.
B. Port 1
Merupakan port yang hanya berfungsi sebagai port I/O, kecuali
pada IC 89S52 yang menggunakan P1.0 dan P1.1 sebagai input
eksternal untuk timer ketiga (T3). Port 1 terdapat pada pin 1-8.
C. Port 2
Merupakan dual-purpose port. Pada desain minimum digunakan
sebagai port I/O. Pada desain lebih lanjut Port ini digunakan
untuk mengirim byte alamat bila pengaksesan dilakukan pada
memori eksternal. Port 2 terdapat pada pin 21-28.

D. Port 3

Merupakan dual-purpose port. Selain sebagai port I/O juga


mempunyai fungsi khusus yang ditunjukkan pada tabel
berikut.

Port
P3.0

Fungsi Khusus
RXD, merupakan masukan untuk port serial/receiver

P3.1

TXD, merupakan output dari port serial/transmitter

P3.2

INT0, merupakan masukan untuk interupsi eksternal 0

P3.3

INT1, merupakan masukan untuk interupsi eksternal 1

P3.4

T0, merupakan masukan untuk pulsa eksternal Timer 0

P3.5

T1, merupakan masukan untuk pulsa eksternal Timer 1

P3.6
WR, merupakan sinyal tulis (write strobe) untuk
menulis data ke memori data eksternal
P3.7
RD, merupakan sinyal baca (read strobe) untuk
membaca data dari memori eksternal

E. PSEN (Program Store Enable)

PSEN atau Program Store Enable adalah sinyal baca pada saat
menjalankan program dari memori eksternal. Di dalam aplikasi, PSEN
akan dihubungkan dengan sinyal RD memori program eksternal
(EEPROM).PSEN terdapat pada pin 29.
F. ALE (Address Latch Enable)
ALE atau Addres Latch Enable adalah pulsa keluaran latch pada
proses pengaksesan memori eksternal (program maupun data). Di
dalam aplikasi, ALE biasanya dihubungkan dengan masukan latch
enable dari IC latch, misalnya 74373.. ALE terdapat pada pin 30.
G. EA (External Access)
EA atau External Access Enable menentukan apakah alamat awal
memori program berada di memori eksternal atau internal. Bila
dihubungkan dengan GND, alamat awal program memori akan berada
di memori eksternal, sebaliknya bila dihubungkan dengan VCC, maka
alamat awal memori program AT89S52 akan berada di memori internal.
EA terdapat pada pin 31.

H. RST (Reset)

RST pada pin 9 merupakan pin reset. Jika pada pin ini diberi masukan
1 selama minimal 2 machine cycle maka system akan di-reset dan
register-register internal akan berisi nilai default tertentu dan program
kembali mengeksekusi dari alamat paling awal.
I.XTAL2 dan XTAL1
XTAL2 merupakan keluaran dari rangkaian penguat osilator internal.
Sedangkan XTAL1 merupakan masukan ke penguat osilator internal.
Sebuah kristal dan dua buah kapasitor yang dihubungkan ke pin ini
sudah cukup untuk menyediakan sinyal detak (clock) untuk
mikrokontroler.
J. Koneksi Power
VCC dan GND merupakan pin untuk tegangan DC. Mikrokontroler
AT89S52 membutuhkan tegangan DC sebesar 5 volt agar bisa bekerja
dengan baik (standar TTL). Pin Vcc terdapat pada pin 40 sedangkan
ground terdapat pada pin 20.

Rangkaian Sistem Minimum Atmel 89S51 Sistem

minimum (sismin) mikrokontroler adalah rangkaian


elektronik minimum yang diperlukan untuk beroperasinya
IC mikrokontroler. Sismin ini kemudian bisa dihubungkan
dengan rangkaian lain untuk menjalankan fungsi tertentu.
Suatu sismin bisa saja ditambahkan dengan rangkaian
pelengkap lainnya sehingga menjadi suatu sistem yang
lebih lengkap dan memiliki fungsi lebih banyak.

Untuk membuat rangkaian sismin Atmel 89S diperlukan


beberapa komponen yaitu:
IC mikrokontroler AT89S
1 XTAL 12 MHz atau 11.0592 MHz
2 kapasitor kertas 33 pF
1 kapasitor elektrolit 10 uF
1 resistor 10 Kohm

Mengenal DT-51
Pada percobaan pemrograman praktikum, yang akan

dipelajari adalah penggunaan mikrokontroler 89S52 yang


diproduksi oleh Innovative Elektronics dengan nama DT51 Minimum sistem.

Minimum sistem mikrokontroler merupakan sebuah kit

mikrokontroler yang sudah dapat berfungsi sebagai


pengontrol suatu sistem elektronika. Minimum sistem
memiliki kemampuan mengakses memori eksternal,
biasanya menggunakan sebuah IC latch, yaitu 74HCT573
dan 74HCT08.

DT-51 membutuhkan bantuan PC untuk mendownload

program dan komunikasi pada bagian akses serial. Kabel


serial akan digunakan untuk menghubungkan PC dan DT51 melalui serial port. Serial port pada PC sering disebut
COM1 dan COM2.

Spesifikasi DT-51
berbasis mikrokontroler berbasis 89S51 standar industri.
Port serial standar RS 232 untuk komunikasi antara

komputer dengan DT-51.


8 kbyte non volatile memori (EEPROM) untuk menyimpan
program dan data.
4 port input/output (I/O) dengan kapasitas 8 bit tiap
portnya.
Port Liquid Crystal (LCD) umtuk keperluan tampilan.
Control port (bertuliskan CONTROL), meliputi Interrupt
eksternal dan counter eksternal.

Memori eksternal di DT-51


Memori internal Dt-51 sudah diisi program yang tidak bisa

kita tulis ulang. Oleh karena itu, DT-51 menggunakan


memori eksternal AT28C64B. Memori jenis ini adalah
EEPROM kualitas tinggi berukuran 64 Kbyte, sehinggan
dapat mmemprogram aplikasi yang lebih besar.

Register Utama
Keluarga MCS-51 memiliki banyak register yang meliputi
akumulator,
register R,
register B,
DPTR (Data Pointer),
PC (Program Counter),
SP (Stack Pointer).

Akumulator
digunakan sebagai register umum untuk
mengakumulasikan hasil dari instruksi-instruksi.

Akumulator dapat menampung 8 bit (1 byte) data

Register R dan B
Register R adalah delapan set register yang dinamakan

R0, R1, R2, R3, R4, R5, R6, dan R7


Register B menyimpan sebuah harga 8 bit (1 byte),
digunakan misal pada MUL AB dan DIV AB, jika
diinginkan untuk mengalikan atau membagi akumulator A
dengan suatu harga, maka simpanlah harga tersebut
dalam register B dan kemudian jalankan instruksinya

DPTR, PC, Dan SP


DPTR (Data Pointer)
Digunakan untuk menunjuk pada lokasi suatu data
register 16 bit (2 byte)
Mengakses memori eksternal dengan alamat yang ditunjukkan oleh DPTR
PC (Program Counter)
alamat 2 byte yang memberitahu 89C51 di mana instruksi selanjutnya akan
dilaksanakan
Saat 89C51 inisialisasi, PC selalu berisi 0000h dan bertambah satu setiap satu
instruksi terkerjakan
perintah LJMP 2340h akan mengisi PC dengan 2340h
SP (Stack Pointer)
menyimpan 8 bit (1 byte) data
menunjukkan di mana harga berikutnya yang akan diambil dari stack
Jika suatu harga dimasukkan dalam stack, 89C51 petama-tama akan
menambah harga SP dan kemudian menyimpan harga tersebut pada alamat
memori yang bersesuaian. Demikian pula jika suatu harga diambil dari stack,
maka 89C51 akan mengambil harga dari stack dan kemudian mengurangi
harga SP.

Mode Pengalamatan
Immediate Addressing
harga yang akan disimpan dalam memori langsung
Contohnya: MOV A,#20h
Direct Addressing
harga yang akan dipakai diambil langsung dalam alamat memori
lain
Mode pengalamatan ini cukup cepat, meskipun harga yang didapat
tidak langsung seperti immediate, namun cukup cepat karena
disimpan dalam RAM internal
Contohnya: MOV A,30h
Indirect Addressing
Mode digunakan untuk mengakses 128 byte lebih dari RAM
internal pada keluarga 8052
Contoh: MOV A,@R0

Memory Program Structure

Interrupt Location

Data Memory

Internal Data Memory

Lower 128 bytes of internal RAM

Upper 128 Bytes of Internal RAM

Siklus Mesin
1 MC = 6 state = 12 periode clock
Jika frekuensi crystal yang digunakan adalah 12 MHz

maka 1 MC = 12/frekuensi crystal = 12/12 MHz =1uS

Waktu Eksekusi Instruksi


Waktu eksekusi sebuah instruksi oleh mikrokontroler tergantung dari jenis instruksi dan frekuensi clock yang
digunakan. Setiap instruksi memiliki panjang byte dan jumlah siklus yang berbeda.
Byte instruksi (Byte) menandakan jumlah lokasi memori yang dipakai
Siklus instruksi (Cycle) menandakan jumlah machine cycle yang dibutuhkan.
Waktu eksekusi dapat dihitung dengan rumus :

Dimana :
Tinst : Waktu yang dibutuhkan untuk mengeksekusi 1 instruksi (Secon)
C : Jumlah machine cycle

Contoh :
Diketahui sebuah mikrokontroler dengan frekuensi crystal 12 MHz.
Berapakah waktu yang diperlukan untuk mengeksekusi perintah berikut ini?

Mov A,#30h

Jawab :
Dari lembaran data 8051 Operational Code Mnemonics diketahui bahwa instruksi dengan format
Mov A,#n adalah instruksi dengan Byte = 1 dan Cycle = 1
Maka : Tinst = (1x12)/12MHz=1uS

Dasar Program Assembly


Bahasa Assembly adalah bahasa komputer yang

kedudukannya di antara bahasa mesin . Bahasa mesin


adalah kumpulan kode biner yang merupakan instruksi
yang bisa dijalankan oleh komputer. Sedangkan bahasa
Assembly memakai kode Mnemonic untuk menggantikan
kode biner, agar lebih mudah diingat sehingga lebih
memudahkan penulisan program.

Konstruksi Program Assembly


Program sumber dalam bahasa Assembly menganut

prinsip 1 baris untuk satu perintah, setiap baris perintah


tersebut bisa terdiri atas beberapa bagian (field), yakni
bagian Label, bagian mnemonic, bagian operand yang
bisa lebih dari satu dan terakhir bagian komentar . Untuk
membedakan masing-masing bagian tersebut dibuat
ketentuan sebagian berikut:

Masing-masing bagian dipisahkan dengan spasi atau

TAB, khusus untuk operand yang lebih dari satu masingmasing operand dipisahkan dengan koma.
Bagian-bagian tersebut tidak harus semuanya ada
dalam sebuah baris, jika ada satu bagian yang tidak ada
maka spasi atau TAB sebagai pemisah bagian tetap
harus ditulis.
Bagian Label ditulis mulai huruf pertama dari baris, jika
baris bersangkutan tidak mengandung Label maka label
tersebut digantikan dengan spasi atau TAB, yakni sebagai
tanda pemisah antara bagian Label dan bagian
mnemonic.

Label mewakili nomor memori-program dari instruksi pada

baris bersangkutan, pada saat menulis instruksi JUMP,


Label ini ditulis dalam bagian operand untuk menyatakan
nomor memori-program yang dituju.
Mnemonic (artinya sesuatu yang memudahkan diingat)
merupakan singkatan perintah.
Dikenal dua macam mnemonic, yakni manemonic yang
dipakai sebagai instruksi mengendalikan prosesor,
misalnya ADD, MOV, DJNZ dan lain sebagainya. Ada pula
mnemonic yang dipakai untuk mengatur kerja dari
program Assembler misalnya ORG, EQU atau DB,
mnemonis untuk mengatur kerja dari program Assembler
ini dinamakan sebagai Assembler Directive.

Operan dalam pemrograman mikrokontroller adalah data

yang tersimpan dalam memori, register dan input/output


(I/O).
operand bisa berupa Symbol yang mewakili data tersebut,

misalnya ADD A,#Offset. Banyak instruksi yang operandnya adalah


register dari prosesor, misalnya MOV A,R1. Bahkan ada pula
instruksi yang tidak mempunyai operand, misalnya RET.

Komentar merupakan bagian yang sekedar sebagai

catatan, tidak berpengaruh pada prosesor juga tidak


berpengaruh pada kerja program Assembler, tapi bagian
ini sangat penting untuk keperluan dokumentasi

ORG singkatan dari ORIGIN, untuk menyatakan nomor

memori yang dipakai setelah perintah itu, misalnya ORG


$1000 maka memori berikutnya yang dipakai Assembler
adalah $1000.
EQU singkatan dari EQUATE, dipakai untuk
menentukan nilai sebuah Symbol. Misalnya Angka88
EQU 88 memberi nilai 88 pada Symbol Angka88, atau CR
EQU $0D mempunyai makna kode ASCII dari CR
(Caarriage Return) adalah $08.

DB singkatan dari DEFINE BYTE, dipakai untuk

memberi nilai tertentu pada memori-program. Nilai


tersebut merupakan nilai 1 byte, bisa berupa angka
ataupun kode ASCII. DB merupakan Assembler Directive
yang dipakai untuk membentuk teks maupun tabel.
ORG $0200
STRING DB Atmel AT89C2051

Intruksi-intruksi pada mikrokontroler


Add >> intruksi ini melakukan penjumlahan pada dua

buah data yang terdapat pada alamat register yang


ditunjuk oleh intriksi.
Mul(multiply)>> melakukan perkalian data antara dua
regisgter
Call>> umtuk melakukan pemanggilan terhadap intruksi
yanf terdapat dalam subrutine yang ditunjuk.
CJNE (Compare and Jump if Not Equal)>>melakukan
perbvandinganantara data sumber dengan data tujuan.
Bila datany sama,maka lanjut keintruksi dibawahnya, bila
tidak, maka jump ke alamat yang dituju

Dec(Decrement)>> melakukan opersi pengurangan

dengan nilai 1 pada data yang terdapat pada alamat


register yang ditunjuk oleh intruksi dan menyimpannya
pada register tersebut.
Div (Divide)>> melakukan operasi pembagian pada dua
buah data yang terdapat pada alamat register yang
ditunjuk oleh intruksi.
DJNZ (Degrement and Jump if Not Zero)>> melakukan
pengurangan pada alamat register serbaguna (R0-R7)
dengan nilai 1 dan melompat ke sub rutin jika hasilnya
bukan 0.tapi jika sama dengan 0, maka program akan
menjalankan intruksi dibawanya.

Intruksi-intruksi pada mikrokontroler


Inc (Increment)>>melakukan penjumlahan dengan nilai 1

pada data yang terdapat pada alamat register yang


ditunjuk oleh intruksi dan menyimpannya pada register
tersebut.
JMP(Jump)>>melakukan lompatan pada alamat kode
yang ditunjuj.
MOV >> melakukan pemindahan data dari alamat register
satu ke register lainnya.
Push>>intruksi ini akan menaikkan stack pointer data
data pada alamat register yang ditunjuk.
RET (Return)>>intruksi ini digunakan ke subrutin.

Contoh aplikasi dasar


Port sebagai I/O
$mod51 ORG 4000H ;menggunakan alamat awal EEPRO
DT51
MULAI ;Label MULAI
MOV A,#0FH ;Kirim data 0F ke akumulator
MOV P1, A ;Kirim data pada akumulator ke port 1
JMP MULAI ;Loncat ke label MULAI

END

Program tersebut adalah program yang menerima input dari

akumulator, lalu menampilkan outputnya yang berlogika 1 atau


0 di port 1.
Selanjutnya membuat label dengan nama MULAI.
Isi dari label tersebut akan menset data 0FH, lalu dikirim ke
akumulator menggunakan perintah MOV.
Untuk terjadi pengulangan terus menerus, kita dapat
menggunakan fungsi JMP untuk melompat ke label MULAI.
Program diakhiri menggunakan fungsi END.
Jika program dijalankan maka akan tampil data dimana 4 LED
akan menyala di port input. Karena 0F, maka binernya
00001111

$mod51
CSEG
ORG 4000H
LJMP START
ORG 4100H

START
MOV SP, #30H
SETB p1.0
CLR P1.1
SETB P1.2
CLR P1.3
SETB P1.4
CLR P1.5
CLR P1.6
CLR P1.7
SJMP $

END

Jika program dijalankan , maka menyebabkan output LED

pada Trainer board Bit ke 0, 2, dan ke 4 akan menyala


dan lainnya akan padam. SJMP $ pada program akan
menyebabkan program berputar (looping) pada alamat,
dimana perintah SJMP $ berada.

Intruksi-intruksi lompat(JUMP)
Pada saat mikrokontroler menjalankan kelompok intruksi

JUMP, nilai program yang runtun sesuai dengan aliran


program diganti dengan lokasi memori program baru yang
dikehendaki pemrogram.

Intruksi-intruksi lompatan
JMP
CALL
RET
RETI

Intruksi JMP pada umumnya terdiri dari tiga :


SJMP (Short jump)
LJPM (Long Jump)
AJMP (Absolute Jump)
Yang membedakan antara ketiga nya adalah dalam

format alamat tujuannya dan urutan intruksinya.

SJMP
Panjang intruksinya 2 byte. Jarak lompatan terbatas pada

jangkauan -128 hingga +127 byte


LJM
Panjang intruksinya 3 byte. Jarak lompatan terbatas pada

jangkauan 64 K P

AJMP
Panjang intruksinya 2 byte. Alamat tujuan berada pada

blok 2 K.
Penulisan alamat tujuan lompat bisa langsung dituliskan
alamatnya atau menuliskan label.
Dengan menuliskan alamat secara langsung, jika alamat
awal berubah, maka alamat tujuan juga harus
diperbaharui.
Dengan menggunakan label, hal itu tidak perlu dilakukan

Contoh
Org 0000H
Start
Mov A, P1
Mov P0, A
Sjmp Start

Pada contoh diatas, jika alamat awal berubah menjadi

0100H Program akan tetap akan bekerja dengan baik


karena label Start akan menjadi 0100H.

Start
Sjmp Start
Jika program dijalankan maka akan terjadi yang tak

berhenti.
Program diatas bisa digantikan dengan mengganti alamat
tujuan lompatan dengan tanda $
Start Sjmp $

CALL
Org 0000H
Start
clr A
Mov A, @A+DPTR
Mov P0,A ACALL DELAY

DELAY: MOV R0,#2H
.
.
RET

LCALL
Menggunakan format 16 bit, dan subrutinnya bisa ditulis

dalam ruang memori 64 K

ACALL
Menggunakan format 11 bit, dan subrutinnya bisa ditulis

dalam ruang memori 2K

RET / RETI
Sebuah subrutin harus diakhiri dengan intruksi RET, yang

menyatakan perintah untuk kembali (return) ke intruksi


berikutnya setelah intruksi CALL yang bersangkutan
selesai dijalankan dan menjalankan intruksi tersebut.
Intruksi RETI berfungsi untuk memberitahukan kepada
sistem kontrol intrupsi bahwa intrupsi yang sedang
dijalankan telah selesai.

Register Fungsi Khusus (SFR)


SFR pada dasarnya adalah memori internal yang memiliki

fungsi tertentu.
Melalui SFR inilah fasilitas-fasilitas internal mikrokontroler
bisa diakses dan dimanfaatkan dengan cara membaca
atau menulis SFR tersebut.
SFR menepati alamat memori 80H FFH.

Secara garis besar SFR terdiri atas register-regitser untuk

mengatur kerja port (P0-P3), mengatur mode kerja timer,


mengatur kerja port serial , menatur kerja interupsi dan
mengatur kerja prioritas kerja intrupsi, data pointer untuk
mode pengalamayan 16 bit, stack pointer, menyimpan
informasi status program, akumulator dan register B serta
registre untuk fungsi penghematan daya.

Akumulator dan Register B


ACC atau akumulator atau register A adalah register

multiguna yang dipakai pada operasi


aritmetika(pembagian,penjumlahan atapun perkalian),
pemindahan data baik mode baik pengalamatan langsung
atau indeks, dan juga operasi logika(AND, OR dan
EXOR).
Selain itu juga digunakan untuk menguji apakah suatu
data itu nol atau tidaks, pembacaan tabel, dan
pembacaan RAM tambahan
Register A menempati alamat E0H. Register A

Akumulator dan Register B


Register B menempati alamat F0H. Register ini

digunakan bersama-sama dengan register A pada operasi


aritmatika (perkalian dan pembagian) atau digunakan
sebagai register multiguna.

PSW (Program Status Word)


Adalah register yang menyimpan informasi status

program, bit bawaan (carry) pada operasi aritmatika, bit


paritas, bit overflow, bit-bitpemilih bankregister, dan bit
multiguna.
P0 P3 (Register Port)
Adalah SFR yang mengatur kerja port-port mikrokontroler
(8051). Pada mode akses bit, register ini bisa di akses
dengan identitas PX.n. X memperlihatkan nomor port
(dari 0-3), dan n memperlihatkan urutan bit yang diakses
(bit 0 - 7)

7 Segmen LED
ANG
KA
0
1
2
3
4
5
6
7
8
9

O
O
O
O
O

O
O

POSISI LED
F E D C B
O O O O O
O O
O O O
O O O
O O O
O O O
O O O O
X O O
O O O O O
O O O O

A
O

O
O

O
O
O
O
O

HURU
F
A
b
C
d
E
F

G
O
O

O
O
O

F
O
O
O

O
O

POSISI LED
E D C
O O
O O O
O O
O O O
O O
O

B
O

A
O

O
O

saat ingin menampilkan dalam format


heksa maka menggunakan jenis CMOS
5068

Contoh-contoh program :
Aplikasi pada lampu LED
1. Program Lampu Flip Flop pada Port 0

Program Lampu Flip Flop pada Port 0

3. Program Lampu berjalan pada Port 0


; Program Lampu berjalan pada Port 0

Program Lampu Flip Flop pada Port 0

Aplikasi pada 7 Segment


$mod51
org 0h
main:
mov p2,#11000000b ;0
clr p1.4
call delay
mov p2,#11110011b ;1
call delay
mov p2,#10001001b ;2
call delay
mov p2,#10100001b ;3
call delay
mov p2,#10110010b ;4
call delay
mov p2,#10100100b ;5
call delay
mov p2,#10000100b ;6
call delay
mov p2,#11110001b ;7
call delay
mov p2,#10000000b ;8
call delay
mov p2,#10100000b ;9
call delay
jmp main

delay:
mov r7,#100
delay_loop1:
mov r6,#100
delay_loop2:
mov r5,#100
djnz r5,$
djnz r6,delay_loop2
djnz r7,delay_loop1
ret
end

BufferData data 09h


LED_Data
data p0
LED_Digit
data p1
Pulsa_LE
bit
p1.7
LED_Display:
mov r0, #BufferData
mov r7, #8
clr a
LED_Pindah:
mov LED_Digit, a
mov LED_Data, @r0
inc r0
inc a
setb Pulsa_LE
djnz r7, LED_Pindah
clr Pulsa_LE

sebuah mikrokontroler harus meluangkan waktu untuk memproses instruksi


menampilkan ke-8 LED 7 segmen selama 60 siklus mesin atau sekitar 65
us dengan kristal 11,0592 MHz.

Penampil LED 7 segmen dengan teknik


scanning diperlihatkan di bawah ini:

BufferData
LED_Data
LED_Digit

data
data
data

09h
p0
p1

LED_Display:
mov r0, #BufferData
mov r7, #8
mov a, #255
clr c
LED_Scan:
mov LED_Data, @r0
inc r0
rlc a
mov LED_Digit, a
acall Delay2u5s
mov LED_Digit, #255
djnz r7, LED_Scan
ajmp LED_Display
Delay2u5s:
mov r5, #5
Del: mov r6, #228
djnz r6, $
djnz r5, Del
ret