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.
|
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.
Tidak ada komentar:
Posting Komentar