Anda di halaman 1dari 13

Dasar  

Mikrokontroler

Jika kita ingin membuat projek atau tugas akhir yang


menggunakan mikroprosesor 8086/8088 tampaknya saat ini cukup
sulit karena dibutuhkan biaya yang besar serta diperlukannnya
EPROM Programmer. Cara lain yang lebih gampang dan murah ialah
kita mengembangkan aplikasi menggunakan kit mikrokontroler ( main
board) yang sudah ada di pasaran. Kit tersebut umumnya terdiri dari
mikrokontroler, memori serta interface untuk koneksi ke lcd, ke PPI
atau ke port serial komputer. Kita tinggal membuat program serta
menyambungkan dengan board atau komponen tambahan saja.
Membangun aplikasi Elektronika berbasis embedded system
merupakan topik yang sangat hangat saat ini. Apalagi mikrokontroler
tertentu sudah mendukung aplikasi yang terhubung ke jaringan
computer (network microcontroller).

Ada perbedaan yang cukup penting antara Mikroprosesor dan


Mikrokontroler. Jika Mikroprosesor merupakan CPU (Central
Processing Unit) tanpa memori dan I/O pendukung dari sebuah
komputer, maka Mikrokontroler umumnya terdiri dari CPU, Memori ,
I/O tertentu dan unit pendukung, misalnya Analog to Digital Converter
(ADC) yang sudah terintegrasi di dalam mikrokontroler tersebut.
Kelebihan utama dari Mikrokontroler ialah telah tersedianya RAM dan
peralatan I/O Pendukung sehingga ukuran board mikrokontroler
menjadi sangat ringkas. Terdapat berbagai jenis mikrokontroler dari
berbagai vendor yang digunakan secara luas? di dunia. Diantaranya
yang terkenal ialah dari Intel, Maxim, Motorolla , dan ATMEL.
Beberapa seri mikrokontroler yang digunakan secara luas ialah 8031,
68HC11, 6502 , 2051 dan 89S51. Mikrokontroler yang mendukung
jaringan komputer seperti DS80C400 tampaknya akan menjadi
primadona pada tahun-tahun mendatang . Untuk mencoba kit
mikrokontroler, anda dapat membeli kit kami bernama SMART52
berbasiskan 89S52 , SmartAVR atau kit produksi lainnya, dapat anda
pesan di situs penulis di www.toko-elektronika.com

Pengenalan Mikrokontroler AT89C51


 

Mikrokontroler AT89C51 ialah mikrokomputer CMOS 8 bit


dengan 4KB 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 (seperti mikrokontroler 8031 yang terkenal dan banyak
digunakan beberapa waktu lalu) baik pin kaki IC maupun set
instruksinya serta harganya yang cukup murah. Oleh karena itu,
sangatlah tepat jika kita mempelajari mikrokontroler jenis ini. Anda
juga diharapkan mempelajari versi terbaru yaitu berseri AT89S51.
Informasi lebih detail mengenai interfacing dan penerapan aplikasi
pada mikrokontroler 89C51 dapat Anda temukan pada buku Saya
sebelumnya.

AT89C51 mempunyai memori yang 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.

FF

80

7F

00

 
 

Special Function
Register
RAM Internal
 

 
Gambar 1 Alamat RAM Internal

 
Sebagai perbandingan kapasitas memori, Tabel 16.1
menampilkan kapasitas memori dari mikrokontroler seri AT89X.

Tabel 1 Kapasitas Memory Mikrokontroler 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

           

IC AT89C51 mempunyai 40 pin yang sesuai dengan mikrokontroler


8031, dengan susunan kaki seperti Gambar 2 .

Gambar 2 Nama Pin-pin AT89C51

 
Jika kita lihat diagram blok mikrokontroler ini, terlihat jelas
kesempurnaan dari fasilitas yang diberikannya. Gambar 3 merupakan
diagram blok IC tersebut :

Gambar 3 Diagram blok AT89C51

