I. KONSEP DASAR MIKROKONTROLER
1.1. Struktur Mikrokontroler
Gambar 1. Diagram Blok Mikrokontroler secara Umum
Dalam gambar 1 terlihat bahwa sebuah mikrokontroler terdiri dari beberapa bagian. Bagian-bagian tersebut saling dihubungkan dengan internal dan pada umumnya terdiri dari 3 macam bus yaitu address bus, data bus dan control bus.
Masing-masing bagian memiliki fungsi-fungsi sebagai berikut:
1. Register:
Register merupakan suatu tempat penyimpanan (variabel) bilangan bulat yang terdiri dari 8 atau 16 bit. Pada umumnya register memiliki jumlah yang banyak, masing-masing ada yang memiliki fungsi khusus dan ada pula yang memiliki fungsi atau kegunaan secara umum. Register yang memiliki fungsi secara khusus misalnya register timer yang berisi data penghitungan pulsa untuk timer, atau register pengatur mode operasi counter (penghitung pulsa). Sedangkan register yang memiliki fungsi umum digunakan untuk menyimpan data sementara yang diperlukan untuk proses penghitungan dan proses operasi mikrokontroler. Register dengan fungsi umum sangat dibutuhkan dalam sistem mikrokontroler karena mikrokontroler hanya mampu melakukan operasi aritmetik atau logika hanya pada satu atau dua operand saja, sehingga untuk operasi-operasi yang melibatkan banyak variabel harus dimanipulasi dengan menggunakan variabel-variabel register umum.
2. Accumulator:
Merupakan salah satu register khusus yang berfungsi sebagai operand umum proses aritmetika dan logika.
3. Program Counter:
Merupakan salah satu register khusus yang berfungsi sebagai pencacah/penghitung eksekusi program mikrokontroler.
4. ALU (Arithmetic and Logic Unit):
ALU memiliki kemampuan dalam mengerjakan proses-proses aritmatika (penjumlahan, pengurangan, perkalian, pembagian) dan operasi logika (misalnya AND, OR, XOR, NOT) terhadap bilangan bulat 8 atau 16 bit.
5. Clock Circuits:
Mikrokontroler merupakan rangkaian logika sekuensial, dimana proses kerjanya berjalan melalui sinkronisasi clock. Oleh karena itu diperlukan clock circuits yang menyediakan clock untuk seluruh bagian rangkaian.
6. Internal ROM (Read Only Memory):
Merupakan memori penyimpan data dimana data tersebut tidak dapat diubah atau dihapus (hanya dapat dibaca). ROM biasanya diisi dengan program untuk dijalankan oleh mikrokontroler segera setelah power dihidupkan. Data dalam ROM tidak dapat hilang meskipun power dimatikan.
7. Stack Pointer:
Stack merupakan bagian dari RAM yang memiliki metode penyimpanan dan pengambilan data secara khusus. Data yang disimpan dan dibaca tidak dapat dilakukan dengan cara acak karena data yang dituliskan ke dalam stack yang berada pada urutan yang terakhir merupakan data yang pertama kali dibaca kembali. Stack Pointer berisi offset dimana posisi data stack yang terakhir masuk (atau yang pertama kali dapat diambil).
8. I/O (Input/Output) Ports:
Merupakan sarana yang digunakan oleh mikrokontroler untuk mengakses peralatan-peralatan lain di luar sistem. I/O Port berupa pin-pin yang dapat berfungsi untuk mengeluarkan data digital ataupun sebagai masukan data eksternal.
9. Interrupt Circuits :
Adalah rangkaian yang memiliki fungsi untuk mengendalikan sinyal-sinyal interupsi baik internal maupun eksternal. Adanya sinyal interupsi akan menghentikan eksekusi normal program mikrokontroler untuk selanjutnya menjalankan sub-program untuk melayani interupsi tersebut.
Diagram blok di atas tidak selalu sama untuk setiap jenis mikrokontroler. Beberapa mikrokontroler menyertakan rangkaian ADC (Analog to Digital Converter) di dalamnya, ada pula yang menyertakan port I/O serial disamping port I/O parallel yang sudah ada.
10. Internal RAM (Random Acces Memory)
Merupakan memori penyimpan data dimana data tersebut dapat diubah atau dihapus. RAM biasanya berisi data-data variable dan register. Data yang tersimpan pada RAM bersifat volatile yaitu akan hilang bila catu daya yang terhubung padanya dimatikan.
1.2. Prinsip Kerja Mikrokontroler
Prinsip kerja sebuah mikrokontroler dapat dijelaskan sebagai berikut:
- Berdasarkan data yang ada pada register Program Counter. Mikrokontroler mengambil data dari ROM dengan alamat sebagaimana ditunjukkan dalam Program Counter. Selanjutnya Program Counter ditambah nilainya dengan 1 (increment) secara otomatis. Data yang diambil tersebut merupakan urutan instruksi program pengendali mikrokontroler yang sebelumnya telah dituliskan oleh pembuatnya.
- Instruksi tersebut diolah dan dijalankan. Proses pengerjaan bergantung pada jenis instruksi; bisa membaca, mengubah nilai-nilai dalam register, RAM, isi port atau melakukan pembacaan dan dilanjutkan dengan pengubahan data.
- Program Counter telah berubah nilainya (baik karena penambahan secara otomatris sebagaimana dijelaskan pada langkah 1 di atas atau karena pengubahan data pada langkah 2). Selanjutnya yang dilakukan mikrokontroler adalah mengulang kembali siklus ini pada langkah 1. Demikian seterusnya hingga catu daya dimatikan.
Berdasarkan uraian di atas dapat disimpulkan bahwa pada dasarnya unjuk kerja mikrokontroler sangatlah tergantung pada urutan instruksi yang dijalankannya, yaitu program yang ditulis dalam ROM.
Dengan membuat program yang bermacam-macam, tentunya mikrokontroler dapat mengerjakan tugas yang bermacam-macam pula. Fasilitas-fasilitas yang ada misalnya timer/counter, port I/O, serial port, Analog to Digital Converter (ADC) dapat dimanfaatkan oleh programmer untuk menghasilkan kinerja yang dikehendaki. Sebagai contoh ADC digunakan oleh mikrokontroler sebagai alat ukur digital untuk mengukur tegangan sinyal masukan, selanjutnya hasil pembacaan ADC diolah untuk kemudian dikirimkan ke sebuah display yang terhubung pada port I/O guna menampilkan hasil pembacaan yang telah diolah. Proses pengendalian ADC, pemberian sinyal-sinyal yang tepat pada display, kesemuanya dikerjakan secara berurutan pada program yang ditulis dalam ROM.
Penulisan program mikrokontroler pada umumnya menggunakan bahasa assembly untuk mikrokontroler yang bersangkutan (setiap jenis mikrokontroler memiliki instruksi bahasa assembly yang berbeda-beda). Dengan bantuan sebuah pesawat komputer (PC), bahasa assembley tersebut diubah menjadi bahasa mesin mikrokontroler dan selanjutnya disalin ke dalam ROM dari mikrokontroler.
II. MIKROKONTROLER KELUARGA MCS51
Meskipun termasuk tua, keluarga Mikrokontroler MCS51 adalah Mikrokontroler yang paling populer saat ini. Keluarga ini diawali oleh Intel yang mengenalkan IC Mikrokontroler type 8051 pada awal tahun 1980-an, 8051 termasuk sederhana dan harganya murah sehingga banyak digemari, banyak pabrik IC besar lain yang ikut memproduksnya, tentu saja masing-masing pabrik menambahkan kemampuan pada mikrokontroler buatannya meskipun semuanya masih dibuat berdasarkan 8051. Sampai kini sudah ada lebih 100 macam mikrokontroler turunan 8051, sehingga terbentuklah sebuah ‘keluarga besar mikrokontroler’ dan biasa disebut sebagai MCS51.
Belakangan ini, pabrik IC Atmel ikut menambah anggota keluarga MCS51. Atmel merupakan pabrik IC yang sangat menguasai teknologi pembuatan Flash PEROM, jadi sudah selayaknya kalau Atmel memasukkan Flash PEROM ke dalam mikrokontroler buatannya. Usaha Atmel ini ternyata bagaikan menambah ‘darah’ baru bagi keluarga MCS51, dengan adanya Flash PEROM yang harganya murah maka tercapailah angan-angan banyak orang untuk membuat alat berbasis mikrokontroler yang sesederhana mungkin dan semurah mungkin.
Produksi mikrokontroler MCS51 Atmel dibagi dua macam, yang berkaki 40 setara dengan 8051 yang asli, bedanya mikrokontroler Atmel berisikan Flash PEROM dengan kapasitas berlainan. AT89C51 mempunyai Flash PEROM dengan kapasitas 2 Kilo Byte, AT89C52 4 Kilo Byte, AT89C53 12 Kilo Byte, AT89C55 20 Kilo Byte dan AT89C8252 berisikan 8 Kilo Byte Flash PEROM dan 2 Kilo Byte EEPROM.
Yang berkaki 20 adalah MCS51 yang disederhanakan, penyederhanaan dilakukan dengan cara mengurangi jalur untuk input/output paralel, kemampuan yang lain sama sekali tidak mengalami pengurangan. Penyederhanaan ini dimaksudkan untuk membentuk mikrokontroler yang bentuk fisiknya sekecil mungkin tapi mempunyai kemampuan sama. Atmel memproduksi 3 buah mikrokontroler ‘mini’ ini, masing-masing adalah AT89C1051 dengan kapasitas Flash PEROM 1 Kilo Byte, AT89C2051 2 Kilo Byte dan AT89C4051 4 Kilo Byte. Ketiga mikrokontroler ini secara umum disebut sebagai AT89Cx051.
Notasi ”C” pada tipe sebuah mikrokontroler produksi Atmel mengindikasikan bahwa chip tersebut dalam pemrogramannya harus menggunakan rangkaian terpisah yang biasa disebut dengan ”downloader”. Sehingga bila ingin melakukan pemrograman ulang sebuah chip AT89Cxx harus mengeluarkannya (mencabut) dari rangkaian aplikasi.
III. MIKROKONTROLLER AT89S51/52
Mikrokontroller 8-bit dengan 4 K. Byte ISP
( In System Programming )
A. PENDAHULUAN
Mikrokontroler saat ini tidak asing lagi dalam dunia elektronika, hampir semua peralatan elektronik dewasa ini menggunakan perangkat ini, mikrokontroler merupakan pengendali utama dalam peralatan elektronik saat ini, maka mikrokontroler merupakan suatu hal yang penting untuk dipelajari bagi mereka yang berkecimpung dalam dunia elektronika.
Mikrokontroler yang dibahas disini adalah mikrokontroler buatan ATMEL yang mudah ditemui di pasaran di Indonesia, yaitu dari keluarga MCS-51. AT89S51 dan AT89S52 mempunyai kemampuan serial downloading atau lebih dikenal dengan istilah In System Programming (ISP) sehingga mikrokontroler langsung dapat diprogram pada rangkaiannya tanpa harus mencabut IC untuk diprogram, Programmer ISP dapat dibuat menggunakan beberapa resistor via paralel port komputer sehingga bagi mereka yang belum memiliki programmer dapat tetap bereskperimen menggunakan mikrokontroler ini dengan biaya yang relatif murah.
FITUR:1. Kompatibel dengan produk MCS-51
2. 4K byte In System Programmable Flash Memory
3. Range catu daya 4,0V s/d 5,0V
4. Operasi statis: 0 Hz s/d 33 MHz
5. Tiga Tingkat Program memory lock
6. 128 x 8-bit RAM internal
7. 32 Programmable Jalur I/O
8. Dua 16-bit Timer/ Counter
9. Enam Sumber Interupsi
10. Full Duplex Serial Channel
11. Low Power Idle dan Mode Power Down
12. Watch Dog Timer
13. Dua Data Pointer
14. Power Off Flag
15. Fast Programming Time
16. Flexyble ISP programming
Pada gambar 1 ditunjukkan bentuk fisik dan konfigurasi pin dari sebuah mikrokontroler seri AT89Sxx.
Gambar 1. Bentuk fisik AT89Sxx (PDIP) dan konfigurasi Pin
DISKRIPSI
AT89S51 mempunyai konsumsi daya rendah, mikrokontroller 8-bit CMOS dengan 4K byte memori Flash ISP (In System Programmable/ dapat diprogram didalam sistem). Divais ini dibuat dengan teknologi memori non-volatile dengan kerapatan tinggi dan kompatibel dengan standar industri 8051 dari INTEL, set instruksi dan pin keluaran. Flash yang berada di dalam chip memungkinkan memori program untuk diprogram ulang pada saat chip di dalam sistem atau dengan menggunakan Programmer memori non-volatile konvensional. Dengan mengkombinasikan CPU 8-bit yang serbaguna dengan flash ISP pada chip, ATMEL 89S51 merupakan mikrokontroler yang luar biasa yang memberikan fleksibilitas yang tinggi dan penggunaan biaya yang efektif untuk beberapa aplikasi kontrol.
AT89S51 memberikan fitur-fitur standar sebagai berikut: 4K byte Flash, 128 byte RAM, 32 jalur I/O, Watchdog Timer, dua data pointer, dua buah 16-bit timer/ counter, lima vektor interupsi dua level, sebuah port serial full dupleks, oscillator internal, dan rangkaian clock. Selain itu AT89S51 didisain dengan logika statis untuk operasi dengan frekuensi sampai 0 Hz dan didukung dengan mode penghematan daya. Pada mode idle akan menghentikan CPU sementara RAM, timer/ counter, serial port dan sistem interupsi tetap berfungsi. Mode Power Down akan tetap menyimpan isi dari RAM tetapi akan membekukan oscillator, menggagalkan semua fungsi chip sampai interupsi eksternal atau reset hardware dibangkitkan.
DISKRIPSI PIN
VCC Tegangan Supply
GND Ground
Port0
Port 0, merupakan port I/O 8-bit open drain dua arah. Sebagai sebuah port, setiap pin dapat mengendalikan 8 input TTL. Ketika logika “1” dituliskan ke port 0, maka port dapat digunakan sebagai input dengan high impedansi. Port 0 dapat juga dikonfigurasikan untuk multipleksing dengan address/ data bus selama mengakses memori program atau data eksternal. Pada mode ini P0 harus mempunyai pull-up.
Port1
Port 1 merupakan port I/0 8-bit dua arah dengan internal pull up. Buffer output port 1 dapat mengendalikan empat TTL input. Ketika logika “1” dituliskan ke port 1, maka port ini akan mendapatkan internal pull up dan dapat digunakan sebagai input.
Port 1 juga menerima alamat byte rendah selama pemrograman dan verifikasi Flash.
Port Pin Fungsi Alternatif
P1.5 MOSI (digunakan untuk In System Programming)
P1.6 MISO (digunakan untuk In System Programming)
P1.7 SCK (digunakan untuk In System Programming)
Port2
Port 2 merupakan port I/O 8-bit dua arah dengan internal pull- up. Buffer output port 2 dapat mengendalikan empat TTL input. Ketika logika “1” dituliskan ke port 2, maka port ini akan mendapatkan internal pull up dan dapat digunakan sebagai input.
Port3
Port 3 merupakan port I/O 8-bit dua arah dengan internal pull up. Buffer output port 3 dapat mengendalikan empat TTL input. Ketika logika “1” dituliskan ke port 3, maka port ini akan mendapatkan internal pull up dan dapat digunakan sebagai input.
Port 3 juga melayani berbagai macam fitur khusus, sebagaimana yang ditunjukkan pada tabel berikut:
Port Pin | Fungsi Alternatif |
P3.0 | RXD ( port serial input ) |
P3.1 | TXD ( port serial output ) |
P3.2 | INT0 ( interupsi eksternal 0 ) |
P3.3 | INT1 ( interupsi eksternal 1 ) |
P3.4 | T0 ( input eksternal timer 0 ) |
P3.5 | T1 ( input eksternal timer 1 ) |
P3.6 | WR ( write strobe memori data eksternal) |
P3.7 | WR ( read strobe memori program eksternal) |
RST
Input Reset. Logika high “1” pada pin ini untuk dua siklus mesin sementara oscillator bekerja maka akan me-reset devais.
ALE/PROG
Address Latch Enable ( ALE ) merupakan suatu pulsa output untuk mengunci byte low dari alamat selama mengakses memori eksternal. Pin ini juga merupakan input pulsa pemrograman selama pemrograman flash (paralel). Pada operasi normal, ALE mengeluarkan suatu laju konstan 1/6 dari frekuensi osiilator dan dapat digunakan untuk pewaktu eksternal.
PSEN
Program Store Enable merupakan strobe read untuk memori program eksternal.
EA/ VPP
External Access Enable. EA harus di hubungkan ke GND untuk enable devais, untuk mengakses memori program eksternal mulai alamat 0000H s/d FFFFH. EA harus dihubungkan ke VCC untuk akses memori program internal. Pin ini juga menerima tegangan pemrogramman ( VPP) selama pemrograman Flash.
XTAL1
Input untuk penguat oscilator inverting dan input untuk rangkaian internal clock
XTAL2
Output dari penguat oscilator inverting.
1.1. Organisasi Memori
Semua divais 8051 mempunyai ruang alamat yang terpisah untuk memori program dan memori data, seperti yang ditunjukkan pada gambar 1.1. dan gambar 1.2. Pemisahan secara logika dari memori program dan data mengijinkan memori data untuk diakses dengan pengalamatan 8-bit, yang dengan cepat dapat disimpan dan dimanipulasi dengan CPU 8-bit. Selain itu, pengalamatan memori data 16-bit dapat juga dibangkitkan melalui register DPTR. Memori program ( ROM, EPROM dan FLASH ) hanya dapat dibaca, tidak ditulis. Memori program dapat dilakukan ekspansi hingga mencapai 64 K.Byte. Pada 89S51, 4K.Byte memori program terdapat di dalam chip. Untuk membaca memori program eksternal mikrokontroler mengirim sinyal PSEN ( Program Store Enable )Gambar 1.1. Diagram blok mikrokontroler 89S51
Memori data ( RAM ) menempati ruang alamat yang terpisah dari memori program. Pada keluarga 8051, 128 byte terendah dari memori data, berada di dalam chip. RAM eksternal (maksimal 64 K. Byte). Dalam pengaksesan RAM eksternal, mikrokontroler mingirimkan sinyal RD ( baca ) dan WR ( tulis ).