Pages

Labels

Selasa, 08 Maret 2011

MENGENAL MIKROKONTROLER MCS-51


1. MIKROKONTROLER MCS-51

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 MCS-51

Perintah dasar yang biasa digunakan pada uController MCS-51 adalah sebagai berikut:

  1. 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

  1. 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

  1. setb (set bit)

format : setb px.y

(menset atau memberikan logika 1 pada port x.y)

Contoh: setb p1.0

  1. 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.

  1. 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

  1. 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)

  1. 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.

  1. 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

  1. 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)

  1. 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

Mengakhiri baris program

0 Comments:

Post a Comment