Anda di halaman 1dari 12

MODUL I

SIMULASI MIKROKONTROLLER 89S51

I. Tujuan
1. Memahami penggunaan mikrokontroller 89S51
2. Mampu men-simulasik-kan suatu aplikasi dengan menggunakan mikrokontroller
89S51
3. Mampu melakukan troubleshoot pada aplikasi-aplikasi sederhana yang
menggunakan simulasi mikrokontroller 89S51.

II. Teori
1. Mikrokontroller 89S51
Mikrokontroller 8051 merupakan seri-seri awal dari lahirnya mikrokontroller yang
cukup mudah digunakan dalam berbagai keperluan. Intel sebagai vendor pertama yang
mengembangkan pada tahun 1980 lalu diikuti berbagai vendor lainnya seperti Atmel,
Dallas Semicondutor, Phillips, Winbond dan lain-lain [1]. Tidak seperti mikroprosesor
yang memerlukan komponen tambahan untuk bisa digunakan, mikrokontroller
merupakan miniatur dari minimal sistem mikroprosesor. Seri pengembangan oleh
vendor lain biasanya menggunakan seri 89C51 ketika itu, seperti At89C51 dari Atmel.
Namun kendala di seri At89C51 memerlukan board khusus dalam melakukan proses
“download” program yang akan dijalankan yang terpisah dari board aplikasinya karena
membutuhkan tegangan 12 Vpp yang akan merusak komponen lain yang berada di
wilayah aplikasi yang hanya butuh sekitar 5 V [2]. Sedangkan seri At89S51 ketika
download program tetap menggunakan tegangan yang sama dengan ketika aplikasi
yaitu 5 V sehingga chip At89S51 dapat tetap dipasang di board aplikasi tanpa harus
melepas dan memasang kembali setelah di-download programnya. Selain itu At89S51
memiliki Watchdoq Timer yang mencegah terjadi nya hang-up seperti halnya komputer
pada umumnya, namun kalau komputer kita dapat melihat kondisi hang-up tersebut
lewat monitor sedangkan mikrokontroller cenderung tidak punya tampilan sehingga
terjadinya hang-up tersebut tentu sulit dideteksi. Selain itu At89S51 memiliki dua data
pointer (DPTR) sehingga dalam mengakses data eksternal akan lebih cepat dan flexibel
[3].
Selebihnya unit-unit di At89C51 tidak jauh berbeda dengan At89S51, antara lain:
 Flash PEROM 4KB utk 89C51 dan 2KB utk 89C2051. Flash dpt ditulis/hapus
sampai 1000 kali
 Tegangan operasi dinamis 2,7 – 6 V
 Clock 0 – 24 MHz
 Proteksi program
 Internal RAM 128 Byte
 I/O sebanyak 32 line
 2 timer/counter 16 bit
 Mampu menangani 6 sbr interupsi
 Mampu komunikasi serial dari port serial (RS232)
 Memiliki kemampuan idle mode dan down mode

2. Set Instruksi MCS-51

Gambar 1. Set instruksi MCS-51 operasi arithmatik [4]


Gambar 2. Set instruksi MCS-51 operasi logika [4]

Gambar 3. Set Instruksi MCS-51 untuk transfer data. [4]


Gambar 4. Set Instruksi MCS-51 untuk variabel bolean [4]

Gambar 5. Set Instruksi MCS-51 untuk pencabangan [4]


Gambar 6. Register-register timer MCS-51 [5]

Gambar 7. Mode timer MCS-51 [6]

Gambar 8. Pengaturan Register Interrupt MCS-51 [7]


Gambar 9. Penempatan alamat register interupt MCS-51 [7]

3. Software Simulasi MCS-51

Gambar 6. Tampilan Software Simulasi MCS-51


