Belajar Mikrokontroler PIC16F84 (Bagian 1)

PENGANTAR


PIC16F84 termasuk dalam kelas mikrokontroler 8-bit dengan arsitektur RISC. Struktur umumnya dapat dilihat dibawah ini mewakili blok dasar.
 
Program memory  (FLASH) - untuk menyimpan program yang ditulis.
Sejak memori dibuat dalam teknologi FLASH mikrokontroler ini dapat diprogram dan dihapus lebih dari sekali, itu membuat mikrokontroler ini cocok untuk pengembangan perangkat.
 
EEPROM - data memori yang perlu disimpan ketika tidak ada suplai.
Hal ini biasanya digunakan untuk menyimpan data penting yang tidak boleh hilang jika listrik tiba-tiba berhenti. Sebagai contoh, salah satu data tersebut berupa suhu yang ditugaskan di pengatur suhu. Jika selama kehilangan power supply data ini telah hilang, maka kita harus membuat penyesuaian sekali lagi pada saat power kembali menyala.

RAM - data memori yang digunakan oleh sebuah program selama pelaksanaannya.
Dalam RAM disimpan semua-hasil operasi atau data sementara  pada saat run-time.

Porta dan PORTB adalah koneksi fisik antara mikrokontroler dan dunia luar (perangkat lain berupa input/output). Port A memiliki lima pin, dan port B memiliki delapan pin.

FREE-RUN TIMER adalah sebuah register 8-bit di dalam mikrokontroler yang bekerja secara independen dari program ini. Pada setiap clock osilator keempat akan bertambah sampai mencapai maksimum (255), dan kemudian mulai menghitung lagi dari nol. Seperti kita ketahui waktu yang tepat antara setiap dua increment isi timer, timer dapat digunakan untuk mengukur waktu yang sangat berguna dengan beberapa perangkat.

CENTRAL PROCESSING UNIT memiliki peran elemen penghubung antara blok lainnya dalam mikrokontroler. berfungsi mengkoordinasikan dan menghubungkan antar tiap blok dan mengeksekusi program pengguna.


 


CISC, RISC

Sudah dikatakan bahwa PIC16F84 memiliki arsitektur RISC. Istilah ini sering ditemukan dalam literatur komputer, dan perlu dijelaskan di sini lebih terinci. Arsitektur Harvard adalah konsep baru dari von-Neumann. Ini muncul dari kebutuhan untuk mempercepat kerja mikrokontroler. Dalam arsitektur Harvard, bus data dan bus alamat yang terpisah. Sehingga aliran data yang lebih besar dimungkinkan melalui unit pengolahan pusat (CPU), dan tentu saja, kecepatan yang lebih besar dari pekerjaan. Memisahkan program dari memori data memungkinkan instruksi data lebih dari 8-bit. PIC16F84 menggunakan 14 bit untuk instruksi yang memungkinkan untuk semua instruksi menjadi satu instruksi kata. Hal ini juga khas untuk arsitektur Harvard memiliki instruksi kurang dari von-Neumann, dan memiliki instruksi biasanya dieksekusi dalam satu siklus.

Mikrokontroler dengan arsitektur Harvard juga disebut "mikrokontroler RISC". RISC singkatan dari Reduced Instruction Set Computer. Mikrokontroler dengan arsitektur von-Neumann disebut 'mikrokontroler CISC'. Judul CISC adalah singkatan dari Kompleks Instruction Set Computer.

Karena PIC16F84 adalah mikrokontroler RISC, yang berarti bahwa ia memiliki set instruksi berkurang, lebih tepatnya 35 instruksi. (ex. Intel dan mikrokontroler Motorola memiliki lebih dari seratus petunjuk) Semua instruksi dieksekusi dalam satu siklus kecuali untuk instruksi melompat dan cabang. Menurut apa pembuatnya mengatakan, PIC16F84 biasanya mencapai hasil kompresi 2:1 pada kode dan 4:1 pada kecepatan dalam kaitannya dengan mikrokontroler 8-bit lain di kelasnya.

APLIKASI

PIC16F84 tepat untuk banyak kegunaan, dari industri otomotif dan peralatan rumah pengendalian untuk instrumen industri, sensor remote, kunci pintu listrik dan alat pengaman. Hal ini juga ideal untuk smart card serta perangkat baterai yang disediakan karena konsumsi yang rendah.

Memori EEPROM membuatnya lebih mudah untuk menerapkan mikrokontroler ke perangkat penyimpanan permanen dimana berbagai parameter yang diperlukan (kode untuk pemancar, kecepatan motor, frekuensi penerima, dll). Biaya rendah, konsumsi yang rendah, penanganan yang mudah dan fleksibilitas membuat PIC16F84 berlaku bahkan di daerah di mana mikrokontroler sebelumnya tidak dianggap (contoh: fungsi timer, penggantian interface dalam sistem yang lebih besar, aplikasi coprocessor, dll).

Fitur In System Programmer dari chip ini (bersama dengan hanya menggunakan dua pin dalam transfer data) memungkinkan fleksibilitas produk, setelah perakitan dan pengujian telah selesai. Kemampuan ini dapat digunakan untuk membuat produksi perakitan, untuk menyimpan data kalibrasi tersedia hanya setelah tes akhir, atau dapat digunakan untuk meningkatkan program pada produk jadi (program dapat di upgrade).