Pada Gambar 3 terlihat bahwa terdapat 4 port untuk input output data, serta
tersedia pula akumulator, register, RAM, stack pointer , Arithmetic Logic
Unit (ALU), pengunci (latch) dan rangkaian osilasi yang membuat 89C51
dapat beroperasi hanya dengan 1 keping IC.

Bahasa Assembly di Mikrokontroler


 
Secara fisik, kerja dari sebuah mikrokontroler dapat dijelaskan
sebagai siklus pembacaan instruksi yang tersimpan di dalam memori.
Mikrokontroler menentukan alamat? dari memori program yang akan
dibaca, dan melakukan proses baca data di memori. Data yang
dibaca diinterprestasikan sebagai instruksi.? Alamat instruksi
disimpan oleh mikrokontroler di register, yang dikenal sebagai
program counter. Instruksi ini misalnya program aritmatika yang
melibatkan 2 register.

AT89C51 memiliki sekumpulan instruksi yang sangat lengkap.


Jika anda telah mempelajari bahasa assembly mikroprosesor
keluarga intel (misal 8086), ada sedikit perbedaan dengan bahasa
assembly di mikrokontroler. Instruksi MOV untuk byte dan bit
dikelompokkan sesuai dengan mode pengalamatan (addressing
modes). Mode pengalamatan menjelaskan bagaimana operand
dioperasikan.Berikut penjelasan dari berbagai mode pengalamatan.
Bentuk program assembly yang umum ialah sebagai berikut :

Label    mnemonic   operand1 operand2     komentar

(isi memori)??? (opcode)

4000 7430       MOV               A, #30H;kirim 30H ke akumulator A

Isi memori ialah bilangan heksadesimal yang dikenal oleh


mikrokontroler kita, yang merupakan representasi dari bahasa
assembly yang telah kita buat. Mnemonic atau opcode ialah kode
yang akan melakukan aksi terhadap operand . Operand ialah data
yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2
atau lebih operand, kadang juga tidak perlu operand. Sedangkan
komentar dapat kita berikan dengan menggunakan tanda titik koma
(;). Berikut contoh jumlah operand yang berbeda beda dalam suatu
assembly.

 
CJNE R5,#22H, aksi ?;dibutuhkan 3 buah operand

MOVX @DPTR, A     ;dibutuhkan 2 buah operand

RL A                           ;1 buah operand

NOP                           ; tidak memerlukan operand

Program yang telah selesai kita buat dapat disimpan dengan


ekstension .asm. Lalu kita buat program objek menggunakan program
ASM51 yang dapat diperoleh secara gratis di internet. Berikut contoh
mengkompile file tesppi.asm yang tersedia di dalam paket DT-51
menggunakan ASM51, yang akan menghasilkan file tesppi.hex dan
tesppi.lst. File .hex inilah yang kita masukkan ke Flash PEROM
mikrokontroler AT89C51 atau ke eksternal memori seperti AT28C64B
menggunakan program downloader.

Mendownload Program ke Mikrokontroler

Jika telah selesai menulis program; simpan dgn


