Penjelasan Port Pada Mikrokontroler PIC16F84

Istilah "port" mengacu kepada sekelompok pin pada mikrokontroler yang dapat diakses secara bersamaan, atau di mana kita bisa mengatur kombinasi yang diinginkan dari nol dan satu, atau membaca status yang ada. Secara fisik, port adalah register di dalam mikrokontroler yang dihubungkan dengan kabel ke pin mikrokontroler. Port merupakan koneksi fisik dari Central Processing Unit dengan dunia luar (Perangkat Luar). Mikrokontroler menggunakan Port  untuk memantau atau mengontrol komponen atau perangkat lain. Karena fungsi, beberapa pin memiliki peran ganda seperti PA4/TOCKI misalnya, yang dalam waktu bersamaan bit keempat Port A dan input eksternal untuk Free-Run Counter. Seleksi salah satu dari dua fungsi pin dilakukan di salah satu register konfigurasi. Sebuah ilustrasi ini adalah T0CS bit kelima dalam register OPTION. Dengan memilih salah satu fungsi yang lainnya dinonaktifkan.

Semua port pin dapat ditunjuk sebagai input atau output , sesuai dengan kebutuhan perangkat yang sedang dikembangkan. Dalam rangka untuk mendefinisikan pin sebagai pin input atau output, kombinasi yang tepat dari nol dan satu harus ditulis dalam register TRIS. Jika bit yang sesuai dari register TRIS berisi logika "1", maka pin adalah pin masukan, dan jika sebaliknya  ini merupakan pin output. Setiap port memiliki register TRIS. Dengan demikian, port A memiliki TRISA, dan port B  TRISB.  PortA dan PORTB terletak pada register memori bank 0, sedangkan TRISA dan TRISB pin register  berlokasi di bank 1.

PORTB dan TRISB
PORTB berisi 8 pin. Register yang tepat untuk mengatur arah data adalah TRISB. Mengatur bit register TRISB mendefinisikan pin port sebagai input, dan mereset bit di register TRISB berarti mendefinisikan pin port yang sesuai sebagai output.
Setiap pin PORTB memiliki internal  pull-up resistor yang lemah (resistor yang mendefinisikan baris ke logika satu) yang dapat diaktifkan dengan mengatur ulang RBPU bit ketujuh dalam register OPTION. 'pull-up' ini resistor otomatis akan dimatikan bila pin port dikonfigurasi sebagai output. Bila mikrokontroler diaktifkan, pull-up dinonaktifkan.

Empat pin PORTB, RB7: RB4 dapat menyebabkan interupsi yang terjadi ketika status mereka berubah dari logika satu ke logika nol dan berlawanan. Hanya pin dikonfigurasi sebagai input dapat menyebabkan interupsi ini terjadi (jika ada RB7:. pin RB4 dikonfigurasi sebagai output, interrupt tidak akan dihasilkan pada perubahan status) opsi interupsi ini  bersama dengan internal pull-up resistor membuatnya lebih mudah untuk memecahkan masalah-masalah umum kita temukan dalam praktek misalnya keyboard matriks. 


bsf STATUS, RP0 ;Bank1
movlw 0x0F ;Mengatur pin input dan output
movwf TRISB ;Menulis ke register TRISB
bcf STATUS, RP0 ;Bank0
bsf PORTB, 4 ;PORTB <7:4>=0
bsf PORTB, 5  
bsf PORTB, 6  
bsf PORTB, 7

Contoh di atas menunjukkan bagaimana pin 0, 1, 2, dan 3 di set sebagai input, dan pin 4, 5, 6, dan 7 untuk output, setelah pin  output PORTB diatur ke satu.


PORTA dan TRISA
PORTA memiliki 5 pin yang berdampingan. Register yang sesuai untuk arah data TRISA pada alamat 85h. Seperti dengan PORTB, Mengset bit (1) di register TRISA juga mendefinisikan pin port yang sesuai sebagai input, dan mereset bit (0) di register TRISA mendefinisikan pin port yang sesuai sebagai output.