Clock / instruction cycle
Clock adalah pemacu utama mikrokontroler, dan diperoleh dari komponen eksternal disebut "osilator".

Clock dari osilator mikrokontroler masuk melalui OSC1 pin dimana sirkuit internal dari mikrokontroler membagi clock menjadi empat bahkan jam Q1, Q2, Q3, dan Q4 yang tidak tumpang tindih. Keempat clock membentuk satu siklus instruksi (juga disebut siklus mesin) selama salah satu instruksi dieksekusi.

Pelaksanaan instruksi dimulai dengan memanggil instruksi yang berikutnya dalam string. Instruksi dipanggil dari memori program pada setiap Q1 dan ditulis di register instruksi pada Q4. Decoding dan eksekusi instruksi yang dilakukan antara Q1 dan Q4 siklus berikutnya. Pada diagram berikut ini kita bisa melihat hubungan antara siklus instruksi dan clock dari osilator (OSC1) serta bahwa clock internal Q1-Q4. Program counter (PC) memiliki informasi tentang alamat dari instruksi berikutnya.


Pipelining
Instruksi cycle terdiri dari siklus Q1, Q2, Q3 dan Q4. Siklus memanggil dan melaksanakan instruksi yang terhubung dalam membuat panggilan, satu cycle instruksi yang diperlukan, serta membutuhkan untuk decoding dan eksekusi. Namun, karena pipelining, setiap instruksi secara efektif dilaksanakan dalam satu cycle. Jika instruksi menyebabkan perubahan pada program counter, dan PC tidak menunjuk ke instruksi berikutnya namun untuk beberapa alamat lain ( terjadi lompatan atau menuju subprogram panggilan), dua siklus yang diperlukan untuk mengeksekusi instruksi. Hal ini karena instruksi harus diproses lagi, tapi kali ini dari alamat yang benar. Siklus memanggil dimulai dengan clock Q1, dengan menulis ke register instruksi (IR). Decoding dan melaksanakan dimulai dengan Q2, Q3 dan Q4.


TCY0 membaca di instruksi MOVLW 55h (tidak masalah apa instruksi dieksekusi, karena tidak ada rectangle digambarkan di bagian atas).
TCY1 menjalankan instruksi MOVLW 55h dan membaca di MOVWF PORTB.
TCY2 mengeksekusi MOVWF PORTB dan membaca di CALL SUB_1.
TCY3 menjalankan panggilan dari subprogram CALL SUB_1, dan membaca dalam instruksi BSF Porta, BIT3. Seperti instruksi ini bukanlah yang kita butuhkan, atau tidak instruksi pertama dari subprogram SUB_1 yang eksekusi yang berikutnya dalam rangka, instruksi harus dibaca lagi. Ini adalah contoh yang baik dari suatu instruksi membutuhkan lebih dari satu siklus.
TCY4 cycle instruksi sama sekali dipakai untuk membaca instruksi pertama dari subprogram di alamat SUB_1.
TCY5 mengeksekusi instruksi pertama dari subprogram SUB_1 dan membaca dalam satu berikutnya.

Deskripsi Pin

PIC16F84 memiliki total 18 pin. Hal ini paling sering ditemukan dalam jenis DIP18 , tetapi juga dapat ditemukan dalam SMD yang lebih kecil dari DIP. DIP adalah singkatan untuk Dual Inline Package. SMD adalah singkatan untuk Surface Mount Device yang menunjukan jenis paket komponen.
Pin pada mikrokontroler PIC16F84 memiliki arti berikut:

Pin pin no.1 RA2 Kedua pada port A. Tidak memiliki fungsi tambahan
Pin pin no.2 Ketiga RA3 pada port A. Tidak memiliki fungsi tambahan.
Pin pin no.3 RA4 Keempat pada port A. Tock 1 yang berfungsi sebagai timer juga ditemukan pada pin ini
Pin no.4 MCLR Reset input dan tegangan Vpp pemrograman mikrokontroler
Pin Nomor 5 Vss Ground pasokan listrik.
Pin no.6 RB0 Zero pin pada port input B. Interrupt adalah fungsi tambahan.
Pin no.7 RB1 Pertama pin pada port B. tanpa fungsi tambahan.
Pin Nomor 8 RB2 Kedua pin pada port B. tanpa fungsi tambahan.
Pin pin no.9 Ketiga RB3 pada port B. tanpa fungsi tambahan.
Pin pin no.10 RB4 Keempat pada port B. tanpa fungsi tambahan.
Pin No.11 RB5 Kelima pin pada port B. tanpa fungsi tambahan.
Pin no.12 RB6 Keenam pin pada port line B. 'Clock' dalam mode program.
Pin 13 RB7 pin Ketujuh on line B. port 'Data' dalam mode program.
Pin no.14 Vdd pasokan listrik kutub Positif.
Pin Pin no.15 OSC2 ditugaskan untuk menghubungkan dengan sebuah osilator
Pin Pin No.16 OSC1 ditugaskan untuk menghubungkan dengan sebuah osilator
Pin pin RA2 No.17 Kedua di A. port tanpa fungsi tambahan
Pin No.18 RA1 Pertama pin pada port A. tanpa fungsi tambahan.