Gambar 1. Konfigurasi Pin Mikrokontroler AT89S52
Berikut adalah
penjelasan mengenai fungsi dari tiap-tiap pin (kaki) yang ada pada
mikrokontroller AT89S52.
a. Port 0
Merupakan dual-purpose port
(port yang memiliki dua kegunaan). Pada disain yang minimum (sederhana), port 0
digunakan sebagai port Input/Output (I/O).. Port 0 terdapat
pada pin 32-39.
b. Port 1
Merupakan port yang
hanya berfungsi sebagai port I/O (Input/Output). Port 1 terdapat pada
pin 1-8.
c. Port 2
Merupakan dual-purpose port.
Pada desain minimum digunakan sebagai port I/O (Input/Output). Sedangkan
pada desain lebih lanjut digunakan sebagai high byte dari address (alamat).
Port 2 terdapat pada pin 21-28.
d. Port 3
Merupakan dual-purpose
port. Selain sebagai port I/O (Input/Output), port 3 juga mempunyai
fungsi khusus. Fungsi khusus tersebut diperlihatkan
Tabel 2.1 Data Port 3 pin 10 -17
a. PSEN (Program
Store Enable)
PSEN adalah sinyal
kontrol yang mengizinkan untuk mengakses program (code) memori
eksternal. Pin ini dihubungkan ke pin OE (Output Enable) dari EPROM.
Sinyal PSEN akan “0” (LOW) pada tahap fetch (penjemputan)
instruksi. PSEN akan selalu bernilai “1” (HIGH) pada pembacaan program
memori internal. PSEN terdapat pada pin 29.
a. ALE (Address
Latch Enable)
ALE digunakan untuk men-demultiplex
address (alamat) dan data bus. ketika menggunakan program memori
eksternal, port 0 akan berfungsi sebagaiaddress (alamat) dan data
bus. Pada setengah paruh pertama memori cycle ALE akan bernilai “1” (HIGH)
sehingga mengizinkan penulisan address (alamat) pada register
eksternal. Dan pada setengah paruh berikutnya akan bernilai “1” (HIGH)
sehingga port 0 dapat digunakan sebagai data bus. ALE terdapat pada pin 30.
b. EA (External
Access)
Jika EA diberi input “1”
(HIGH), maka mikrokontroller menjalankan program memori internal saja.
Jika EA diberi input “0” (LOW), maka AT89S52 menjalankan program memori
eksternal (PSEN akan bernilai “0”). EA terdapat pada pin 31.
c. RST (Reset)
RST terdapat pada pin 9.
Jika pada pin ini diberi input “1” (HIGH) selama minimal 2 machine
cycle, maka sistem akan di-reset dan register internal AT89S52 akan berisi
nilai default tertentu. Proses reset merupakan
proses untuk mengembalikan sistem kekondisi semula. Reset tidak mempengaruhi
internal program memory. Reset terjadi jika pin RST bernilai high selama
minimal dua siklus lalu kembali bernilai low. Power on reset merupakan proses
reset yang berlangsung secara otomatis pada saat sistem pertama kali diberi
suplai. Proses ini mempengaruhi semua register dan internal data memory. Untuk
mendapatkan proses ini, maka pin RST harus diberi tambahan rangkaian seperti
pada gambar berikut.
Gambar 2. Rangkaian
reset AT89S52
2.3 Mode Pengalamatan
2.3.1 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
2.3.2 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. AT89S51 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 register R1
MOVX, ADPTR, A :Pindahkan isi
dari akumulator ke memori luar yang lokasinya
; ditunjukkan oleh data
pointer (DPTR)
2.3.3 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 A, 00001001b ; isi A dengan data tsb
MOV
P2,FFH ;isi P2 dengan nilai FFH
2.3.4 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
2.3.5 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
2.4 Arsitektur dan Blok Diagram Mikrokontroler
AT89C51/52
Mikrokontroler
AT89S52 dibangun berdasarkan arsitektur seperti ditunjukkan gambar dibawah ini.
Seluruh bagian yang digambar pada gambar tersebut saling berhubungan melalui
internal bus 8 bit menelusuri bagian serpih. Bus tersebut kemudian dihubungkan
ke luar melalui input output port apabila memori atau expansi
diperlukan.
Unit pengolah pusat
(CPU) terdiri atas dua bagian, yaitu unit pengendali control unit (CU), serta
unit aritmatika dan logika (ALU). Fungsi utama unit pengendali ini adalah
mengambil, mengkode, dan melaksanakan urutan intruksi sebuah
program yang tersimpan dalam memori, unit pengendali juga berfungsi untuk
mengatur urutan operasi seluruh sistem. Unit pengendali atau CPU juga
menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk
menyerempakkan operasi, juga aliran intruksi program. Aliran informasi
pada bus-bus data dan bus alamat juga diatur oleh unit ini.
Gambar 3. Blok digram
mikrokontroler AT89S52
2.3.1 Memori Program
Memori program merupakan
suatu ruang memori yang digunakan untuk menyimpan kode
program dan konstanta yang sifatnya tetap. Memori program hanya bisa dibaca
saja (Read Only Memori), dalam artian ketika sedang melakukan eksekusi
program memori hanya bersifat di baca saja namun tidak dapat diubah
isinya, sebagian memori program terdapat didalam chip mikrokontroler (On-chip)
dan sebagian lagi berada diluar (off-chip). Mikrokontroler ATMEL
AT89S52 mempunyai kapasitas memori program on-chip sebesar 8 kB.
2.3.2 Memori Data
RAM merupakan memori
data internal (on-chip). Untuk AT89S52 mempunyai
memori sebesar 256 byte. Pada segment data ini dibagi
menjadi tiga bagian, dimulai dari alamat 0×00
sampai dengan 0xFh dikenal sebagai register R0 sampai
dengan R7 yang diorganisasikan menjadi 4 bank.
Pemilihan bank yang dilakukan dengan
memberikan kombinasi logika pada register Program
Status Word(PSW). Bagian berikutnya adalah mulai alamat
0×20 sampai dengan 0x2f sebanyak 128 bit merupakan
lokasi memori yang dapat dimanipulasi perbit (bit addressable)
juga dikenal dengan segment bit (BDATA). Bagian berikutnya
adalah general purpose RAM mulai alamat 0×30 sampai
dengan 0x7fh.
2.3.3 Interuksi
Terdapat beberapa
kelompok fungsi pada instruksi keluarga MCS – 52, yaitu:
v
Instruksi Aritmatika
Kelompok intruksi ini
melakukan operasi aritmatika seperti penjumlahan, pembagian, pengurangan.
Misalnya adalah: add,
mul, subb, inc dan dec
Contohnya
: mov a,#10h
Mov b,#05h
Mul ab
Mov a,#10h artinya salin data 10h ke a
Mov b,#05h artinya salin data 05h ke b
Mul ab artinya
kalikan nilai akumulator dengan nilai register b
v
Instruksi Logika
Intruksi ini melakukan
operasi logika seperti and, or, dan exor, clear
Misalnya adalah :anl,
orl, xrl, clr
· OR untuk poerasi OR
· AND untuk operasi AND
· XOR untuk operasi XOR
· EXOR untuk operasi EXOR
· NOT untuk operasi invert
Contohnya :
1.
MOV A, #20H OR 40H ;sama
dengan MOV A,#60H
MOV A,#10H AND 31H ;sama dengan MOV A, 10H
2.
ANL A,#00001111b ; meng- AND- kan accumulator dengan 00001111b
v
Instruksi Transfer Data
Kelompok instruksi ini
digunakan untuk memindahkan data antara :
1. Register – register
2. Memori – memori
3. Register – memori
4. Interface – register
5. Interface – memori
Contoh:
MOV A, R1
:
memindahkan isi register R1 ke accumulator
MOV A, @R2 :
memindahkan isi memori yang alamatnya ditunjukkan oleh register R2 ke
accumulator.
2.5 Implementasi Program LED
Pada percobaan ini, Untuk menghubungkan pin CONTROL dari
DT51 ke pin CONTROL Trainer board kabel 1 dan 2 harus dibalik, hal
ini dikarenakan posisi VCC dan GND pada DT-51 terbalik, kabel ini disebut
sebagai kabel X.
Port 1 sebagai input
Langkah-langkahnya:
- Hubungkan Port 1 DT-51
dengan “PORT INPUT” Dt-51 trainer Board
- Hubungkan Port A DT-51
dengan “PORT OUTPUT” DT-51 Trainer Board
- Hubungkan “CONTROL” DT-51
dengan “CONTROL” DT-51 Trainer Board menggunakan kabel tipe X
- Buat program berikut:
$mod51
CSEG
ORG 4000H
LJMP START
ORG 4100H
START:
MOV SP, 30H
INIT: MOV DPTR,
#2003H
MOV A,#80H
MOVX @DPTR,
A
LABEL1: JB P1.4,
DISPLAY
DISPLAY2: MOV DPTR,#2000H
MOV A,
#00H
MOV @DPTR,
A
SJMP LABEL1
DISPLAY: MOV
DPTR, #2000H
MOV
A, #10H
MOVX
@DPTR, A
SJMP
LABEL1
END
Jika program dijalankan, jika toggle switch Bit 4
berlogika 0 maka semua LED akan padam (masuk ke label DISPLAY2), jika toggle
switch Bit 4 berlogika 1 maka hanya LED Bit 4 yang menyala(masuk ke label
DISPLAY). Sebagai catatan, penggunaan P1.4 tidak mutlak, nilai 00H dan 10H
dapat diganti dengan nilai lain untuk output ke LED.
Penggunaan Interupsi
Langkah-langkah :
·
Hubungkan Port 1 DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
·
Hubungkan “CONTROL” DT-51 dengan “CONTROL“ DT-51 Trainer Board
·
Hubungkan “IS1” dengan “INT0” pada DT-51 Trainer Board, karena kita ingin
menggunakan interrupt eksternal (pin INT0 dan INT1)
·
Buat program berikut :
$mod51
CSEG
ORG 4000H
LJMP START
ORG 4003H
RL
A
MOV P1,
A
MOV R7,
#04H
LOOPA: MOV R6,#0FFH
LOOPB: MOV R5,
#0FFH
DJNZ R5,
$
DJNZ R6,
LOOPB
DJNZ R7,
LOOPA
RETI
ORG
4200H
;inisialisasi
START: MOV
SP, #30H
MOV
TCON, #01H
MOV
A, #01H
MOV
P1, #01H
MOV
IE, #81H
SJMP
$
END
Program diatas akan menampilkan nyala LED dari Bit 0 dan bergeser ke kiri
setiap ada penekanan keypad “IS1”. Untuk mengunakan INT0 dengan falling
edge trigger maka INT0 (TCON.0) berlogika 1, sehingga TCON bernilai
00000001b(01H). Untuk mengaktifkan interrupt, maka EX0 (IE.0) dan EA(IE.7)
berlogika 1 sehingga IE bernilai 10000001b (81H), terlihat juga bahwa pada saat
interupsi program melompat ke alamat vector 0003H yang oleh DT-51 langsung
dipindah ke alamat 4003H. Fungsi DJNZ digunakan untuk mengurangi satu dan
lompat jika hasilnya bukan nol.
Penggunaan Timer/Counter
Untuk menggunakan Timer/Counter 0 sebagai timer mode 1, maka GATE,C/T dan
M1 untuk Timer 0 pada TMOD berlogika 0 dan M0 berlogika 1 sehingga TMOD
bernilai 01H. Sedangkan untuk menjalankan Timer 0, maka TR0 (TCON.4) berlogika
1 sehingga TCON bernilai 10H. Pada contoh dibawah ini Timer 0 diberi nilai awal
2CH untuk TH0 dan 00H untuk TLO sehingga Timer 0 akan selalu dimulai dari nilai
2C00H. Karena frekwensi timer tinggi, maka digunakan faktor
pengali 10H yang berada pada R0.
Langkah-langkah :
·
Hubungkan Port 1 DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
·
Hubungkan “CONTROL” DT-51 dengan “CONTROL“ DT-51 Trainer Board
·
Buat program berikut :
$mod51
CSEG
ORG 4000H
LJMP START
ORG 400BH
COUNT: INC R0
CJNE R0,#10H,OUT1
SETB P1.5
LOOP: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,LOOP
CLR P1.5
MOV R0,#00H
OUT1: MOV TH0,#2CH
MOV TL0,#00H
RET1
;inisialisasi
ORG 4200H
START: MOV SP,#30H
MOV R0,#00H
MOV TMOD,#01H
MOV TH0,#2CH
MOV TL0,#00H
MOV TCON,#10H
MOV P1,#00H
MOV IE,#82H
SJMP $
END
Jika program dijalankan, akan menampilkan nyala LED Bit 5
berkedip dimana baru akan dinyalakan atau dipadamkan setelah interupsi oleh
Timer 0 sebanyak 16 x. Perhatikan pada saat interupsi, program akan melompat ke
alamat vector 000BH tetapi oleh DT51 akan langsung dipindah ke alamat 400BH.
================================================
BAB III
PENUTUP
Kesimpulan
1.
Penggerak pada
mikrokontoler menggunakan bahasa pemograman assembly dengan berpatokan pada
kaidah digital dasar sehingga pengoperasian sistem menjadi sangat mudah
dikerjakan sesuai dengan logika sistem (bahasa assembly ini mudah dimengerti
karena menggunakan bahasa assembly aplikasi dimana parameter input dan output
langsung bisa diakses tanpa menggunakan banyak perintah). Desain bahasa assembly
ini tidak menggunakan begitu banyak syarat penulisan bahasa pemrograman seperti
huruf besar dan huruf kecil untuk bahasa assembly tetap diwajarkan.
2.
Mikrokontroler tersusun
dalam satu chip dimana prosesor, memori, dan I/O terintegrasi menjadi satu kesatuan
kontrol sistem sehingga mikrokontroler dapat dikatakan sebagai komputer mini
yang dapat bekerja secara inovatif sesuai dengan kebutuhan sistem.
3.
Sistem running bersifat
berdiri sendiri tanpa tergantung dengan komputer sedangkan parameter komputer
hanya digunakan untuk download perintah instruksi atau program.
4.
Pada mikrokontroler
tersedia fasilitas tambahan untuk pengembangan memori dan I/O yang disesuaikan
dengan kebutuhan sistem.
================================================
DAFTAR PUSTAKA
http://willyriyadi.blogspot.com/2011/10/definisi-mikrokontroler.html
http://siivadlie.blogspot.com/2012/11/pengertian-mikrokontroler-kelebihan.html
http://sackjez.blogspot.com/2013/01/mikrokontrolerat89s52-mikrokontroler.html
http://onelka.wordpress.com/mikrokontroler-at89s52/
=========================================================