Software simulasi ini cukup interaktif digunakan dibandingkan dengan software
“under” DOS yang sebelumnya dipakai dalam praktikum. Software dapat mengenali
mana variabel, instruksi, label dan lain-lain, sehingga membantu dalam mendeteksi
kesalahan dalam pemograman. Untuk melakukan cek pemograman dapat dilakukan
dengan meng-klik tombol “Compile” di menu “operation”, jika ada kesalahan maka
software akan memberi tahu posisi dan jenis kesalahan tersebut. Setelah semua
kesalahan dapat diatasi maka software dapat men-simulasi-kan dengan meng-klik
tombol “simulator” di menu yang sama. Lalu tampilan windows baru akan muncul
seperti yang diperlihatkan pada Gambar 7. Tampilan tersebut merupakan simulasi
seakan-akan mikrokontroller MCS-51 sudah selesai dilakukan download program dan
langsung “running” program tersebut. Kondisi standar yang diperlihatkan yaitu
keempat port (P0, P1, P2, P3), Register Bank yang aktif (R0-R7) dan Spesial Fungtion
Register.

Gambar 7. Tampilan simulasi “running” mikrokontroller MCS-51

III. Peralatan
1. Laptop/notebook/Perconal Computer
2. Software simulasi MCS-51

IV. Tugas Pendahuluan


1. Apakah perbedaan mendasar antara mikroprosesor dengan mikrokontroller?
2. Jelaskan bagaimana cara membuat pewaktu (timer) sebesar 1 detik dengan
menggunakan mikrokontroller MCS-51, clock 3 KHz dan mode 1 timer!
3. Sebutkan vektor address program dari external 0, external 1, timer 0 dan timer 1!
V. Percobaan
1. Pembuatan Program Sederhana MCS-51
Program sederhana ini hanya melihat output pada port dan mencoba dengan berbagai
variasi pemograman. Prosedur percobaan adalah:
a. Buka program simulasi MCS-51
b. Ketiklah program di bawah ini:
org 00h
mov a,#11111110b
loop: mov P1, a
rl a
mov R7,#2
l1: mov R6,#2
l2: mov R5,#2
l3: djnz R5,l3
djnz R6,l2
djnz R7,l1
sjmp loop
end

c. Lalu klik tombol “sim” ( ) atau ctrl+F9 untuk memulai simulasi.


d. Lalu klik tombol “start” untuk menjalankan simulasi dan amati yang terjadi pada
output di Port 1 (P1).
e. Ubah pengisian nilai pada R5, R6 dan R7 menjadi #10 lalu simulasikan dan amati
yang terjadi pada output P1. Kalau sudah selesai kembalikan nilai R5, R6, R7
seperti semula.
f. Ubahlah program sebelumnya dengan menggunakan sub rutin seperti di bawah ini:
org 00h
mov a,#11111110b
loop: mov P1,a
rl a
call delay
sjmp loop
delay: mov R7,#2
l1: mov R6,#2
l2: mov R5,#2
l3: djnz R5,l3
djnz R6,l2
djnz R7,l1
ret
end
g. Simulasikan program tersebut dan amati output pada P1!

2. Pembuatan Program Input dan Output (I/O)


Pada percobaan ini akan dilihat pengaruh pemberian input pada output yang terjadi.
Prosedur percobaan antara lain:
a. Ketiklah program di bawah ini:
org 00h
mov a,#11111110b
kiri: jnb P0.0, kanan
mov P1,a
rl a
call delay
sjmp kiri
kanan: mov P1,a
rr a
call delay
sjmp kiri
delay: mov R7,#2
l1: mov R6,#2
l2: mov R5,#2
l3: djnz R5,l3
djnz R6,l2
djnz R7,l1
ret
end
b. Lalu simulasikan program tersebut lalu double klik lah Port 0 (P0) agar bisa diberi
input, lalu jalankan simulasi dengan meng-klik tombol “start”
c. Ketika program sedang disimulasikan maka klik lah “pin” P0.0 pada Port 0 dan
jangan dilepas (tetap meng-klik) lalu amati yang terjadi.
d. Ubahlah program tersebut yang jika diberi input pada P0.5 maka lampu diam
ditempat (tidak bergeser untuk memutar). Simulasikan dan amati output pada P1

3. Pembuatan Program Timer