Penting untuk dicatat bahwa PORTA pin RA4  hanya dapat menjadi input. Pada pin ini juga terletak input eksternal untuk timer TMR0. 


bsf STATUS, RP0 ;Bank1
movlw b'11111100' ;Mengatur pin input dan output
movwf TRISA ;Menulis Register TRISA
bcf STATUS, RP0 ;Bank0

Contoh menunjukkan bagaimana pin 0, 1, 2, 3, dan 4 ditujukan sebagai input, dan pin 5, 6, dan 7 sebagai output.

 


Reset Pada Mikrokontroler PIC16F84

Reset digunakan untuk menempatkan mikrokontroler ke kondisi 'dikenal/known'. Itu berarti pada penggunaanya mikrokontroler dapat berjalan diluar keinginan. Maka supaya mikrokontroler dapat terus berfungsi perlu dilakukan pengaturan ulang, yang berarti semua register akan ditempatkan pada posisi awal. Reset tidak hanya digunakan ketika mikrokontroler tidak berjalan seperti yang kita inginkan, tetapi juga dapat digunakan ketika mencoba perangkat sebagai interupsi dalam pelaksanaan program, atau supaya mikrokontroler siap ketika loading program.
 
Untuk mencegah logika nol terbawa ke pin MCLR secara tidak sengaja ( reset tersebut diaktifkan dengan nol logis), MCLR harus dihubungkan melalui resistor ke kutub suplai positif. Resistor memiliki nilai antara 5 dan 10K. Resistor tersebut fungsinya adalah untuk menjaga pin MCLR pada satu logis sebagai pencegahan, teknik ini dinamakan Pull up.


Mikrokontroler PIC16F84 memiliki beberapa sumber me-reset:
a) Reset saat power on, POR (Power-On Reset)
b) Reset ketika mikrokontroler bekerja  dengan memberika logika nol pada pin MCLR .
c) Reset selama kondisi sleep
d) Reset pada penjaga waktu (watchdog timer) (WDT) overflow
e) Reset saat overflow WDT selama kondisi sleep.

Sumber reset paling penting adalah a) dan b). Yang pertama terjadi setiap kali power supply diberikan ke mikrokontroler dan berfungsi untuk membuat semua register dan eksekusi program ke posisi awal. Yang kedua adalah dengan cara memberikan logika nol pada pin MCLR selama pengoperasian normal mikrokontroler. Sumber reset yang kedua sering digunakan dalam pengembangan program.

Selama reset, lokasi memori RAM  tidak diatur ulang. RAM  tidak berubah di reset apapun. Yang berubah keposisi awal adalah Register SFR. Salah satu efek yang paling penting dari reset adalah menetapkan program counter (PC) ke nol (0000H), yang memungkinkan program untuk memulai eksekusi dari instruksi tertulis pertama.

Reset Ketika Suplai Tegangan Drop/di bawah diijinkan (Brown-out Reset)

Impulse untuk reset selama teganan-naik yang dihasilkan oleh mikrokontroler itu sendiri ketika mendeteksi peningkatan pasokan Vdd (berkisar dari 1.2V ke 1.8V). Dorongan itu berlangsung 72ms yang memberikan cukup waktu bagi osilator untuk mendapatkan kondisi stabil. 72ms ini disediakan oleh timer PWRT internal . Mikrokontroler  dalam mode reset selama PWRT aktif. Namun, sebagai perangkat kerja, masalah muncul ketika pasokan tidak drop ke nol tapi turun di bawah batas yang menjamin berfungsinya mikrokontroler. Kasus ini mungkin terjadi ketika penggunaan, terutama di lingkungan industri dimana gangguan dan ketidakstabilan pasokan listrik merupakan kejadian sehari-hari. Untuk mengatasi masalah ini kita perlu memastikan bahwa mikrokontroler dalam kondisi reset setiap kali suplai tegangan jatuh di bawah limit yang telah ditentukan.
Jika, menurut spesifikasi listrik, rangkaian reset internal mikrokontroler tidak dapat memenuhi kebutuhan, komponen elektronik khusus dapat digunakan yang mampu menghasilkan sinyal reset diinginkan. Selain fungsi ini, rangkaian ini juga dapat berfungsi untuk menjaga tegangan suplai. Jika penurunan tegangan di bawah tingkat yang ditentukan, logika nol akan muncul pada pin MCLR  yang membuat mikrokontroler dalam keadaan reset sampai tegangan tidak dalam batas yang menjamin kinerja yang akurat.

