Archive for 2017
tugas ke -1 organisasi dan arsitektur komputer
MIKROKONTROLER MCS-51
- 1. Sejarah mikrokontroler MCS -51
Tahun 1976 Intel
memperkenalkan mikrokontroler pertama kali yaitu 8748 yang merupakan keluarga
dari MCS-48 dengan satu IC berisi lebih dari 17.000 transistor. Melihat
kesuksesan peluncuran Mikrokontroler yang pertama tersebut maka pada tahun 1980
Intel mengumumkan mikrokontroler 8051 yang termasuk dalam keluarga MCS-51 yang
memiliki lebih dari 60.000 transistor didalamnya serta 4 kbyte ROM, 128 byte
RAM, 32 jalur I/O, serial port, dan dua timer 16 bit. Disamping keluarga MCS-51
dan MCS-48 ada juga mikrokontroler dari keluarga MCS-96 yang juga dikenal
sebagai keluarga 8098, yaitu suatu mikrokontroler 8 bit dengan 16 bit unit
pemrosesan pusat ( Kuo, 1998 ).
Dalam keluarga
mikrokontroler MCS-51 terdapat tipe 8051 yang mempunyai saudara dekat
mikrokontroler 8751 dan mikrokontroler 8031, dan terakhir yaitu mikrokontroler
8052. Semua tipe keluarga ini berisi CPU yang sama, RAM, Counter/Timer, Port
Paralel, dan Port Serial. mikrokontroler 8051 memiliki ROM 4 kbyte yang harus
diisi saat pembuatannya (sehingga program tidak dapat diganti). Pada 8751 ROM
digantikan oleh EPROM sehingga kita dapat memprogramnya. Mikrokontroler 89C51
juga merupakan rumpun dari MCS-51 yang telah dikembangkan menjadi suatu bentuk
minimum sistem dinamakan DT-51 buatan Innovative Electronics (2002).
Mikrokontroler 89C51 merupakan mikrokontroler 8 bit tipe CHMOS yang bekerja
pada kecepatan clock dari kristal sebesar 12 MHZ.
Sebuah mikroprosesor yang digabungkan dengan input-output (I/O) dan memori (Random Access Memory/Read Only Memory) akan membentuk sebuah
sistem mikrokomputer. Dari pemikiran CPU yang dapat dikonstruksi dalam sebuah
IC tunggal, maka sebuah mikroprosesor, I/O dan memori dapat pula dibangun dalam
tingkatan IC. Konstruksi ini menghasilkan Single
Chip Microcomputer (SCM). SCM inilah yang disebut sebagai
mikrokontroler.
Tahun 1976 Intel meluncurkan mikrokontroler pertama yang
disebut seri MCS-48 yang berisi lebih dari 17.000 transistor, hingga saat ini
seri ini masih banyak digunakan untuk aplikasi khusus. Seiring perkembangan
mikroprosesor, mikrokontroler juga mengalami perkembangan pesat seperti turunan
MCS-51, 68HC11, mikrokontroler PIC, Fujitsu dan sebagainya.
Pada awal perkembangannya, mikroprosesor dibuat menurut
kebutuhan aplikasi yang lebih spesifik, dalam hal ini mikroprosesor dibagi
menjadi beberapa jenis, yaitu :
· Mikroprosesor RISC (Reduced
Instruction Set of Computing) dan CISC (Complex
Instruction Set of Computing). Jenis ini yang digunakan untuk pengolahan
informasi dengan perangkat lunak yang rumit dan digunakan untuk kebanyakan PC (Personal Computer) saat ini.
· Pengolah Sinyal Digital, DSP (Digital Signal Processor). Memiliki perangkat lunak dan perangkat
keras yang ditujukan untuk mempermudah proses pengolahan sinyal-sinyal digital.
DSP digunakan pada perangkat audio dan video modern seperti VCD, DVD, home theatre dan juga pada kartu-kartu
multimedia di komputer.
· Mikrokontroler, adalah mikroprosesor yang dikhususkan untuk
instrumentasi dan kendali. Contoh penggunaannya adalah sebagai pengendali
motor, berperan seperti PLC (Programmable
Logic Controller), pengaturan pengapian dan injeksi bahan bakar pada
kendaraan bermotor atau alat pengukur otomatis suatu besaran seperti suhu,
tekanan, kelembaban dan lain-lain.
Dalam perkembangan yang begitu cepat, batasan-batasan
tersebut menjadi kabur, seperti definisi mini, mikro dan mainframe komputer.
Beberapa mikrokontroler disebut embedded
processor, atau embedded processor
adalah mikrokontroler, artinya prosesor yang diberikan program khusus yang
selanjutnya diaplikasikan untuk akuisisi data dan kendali khusus, juga bisa
diprogram ulang. Beberapa mikrokontroler modern juga sudah dilengkapi dengan
DSP atau terdapat pula mikrokontroler yang tergolong RISC seperti
mikrokontroler AVR (Alf and Vegard’s Risc
processor).
Mikrokontroler adalah suatu chip yang dibuat dengan ciri
khasnya, umumnya adalah :
· Memiliki memori yang relatif sedikit. Penggunaan
mikrokontroler untuk keperluan instrumentasi khusus membuatnya tidak efisien
jika menggunakan memori yang besar namun tidak terpakai.
· Memiliki unit I/O langsung. Berbeda dengan mikrokomputer yang
unit I/O-nya dapat dikonfigurasi lebih lanjut, mikrokontroler mempunyai unit
I/O yang terintegrasi dan berhubungan langsung dengan mikroprosesornya.
· Program atau perangkat lunaknya relatif sederhana. Sesuai
fungsi yang dibuat untuk tujuan khusus, mikrokontroler hanya membutuhkan
program yang sederhana untuk menjalankan fungsinya.
· Pemroses bit, ketimbang byte. Dengan memori yang sedikit dan
implementasi perangkat lunak yang sederhana, mikrokontroler lebih cenderung
digunakan untuk memproses bit (binary
digit) dibandingkan byte (8 bit), untuk kemudian setiap bit disalurkan ke
setiap jalur keluaran I/O pada pin-pin yang dimilikinya.
· Beberapa varian memiliki memori yang tidak hilang bila catu
padam didalamnya untuk menyimpan program.
Sedangkan dalam hal aplikasi, sistem mikrokontroler memiliki
karakteristik sebagai berikut :
· Memiliki program khusus yang disimpan dalam memori untuk
aplikasi tertentu, tidak seperti PC yang multifungsi karena mudahnya memasukkan
program. Program mikrokontroler relatif lebih kecil daripada program-program
pada PC.
· Konsumsi daya kecil.
· Rangkaian sederhana dan kompak.
· Murah, karena komponen yang digunakan sedikit.
· Unit I/O yang sederhana, misalnya keypad, LCD, LED, latch.
· Lebih tahan terhadap kondisi lingkungan ekstrim misalnya
temperatur, tekanan, kelembaban dan sebagainya.
Intel 8048 adalah SCM yang pertama, dipasarkan pada tahun
1976, ini merupakan cikal bakal dari mikrokontroler. Keluarga dari 8048 adalah
8021, 8022, 8048, dan 8049 yang hingga saat ini masih digunakan pada alat-alat
kedokteran modern dan digunakan pada keyboard IBM PC untuk scanning tombol-tombolnya. Versi 8748 memiliki EPROM 1 kByte untuk
menyimpan programnya. Keluarga mikrokontroler pertama ini dikenal dengan nama
MCS-48. Generasi kedua mikrokontroler 8 bit adalah keluarga mikrokontroler 8051
di tahun 1980, dengan nama MCS-51 dan diklaim sebagai standar mikrokontroler
untuk industri yang menguasai lebih dari 60% pasar mikrokontroler dan menjadi
inti bagi terciptanya mikrokontroler produk lainnya. Generasi ketiga adalah
mikrokontroler 16 bit, seri MCS-96 yang dapat melakukan operasi 16 bit serta
penambahan kemampuan dan kecepatan proses yang ditingkatkan. Kini jutaan chip
telah digunakan di seluruh dunia untuk pengendalian proses-proses dan
instrumentasi.
Seri MCS-51 sederhana, murah dan mudah didapat di pasaran,
cukup untuk aplikasi sederhana bagi pencinta elektronik maupun aplikasi di
industri. Chip ini kemudian dikembangkan menjadi beberapa seri dengan berbagai kemampuan
seperti pada 8031, 80C31, 8051AH dan 8751.
Beberapa perusahaan produsen semikonduktor membuat variannya atas lisensi Intel, yaitu
suatu chip yang dapat menjalankan bahasa dan fitur 8051 ditambah dengan
kemampuan dan kemudahan khusus. Perusahaan tersebut antara lain AMD, Atmel,
Dallas, Matra, OKI, Philips, Siemens, ISS. Produk Philips memberikan tambahan
adanya ADC (Analog to Digital Converter)
dan generator PWM (Pulse Width Modulation),
sedangkan Dallas mempercepat detak (clock)
dan siklus mesin, Atmel membuat mikrokontroler yang menggunakan memori Flash dan harganya relatif murah.
2. PERINTAH DASAR MIKROKONTROLER MCS-51
Perintah dasar yang biasa digunakan pada uController MCS-51
adalah sebagai berikut:
- clr (clear)
format : clr a
(mereset atau memberi nilai 00h pada akumulator)
clr rx
(mereset atau memberi nilai 00h pada register x)
Contoh: clr r0
clr py
(mereset atau memberi nilai 00h pada port y)
Contoh: clr p1
clr
(mereset atau memberi nilai 00h pada alamat tertentu)
Contoh: clr 4ah
- mov
format : mov a, px
(menyalin isi data pada port x ke dalam akumulator)
Contoh: mov a, p3
mov px, #
(menyalin suatu nilai 8-bit ke port x)
Contoh: mov p0, #0feh
mov px, ry
(menyalin isi data yang nilainya terdapat pada register y ke
dalam port x)
Contoh: mov p3, r5
- setb (set bit)
format : setb px.y
(menset atau memberikan logika 1 pada port x.y)
Contoh: setb p1.0
- call
Call terbagi menjadi dua format yaitu acall (absolute call) dan lcall (long call), perbedaannya hanya pada
kemampuan jauh dekatnya pemanggilan subrutin. Seandainya penggunaan acall hanya
mampu memanggil sampai alamat 100h maka untuk lcall dapat lebih dari itu, namun
juga untuk penggunaan lcall membutuhkan memori dan siklus mesin yang lebih
banyak.
Saat perintah call dijalankan, isi register PC (Program Counter) akan disimpan ke dalam
stack dan digantikan dengan alamat subrutin yang dipanggil. Saat subrutin
berakhir dengan ditandai perintah ret (return)
register PC akan diisi kembali oleh isi dari stack, dan mikrokontroler akan
menjalankan perintah di bawah baris perintah call tadi.
Format : acall
(perintah untuk memanggil program pada subrutin)
Contoh: acall cinta
lcall
(perintah untuk memanggil program pada subrutin)
Contoh: lcall komputer
Cat.: Penggunaan subrutin sebaiknya menggunakan kata, untuk kata-katanya
sesuka pemrogram boleh menggunakan nama sendiri, nama kota ataupun nama-nama
lainnya.
- jmp (jump)
Jmp juga terbagi menjadi dua format yaitu sjmp (short jump) dan ljmp (long jump), untuk pengunaannya sama
seperti format call pada penjelasan di atas, hanya saja jump merupakan lompatan
sederhana yang tidak dapat mengembalikan nilai register PC seperti perintah
call.
Format : sjmp
(lompat atau jalankan langsung program yang berada pada
label suatu subprogram)
Contoh: sjmp kamu
sjmp
(lompat atau jalankan langsung program yang berada pada
suatu alamat memori)
Contoh: ljmp 100h
- djnz (decrement and jump if not zero)
format : djnz rx,
(kurangi nilai isi data pada register x dan bila nilainya
belum mencapai 0 maka akan dilakukan lompatan ke label subprogram)
Contoh: djnz r7, gaul
(kurangi nilai isi data pada register R7 dan bila nilainya
belum mencapai 0 maka dilakukan lompatan ke subprogram dengan label gaul)
- jnb (jump if not bit set)
format : jnb px.y,
(lompat ke label subprogram bila nilai port x.y berlogika
LOW atau mempunyai nilai 0)
Contoh: jnb p1.0, go
Cat.: jnb hanya bisa dijalankan dengan operand yang berkapasitas 1 bit.
- cjne (compare and jump if not equal)
format : cjne a, xyz,
(bandingkan apakah nilai akumulator sama dengan nilai xyz,
bila nilainya tidak sama maka lompat ke label subprogram)
Contoh: cjne a, #0fh, keren
cjne rv, xyz,
(bandingkan apakah nilai register v sama dengan nilai xyz,
bila nilainya tidak sama maka lompat ke label subprogram)
Contoh: cjne r1, #0ach, ganteng
- rr (rotate right)
rl (rotate left)
format : rr a
(geser ke kanan 1 bit pada isi akumulator)
rl a
(geser ke kiri 1 bit pada isi akumulator)
rr rx
(geser ke kanan 1 bit pada isi register x)
rl rx
(geser ke kiri 1 bit pada isi register x)
- inc (increment)
dec (decrement)
format : inc a
(menambahkan
nilai 1 bit pada akumulator)
dec a
(mengurangi
nilai 1 bit pada akumulator)
inc rx
(menambahkan
nilai 1 bit pada register x)
dec rx
(mengurangkan
nilai 1 bit pada register x)
Cat : untuk perintah yang menggunakan decrement, increment,
rotate, compare hanya dapat dilakukan oleh akumulator maupun register saja.
Bila nilai pada suatu port ingin dilakukan perintah diatas maka port tersebut
wajib disalin terlebih dahulu kedalam akumulator atau register dengan
menggunakan perintah mov.
· Format penulisan standar bahasa assembly MCS-51 (pada Rigel
ReadS51) :
#include
org 100h
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
;
~ Main Program ~
;
end
Keterangan:
· #include
mengambil file sfr51.inc pada library program Reads51 yang
berguna sebagai referensi alamat memory untuk port, register, akumulator dan
lainnya. Dengan ini dalam penulisan program, tidak perlu perintah inisialisasi,
perintah yang seharusnya mov 0x80,#ffh dapat ditulis mov p0,#0ffh. Sebenarnya
masih banyak lagi file include yang dapat digunakan hanya saja pada penggunaan
standar hanya digunakan sfr51.inc atau sfr52.inc. Cat : sfr51.inc (AT89x51),
sfr52.inc (AT89x52).
· org 100h
mempunyai fungsi yang sama dengan perintah a100 pada
pemrograman BGC yaitu memulai program dari alamat memori 100h.
· mov px,
#0ffh
men-set suatu port atau berguna untuk mengaktifkan port yang
akan digunakan sebagai input maupun sebagai output. Bila hanya ingin menguji
sebuah program pada suatu simulasi, perintah ini tidak akan banyak berpengaruh
pada hasil output program namun bila ingin diterapkan pada alat nyata, perintah
ini wajib disertakan.
· Main Program
Berisi program utama
· End
3. PENJELASAN FUNGSI PIN MIKROKONTROLER MCS-51
IC
mikrokontroler dikemas (packaging) dalam bentuk yang berbeda. Namun pada
dasarnya fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu
bentuk IC seri mikrokontroler MCS-51 dapat dilihat berikut.
Berikut adalah penjelasan fungsi
tiap kaki yang biasa ada pada seri mikrokontroler MCS-51.
A. Port 0
Merupakan dual-purpose port (port yang memiliki dua kegunaan). Pada desain yang minimum (sederhana) digunakan sebagai port I/O (Input/Output). Pada desain lebih lanjut pada perancangan dengan memori eksternal digunakan sebagai data dan address yang di-multiplex. 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 digunakan sebagai high byte dari address. 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.
A. Port 0
Merupakan dual-purpose port (port yang memiliki dua kegunaan). Pada desain yang minimum (sederhana) digunakan sebagai port I/O (Input/Output). Pada desain lebih lanjut pada perancangan dengan memori eksternal digunakan sebagai data dan address yang di-multiplex. 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 digunakan sebagai high byte dari address. 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.
PIN
|
FUNGSI
KHUSUS
|
P3.0
P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 |
RXD ( serial input port )
TXD ( serial output port ) _INT0 ( external interrupt 0 ) _INT1 ( external interrupt 1 ) T0 ( timer 0 external input ) T1 ( timer 1 external input ) _WR ( external data memory write strobe ) _RD ( external data memory read strobe ) |
E. PSEN (Program Store Enable)
PSEN adalah kontrol sinyal yang mengijinkan untuk mengakses program (code) memori eksternal. Pin ini dihubungkan ke pin OE (Output Enable) dari EPROM. Sinyal PSEN akan 0 pada tahap fetch (penjemputan) instruksi. PSEN akan selalu bernilai 0 pada pembacaan program memori internal. PSEN terdapat pada pin 29.
F. ALE (Address Latch Enable)
ALE digunakan untuk men-demultiplex address dan data bus. Ketika menggunakan program memori eksternal port 0 akan berfungsi sebagai address dan data bus. Pada setengah paruh pertama memory cycle ALE akan bernilai 1 sehingga mengijinkan penulisan alamat pada register eksternal dan pada setengah paruh berikutnya akan bernilai satu sehingga port 0 dapat digunakan sebagai data bus. ALE terdapat pada pin 30.
G. EA (External Access)
Jika EA diberi masukan 1 maka mikrokontroler menjalankan program memori internal saja. Jika EA diberi masukan 0 (ground) maka mikrokontroler hanya akan menjalankan program memori eksternal (PSEN akan bernilai 0). 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. On-Chip Oscillator
Mikrokontroler MCS-51 telah memiliki on-chip oscillator yang dapat bekerja jika di-drive menggunakan kristal. Tambahan kapasitor diperlukan untuk menstabilkan sistem. Nilai kristal yang biasa digunakan pada 89S51/89S52 adalah sekitar 12 MHz, dan maksimum sampai 24 MHz. On-chip oscillator tidak hanya dapat di-drive dengan menggunakan kristal, tapi juga dapat digunakan TTL oscillator.
J. Koneksi Power
Mikrokontroler biasanya beroperasi pada tegangan 3.3 volt atau 5 volt (tergantung serinya). Pin Vcc terdapat pada pin 40 sedangkan Vss (ground) terdapat pada pin 20.
Mikrokontroler MCS-51 telah memiliki on-chip oscillator yang dapat bekerja jika di-drive menggunakan kristal. Tambahan kapasitor diperlukan untuk menstabilkan sistem. Nilai kristal yang biasa digunakan pada 89S51/89S52 adalah sekitar 12 MHz, dan maksimum sampai 24 MHz. On-chip oscillator tidak hanya dapat di-drive dengan menggunakan kristal, tapi juga dapat digunakan TTL oscillator.
J. Koneksi Power
Mikrokontroler biasanya beroperasi pada tegangan 3.3 volt atau 5 volt (tergantung serinya). Pin Vcc terdapat pada pin 40 sedangkan Vss (ground) terdapat pada pin 20.
4. KELEBIHAN
DAN KEKURANGAN MIKROKONTROLLER MCS-51
KELEBIHAN :
·
Program relatif lebih kecil dari pada program PC.
· Konsumsi daya kecil.
· Rangkaian sederhana dan kompak.
· Murah, karena komponen yang digunakan
sedikit.
·
Unit I/O yang sederhana, misalnya
keypad, LCD, LED, latch.
· Lebih tahan terhadap kondisi
lingkungan ekstrim misalnya temperatur, tekanan, kelembaban dan sebagainya.
·
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.
·
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.
·
Sistem running microcontroller berdiri
sendiri tanpa tergantung dengan komputer sedangkan parameter komputer hanya
digunakan untuk download perintah instruksi atau program. Langkah-langkah untuk
download komputer dengan mikrokontroler sangat mudah digunakan karena tidak
menggunakan banyak perintah.
·
Pada mikrokontroler tersedia fasilitas
tambahan untuk pengembangan memori dan I/O yang disesuaikan dengan kebutuhan
sistem.
·
Harga microcontroller lebih murah
dan mudah didapat.
KEKURANGAN :
·
Bahasa
yang digunakan pada mikrokontroller ini masih assembly sedangkan beberapa mikrokontroller yang ada saat ini menggunakan
Bahasa tingkat tinggi seperti Bahasa C, dll.
·
Kerusakan software berakibatsistem
macet dan tidak dapat diperbaiki jika tidak diketahui kode-kodenya.
·
Ketergantungan pada pembuat software.
·
obsolete