Pada percobaan ini akan membuat suatu program pewaktu yang digunakan pada suatu
aplikasi indikasi 2 milidetik. Prosedur percobaan antara lain:
a. Ketiklah program dibawah ini (komentar tidak perlu diketik):
Org 0h
Start: mov P1, #0FH ;P1 menyala nible atas
call delay ; panggil delay 2 milidetik
mov P1, #0F0H ;P1 menyala nible bawah
call delay ;panggil delay 2 milidetik
sjmp Start ;Looping Forever
delay: mov R0,#2 ;R0 = 20
mov TMOD,#00010000b ;Mode 1, Fungsi =Timer 1 16 bit
Load: mov TH1, #0FCh ;TH1 = 3Ch
mov TL1, #017h ; TL1 = AFh
setb TR1 ; TR1 = 1, Start Running
OFlow: JNB TF1, OFlow ; jump to OFlow if TF1 =0
CLR TR1 ; TR1 = 0
CLR TF1 ; TF1 = 0
djnz R0, Load ; iterasi 2 kali
ret
End
b. Lalu simulasikan program tersebut dan amati output pada P1.
c. Ubahlah program sebelumnya untuk pewaktu 6 milidetik dan amati perbedaan
dengan sebelumnya

4. Pembuatan Program Interupt


Pada percobaan ini akan membuat suatu program yang menggunakan program sela /
interupt. Prosedurnya antara lain:
a. Ketiklah program dibawah ini:
ORG 00H
sjmp MAIN
ORG 03H ;alamat program sela ext 0
mov R3, #10
BALIK: mov P1, A
RR A
djnz R3, BALIK
RETI
MAIN: mov IE, #81H ; deklarasi adanya interupt ext 0
mov A, #11111110B
ULANG: mov P1, A
RL A
sjmp ULANG
END
b. Simulasikan program tersebut dan amati output yang terjadi pada P1
c. Ubahlah program sebelumnya dengan mengubah input interupt menjadi EXT1

VI. Tugas Laporan


1. Pada percobaan program sederhana dengan output pada P1, maka:
- Apa yang terjadi pada output ketika nilai R5, R6 dan R7 diperbesar menjadi
#10?
- Setelah program menggunakan sub rutin delay, apakah ada terlihat perbedaan
pada output dibandingkan program sebelumnya?
- Mengapa sub rutin delay dapat menghasilkan jeda waktu (delay)? Jelaskan!
2. Pada percobaan program input dan output, maka:
- Apa yang terjadi ketika P0.0 ditekan (diberi input 0) pada jalannya (eksekusi)
program? Dan apa juga yang terjadi pada output di P1?
- Setelah program diubah, apa yang terjadi ketika P0.5 ditekan pada jalannya
program? Dan apa juga yang terjadi pada output di P1?
3. Pada percobaan program timer, maka:
- Apa perbedaan utama penggunaan sub rutin dengan iterasi di program-
program sebelumnya dengan menggunakan sub rutin timer? Jelaskan!
- Apa yang harus di atur agar fasilitas timer pada MCS-51 bisa menghasilkan
delay 10 milidetik dengan frekuensi clock 12MHz! Bagaimana jika
menggunakan clock 3 KHz?
4. Pada percobaan program interupt, maka:
- Menurut percobaan yang disimulasikan, apa definisi program sela/interupt
tersebut? Jelaskan!
- Apakah perbedaan program interupt tersebut dengan program input dan output
sebelumnya? Jelaskan!

Bibliography

[1] "https://en.wikipedia.org/wiki/Intel_MCS‐51," [Online].  

[2] "https://www.scribd.com/doc/54094549/2‐Difference‐Between‐AT89C51‐and‐AT89S51," 
[Online].  

[3] "http://r0fqh1.blogspot.com/2012/04/microcontroller‐at89s51.html," [Online].  

[4] "https://www.silabs.com/documents/public/presentations/8051_Instruction_Set.pdf," [Online]. 

[5] "https://www.mikroe.com/ebooks/architecture‐and‐programming‐of‐8051‐mcus/counters‐and‐
timers," [Online].  

[6] "https://www.slideshare.net/limapapy/presentation‐15552736," [Online].  

[7] "http://sookogroup.blogspot.com/2011/11/interrupt‐pada‐mcs‐51.html," [Online].  

Anda mungkin juga menyukai