Pembangkit Pulsa / Oscillator Pada PIC16F84

Sirkuit osilator digunakan untuk membangkitkan pulsa (clock) untuk mikrokontroler . Clock dibutuhkan agar mikrokontroler dapat mengeksekusi instruksi program atau program.

Jenis osilator

PIC16F84 dapat bekerja dengan empat konfigurasi yang berbeda dari sebuah osilator. Konfigurasi dengan osilator kristal dan resistor-kapasitor (RC) adalah  yang paling sering digunakan, Konfigurasi inilah yang akan dibahas disini. Osilator dengan kristal disebut osilator XT, dan  pasangan resistor-kapasitor disebut osilator RC. Hal ini penting karena Anda perlu menentukan jenis osilator ketika merakit  mikrokontroler.

XT Oscillator
Kristal osilator disimpan dalam kemasan logam dengan dua pin di mana  frekuensi kristal berosilasi dituliskan pada body nya. Kapasitor keramik 30pF dihubungkan pada tiap kaki kristal dan kaki berikutnya disambungkan langsung ke ground.


 


Osilator dan kapasitor dapat dikemas menjadi satu dengan tiga pin. Elemen seperti itu disebut resonator keramik dan memiliki perwakilan di grafik seperti di bawah ini. Pusat pin elemen adalah ground, sedangkan pin akhir dihubungkan dengan pin OSC1 dan OSC2 pada mikrokontroler. Ketika merancang perangkat, aturan tersebut  untuk menempatkan osilator mikrokontroler lebih dekat, untuk menghindari gangguan/ interverensi ketika mikrokontroler menerima clock.


RC Oscillator

Dalam aplikasi yang tidak memerlukan ketepatan waktu yang diperhitungkan osilator RC lebih cocok, karena osilator ini lebih hemat biaya. Resonant frekuensi dari osilator RC bergantung pada tingkat pasokan tegangan, resistansi R, C kapasitas dan suhu kerja. Perlu disebutkan di sini bahwa frekuensi resonansi juga dipengaruhi oleh variasi normal dalam parameter proses, dengan toleransi R eksternal dan komponen C, dll


Diagram di atas menunjukkan bagaimana RC osilator dihubungkan dengan PIC16F84. Dengan nilai R resistor yang di bawah 2.2k, osilator dapat menjadi tidak stabil, atau bahkan bisa berhenti osilasi. Dengan nilai yang sangat tinggi R (ex.1M) osilator menjadi sangat sensitif terhadap kebisingan dan kelembaban. Disarankan bahwa nilai R resistor harus antara 3 dan 100k. Meskipun osilator akan bekerja tanpa kapasitor eksternal (C = 0pF), kapasitor di atas 20pF masih harus digunakan untuk kebisingan dan stabilitas. Tidak peduli  osilator yang sedang digunakan, untuk mendapatkan clock mikrokontroler dapat bekerja, sebuah clock osilator harus dibagi dengan 4. Osilator clock dibagi  4 juga dapat diperoleh pada pin OSC2/CLKOUT, ​​dan dapat digunakan untuk menguji atau sinkronisasi sirkuit logis lainnya.
 


Setelah diberi tegangan, osilator mulai berosilasi. Osilasi pada awalnya memiliki periode dan amplitudo tidak stabil, tetapi setelah beberapa periode waktu akan menjadi stabil.


Untuk mencegah clock tidak akurat, dan dapat mempengaruhi kinerja mikrokontroler, kita perlu menjaga mikrokontroler dalam keadaan reset saat stabilisasi clock osilator's. Diagram di atas menunjukkan bentuk khas sinyal yang didapat mikrokontroler  dari clock osilator.