ekstension.asm, lalu kompile degan ASM51( c:\asm51
lampu.asm, nanti jdnya lampu.hex, anda dapat mendowload file
hex anda ke Minimum System mikrokontroler anda
menggunakan file dt51l.exe (berbasiskan DOS) atau
dt51lwin.exe (berbasiskan windows )atau ATMEL ISP
PROGRAMMER sebagai berikut :

Gambar 4 DT-51 Windows Downloader v1.0


 

Mode Pengalamatan

Pengalamatan Langung

Pengalamatan langsung dilakukan dengan memberikan nilai


ke suatu register secara langsung, Untuk melaksanakan hal
tesersebut digunakan tanda #. Operand yang digunakan pada
pengalamatan langsung /immediate data dapat berupa bilangan
bertanda mulai 256 hingga +256.

Contoh :

MOV A,#25H              ;Isi akumulator dengan bilangan 25H

MOV DPTR, #20H    :isi register DPTR dengan bilangan 20H

MOV R1,10H :           ; isi register R1 dengan 10H

MOV A,#-1                 ; sama dengan MOV A,#0FFH

                                   ; karena 00H 1 menjadi FFH

Pengalamatan Tak Langung

Pada pengalamatan ini, operand menunjuk ke sebuah register


yang berisi lokasi alamat memori yang akan digunakan dalam operasi.
Untuk melaksanakan pengalamatan tak langsung digunakan symbol
@. Pengalamatan jenis ini biasa digunakan untuk melakukan
penulisan, pemindahan atau pembacaan beberapa data dalam lokasi
memori. AT89C51 mempunyai sebuah register 16 bit (DPTR) yang
dapat digunakan untuk melakukan pengalamatan tidak langsung.

Contoh :

ADD, A,R1      ;Tambahkan isi RAM yang lokasinya ditunjukkan oleh register R1

; ke akumulator
DEC @R1      ;Kurangi satu isi RAM yang alamatnya ditunjukkan oleh R1

MOVX, ADPTR, A     :Pindahkan isi dari akumulator ke memori luar yang

; lokasinya ditunjukkan oleh data pointer (DPTR)

Pengalamatan Data

Pengalamatan data terjadi pada sebuah perintah ketika nilai


operasi merupakan alamat dari data yang akan diisi atau yang
akan dipindahkan.

Contoh :

MOV P1,A                  ;isi P1 dari Akumulator

MOV P2,FFH                         ;isi P2 dengan nilai FFH

Pengalamatan Kode

Pengalamatan kode terjadi ketika operand merupakan alamat


dari instruksi JUMP dan CALL. Berikut contoh ACALL yang
memanggil label Tunda, sehingga akan melompat ke lokasi memori
bernama Tunda.

Contoh :

ACALL Tunda

TUNDA:

                MOV A,#FEH

LOOP:           

            DJNZ A, LOOP

            RET
Pengalamatan Bit

Pengalamatan bit ialah penunjukkan alamat lokasi bit baik


dalam RAM internal atau perangkat keras menggunakan symbol titik
(.).

Contoh :

SETB P1.7     ; Set bit port 1.7 aktif

SETB TR1     : Set TR1 (Timer 1 aktif)

SETB RXD    ; memberikan logika 1 pada kaki RXD yang


berada di port 3.0

Operator

Operator digunakan untuk melakukan aksi aritmatika, logika


pergeseran bit dan lain-lainnya pada operand .Beberapa operator
yang tersedia diantaranya :
 

      Operator Aritmatika

      * untuk perkalian

      / untuk pembagian

      + untuk penambahan

      - untuk pengurangan

Contoh : MOV A, #25H+3H ; sama dengan MOV A,#28H

      Operator Logika

      OR untuk poerasi OR

      AND untuk operasi AND

      XOR untuk operasi XOR

      EXOR untuk operasi EXOR

      NOT untuk operasi invert


 

Contoh :

MOV A, #20H OR 40H          ;sama dengan MOV A,#60H

MOV A,#10H AND 31H         ;sama dengan MOV A, 10H

      Operasi Khusus

      SHR 16 bit geser ke kanan

      SHL 16 bit geser ke kiri

      HIGH pilih bagian tas bit

      LOW pilih bagian bawah bit

      EQ = sama dengan

      NET <> tidak sama dengan

      Lt < lebih kecil

      LE <= lebih kecil atau sama dengan

      GT > lebih besar

      GE >= lebih besar atau sama dengan

Dimana perlu anda perhatikan prioritas dari operator sebagai berikut :

()

HIGH , LOW

Z*/, MOD, SHL , SHR

+, -

EQ, NE, LT, LE, GT, GE,=,<>,<,<=,>,>=

NOT

AND

OR, XOR
 

Pengarah Pilihan Segmen (Segment Selection Directives)

     Ada 5 buah pengarah pilihan segmen yaitu CSEG, BSEG , DSEG ISEG
dan XSEG yang menunjukkan salah satu dari 5 buah area memori .
Penjelasan dari masing-masing segmen sebagai berikut :

   CSEG                           : untuk memilih lokasi memori program


   BSEG                           : untuk meilih lokasi memori yang dapat
dialamati
                                   secara pengalamatan bit
   DSEG                           untuk memilih lokasi memori RAM Internal
   ISEG                            untuk memilih lokasi memori RAM Internal
yang
                                   dialamati secara tak langsung
   XSEG                           untuk memilih lokasi memori eksternal
 

Mencoba Membuat Program


            Anda dapat mengetik program di mana saja seperti notepad, wordpad
dan ALDS. ALDS ialah software yang dapat kita gunakan membuat program
dan melacak kesalahan. Program pertama kita ialah Program yang menerima
input dari port dan lalu menampilkan outputnya berlogika 1 atau 0 di port 1.
Karena DT-51 menggunakan memori eksternal, maka dimulai dari alamat
4000H. Kode selanjutnya ialah membuat sebuah label dengan nama mulai,
isi dari label tersebut ialah menerima data dari P2 lalu dikirim ke akumulator
A menggunakan perintah MOV. Lalu datai di Akumulator di pindahkan ke
P1 menggunakan fungsi MOV juga. Untuk terjadi perulangan terus menerus,
kita menggunakan fungsi JMP untuk loncat ke label mulai.Program diakhiri
menggunakan fungsi END. Untuk merancang program, sebaiknya dibua
terlebih dahulu flowchart? yang kemudian dapat diterjemahkan ke dalam
pseudocode.

Listing Program 1. Program menerima data dari port 2 lalu dikirim ke port 1
(tesio.asm)

$mod51

ORG 4000H                      ; menggunakan alamat awal EEPROM DT51

mulai:                                ; Label mulai

MOV A,P2                       ; Kirim Data pada Port 2 Ke Accumulator

     MOV P1,A                   ; Kirim Data pada Accumulator ke Port 1


JMP mulai                         ; Loncat Ke Label Mulai

END

Pastikan file mod51 berada di dalam folder yang sama dan


kode tidak case sensitive. Anda dapat menggunakan saklar yang
diberi tegangan 5 V dan ground untuk menghasilkan pulsa 1 atau 0
yang dihubungkan ke input port 2. Lalu port 1 dapat menggunakan
LED. Atau anda juga dapat menggunakan Trainer Board dari
Innovative Electronics sehingga tidak membuang waktu untuk
merangkai rangkaian tersebut. Kompile program ini lalu masukkan ke
kit DT-51 menggunakan dt51l.exe dalam mode dos atau dt51lwin.exe
dalam mode windows.

Program berikut akan mengetes port 1 di DT-51 Minimum


System. Output di port 1 akan berlogika 1 dan 0 secara bergantian.
Untuk melihat hasil output, kita menggunakan delay agar perubahan
logika di port tersebut dapat terlihat.

Listing Program 2 . Tes port 1 DT-51(tesport.asm)

$MOD51

$TITLE(TESPORT)

            CSEG

            ORG   4000H

            AJMP START

ORG 4100H

Delay: MOV    R2,#0FH

Del1:   MOV    R1,#0FFH

            DJNZ   R1,$

            DJNZ   R2,Del1

            RET

START: MOV  SP,#30H


XX:      MOV    P1,#0FFH ;semua pin di port 1 high

            ACALL Delay

            MOV    P1,#00H ; set low

            ACALL Delay

            AJMP   XX

END

Program diatas akan mengisi SP dengan 30H dan membuat P1 kelap - kelip .
Untuk memanggil label Delay digunakan fungsi ACALL .

     Hanya dengan menggunakan 1 buah Mikrontroler, kita? dapat


menghubungkannya dengan peralatan lainnya seperti sensor, lampu indicator,
relay dan LCD. Jika port yang tesedia tidak memadai, biasanya kita
menggunakan IC tambahan seperti PPI 8255 sebagai interface dengan
rangkaian digital lainnya. Gambar 16.5 menampilkan model interfacing
mikrokontroler yang umum, dimana 1 buah mikrokontroler mampu
dihubungkan dengan berbagai devais.

Anda mungkin juga menyukai