BAB II
MIKROKONTROLER PIC16F877 DAN KOMPONEN PENDUKUNGNYA
2.1 Mikrokontroler PIC16F877
Mikrokontroler PIC16F877 adalah mikrokontroler produksi Microchip Technology
Inc yang popular digunakan sekarang ini. Merupakan salah satu mikrokontroler dari
keluarga PICmicro yang menggunakan teknologi FLASH memori, sehingga dapat
diprogram atau dihapus hingga seribu kali. Prosesor (CPU) mikrokontroler PIC16F877
merupakan jenis RISC, dan ini menjadi keunggulan dibandingkan dengan mikrokontroler
8-bit lain dikelasnya dalam hal kecepatan dan kompresi kode-kode program. Sebagaimana
mikrokontroler pada umumnya, secara internal mikrokontroler PIC16F877 terdiri atas
unit-unit fungsional Arithmetic and Logical Unit (ALU), kumpulan register kerja, register
dan dekoder instruksi, pewaktu dan komponen kendali lainnya. Berbeda dengan sebuah
mikroprosessor, sebuah mikrokontroler telah menyediakan komponen memori dalam
serpih yang sama (in chip). Mikrokontroler ini menerapkan arsitektur Harvard yang
memisahkan memori program dengan memori data dan bus alamat dengan bus data,
sehingga pengaksesan program dan pengaksesan data dapat dilakukan secara bersamaan
(concurrent).
2.1.1 Fitur Mikrokontroler PIC16F877
Keunggulan yang mendasari dalam teknologi mikrokontroler PIC16F877 antara
lain sebagai berikut :
A. Fitur Peripheral
Timer Watchdog Timer 8 Bit.
Timer 1, 16 bit (timer / counter dengan prescale).
Timer 2, 8 bit (timer / counter dengan prescaler dan postscaler).
USART (Universal Serial Asynchronous Receiver Transmiter).
PORT Serial Sinkron.
Serial Peripheral Interface (SPI) Master mode.
Inter-Integrated Circuit (I2C) Master/Slave.
Parallel Slave Port (PSP) 8-bits wide, dengan external RD, WR and CS
controls Dua Capture, Compare, PWM modul.
Capture 16 bit, max. resolusi 12.5 ns.
Compare 16 bit, max. resolusi 200 ns.
PWM max. resolusi 10-bit.
PORT Paralel
PORTB : 8 Bit digital I/O.
PORTC : 8 Bit digital I/O.
PORTD : 8 Bit digital I/O.
B. Fitur Analog
PORT Paralel
PORTE : 3 Bit digital I/O atau 3 canel masukan Analog.
PORTA : 6 Bit digital I/O atau 5 canel masukan Analog.
A/D 10 Bit (Analog to Digital Converter).
10-bit, up to 8-channel Analog-to-Digital Converter (A/D).
Brown-out Reset (BOR).
Two analog compar
Programmable on-chip voltage reference (VREF) module.
C. Fitur Mikrokontroler
RISC CPU yang mempunyai performance tinggi.
Memori Memori Program Flash ROM : 8 K x 14 Bit.
Stack : 8 x 13 Bit.
Memori Data RAM : 368 x 8 Bit.
EEPRON : 225 x 8 Bit.
Programmable code protection.
Power saving Sleep mode.
Selectable oscillator options.
In-Circuit Serial Programming (ICSP) hanya dengan dua pin.
Watchdog Timer (WDT) dengan on-chip RC oscillator.
High Sink / Source Current: 25 mA.
Wide operating voltage range: 2.0V to 5.5V.
Processor read / write access to program memory.
Low power, high speed CMOS FLASH / EEPROM technology.
2.1.2 Pin Mikrokontroler PIC 16F877
Mikrokontroler PIC16F877A diproduksi dalam kemasan 40 pin PDIP (Plastik Dual
In Line) maupun 40 pin SO (Small Outline). Namun yang banyak terdapat dipasaran adalah
kemasan PDIP. Pin-pin untuk I/O sebanyak 33 pin yang terdiri atas 5 PORT, yaitu 6 pin
pada PORT A, 8 pin pada PORT B, 8 pin pada PORT C, 8 pin pada PORT D, dan 3 pin
oscilatorclock ekternal dan master clear / reset aktif low. Berikut konfigurasi dan
fungsi-fungsi pin mikrokontroler PIC16F877 dalam kemasan DIP (Dual In Line).
Gambar 2.1 Konfigurasi Pin Mikrokontroler PIC16F877
1. PORT A (RA0-RA5)
Pin pada PORT A berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.1.
Tabel 2.1 Fungsi Alternatif PORT A
Nama Pin Nomor Pin
(DIP 40) Fungsi Alternatif
RA0 / AN0 2
RA0 Digital I/O - 0
AN0 Input analog - 0
RA1 / AN1 3
RA1 Digital I/O - 1
RA2 / AN2 /
VREF- 4
RA2 Digital I/O – 2
AN2 Input analog – 2
VREF- Tegangan referensi rendah
RA3 / AN3 /
VREF+ 5
RA3 Digital I/O – 3
AN3 Input analog – 3
VREF+ Tegangan referensi tinggi
RA4 / T0CKI
/C1OUT 6
RA4 Digital I/O – 4
T0CKI Input analog – 4
C1OUT Masukan clock eksternal timer 0
RA5 /AN5/ ܵܵതതത /
C2OUT 7
RA5 Digital I/O – 5
AN5 Input analog – 5
ܵܵ
തതത Slave select untuk komunikasi serial
C2OUT Comparator C2 output
2. PORT B (RB0-RB7)
Pin pada PORT B berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.2.
Tabel 2.2 Fungsi Alternatif PORT B
Nama Pin Nomor Pin
(DIP 40) Fungsi Alternatif
RB0 / INT 33 RB0 Digital I/O – 0
INT External Interrupt
RB1 34 Digital I/O – 1
RB2 35 Digital I/O – 2
RB3 / PGM 36
RB3 Digital I/O – 3
PGM Programming Enable Pin
RB4 37 Digital I/O – 4
RB6 / PGC 39
RB6 Digital I/O – 6
PGC Serial Programming Clock (Pemrograman cara
ICSP)
RB7 /PGD 40
RB7 Digital I/O – 7
PGD Serial Programming Data (Pemrograman cara
ICSP)
3. PORT C (RC0-RC7)
Pin pada PORT C berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.3.
Tabel 2.3 Fungsi Alternatif PORT C
Nama Pin Nomor Pin (DIP 40)
Fungsi Alternatif
RC0 / T1OSO / T1CKI
15
RC0 Digital I/O - 0
TIOSO Timer 1 Oscillator Output
T1CKI Timer 1 Clock Input eksternal
RC1 / TIOSI / CCP2
16
RC1 Digital I/O – 1
TIOSI Timer 1, Oscillator Input
CCP2 Ouput Analog – 1, dengan pengaturan sinyal input (secara PWM)
RC2 / CCP1 17
RC2 Digital I/O – 2,
CCP1 Output Analog – 2,dengan pengaturan sinyal input (secara PWM)
RC3 / SCK
/ SCL 18
RC3 Digital I/O -3
SCL Clock slave select
RC4 / SDI /
SDA 23
RC4 Digital I/O – 4
SDI Masukan data SPI (master mode)
SDA Masukan data slave select
RC5 / SDO
/ 24
RC5 Digital I/O – 5
SDO Keluaran data SPI (master mode)
RC6 / TX /
CK 25
RC6 Digital I/O – 6
TX Transmiter USART
CK USART Clock
RC7 / RX /
DT 26
RC7 Digital I/O – 7
RX Receiver USART
DT Data USART
4. PORT D (RD0-RD7)
Pin pada PORT D berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.4.
Tabel 2.4 Fungsi Alternatif PORT D
Nama Pin Nomor Pin (DIP 40)
Fungsi Alternatif
RD0 / PSP0 19 RD0 Digital I/O – 0
PSP0 Parallel Slave Port – 0
RD1 / PSP1 20
RD1 Digital I/O – 1
PSP1 Parallel Slave Port – 1
RD2 / PSP2 21
RD2 Digital I/O – 2
RD3 / PSP3 22
RD3 Digital I/O – 3
PSP3 Parallel Slave Port – 3
RD4 / PSP4 27 RD4 Digital I/O – 4
PSP4 Parallel Slave Port – 4
RD5 / PSP5 28 RD5 Digital I/O – 5
PSP5 Parallel Slave Port – 5
RD6 / PSP6 29 RD6 Digital I/O – 6
PSP6 Parallel Slave Port – 6
RD7 / PSP7 30 RD7 Digital I/O – 7
PSP7 Parallel Slave Port – 7
5. PORT E (RE0-RE2)
Pin pada PORT E berfungsi sebagai (I/O) dua arah (bidirectional), dan juga
mempunyai fungsi alternatif seperti pada Tabel 2.5.
Tabel 2.5 Fungsi Alternatif PORT E
Nama Pin Nomor Pin (DIP 40)
Fungsi Alternatif
RE0 / ܴܦതതതത / AN5 8
RE0 Digital I/O – 0
ܴܦ
തതതത Read Control in PSP mode
AN5 Input Analog – 5
RE1 / ܹܴതതതതത / AN6 9
RE1 Digital I/O – 1
ܹܴ
തതതതത Write Control in PSP mode
AN6 Input Analog – 6
RE2 / ܥܵതതതത / AN7 10
RE2 Digital I/O – 2
ܥܵ
തതതത Chip Select Control in PSP mode
6. OSC1 dan OSC2
Merupakan masukan untuk sumber penabuh luar (external clock), berupa kristal
atau rangkaian RC untuk mengaktifkan osilator yang terdapat pada mikrokontroler
PIC16F877A. OSC1 pada pin 13 sebagai input clock dan OSC2 pada pin 14 sebagai output
clock.
7. MCLR /VPP
Pin nomor 1, yang merupakan masukan untuk reset atau tegangan masukan pada
saat memprogram.
8. VDD dan VSS
Pin VDD dihubungkan dengan sumber tegangan +5 Volt dan VSS pada ground. Pin
VDD adalah pada nomor 11 dan 32, sedangkan pin VSS pada nomor 12 dan 31.
2.1.3 Memori
Memori adalah sebuah tempat atau media penyimpanan, yang terdiri blok /
kotak-kotak atau lokasi yang memiliki alamat / address sendiri. Setiap blok menyimpan kata
(word). Word merupakan sebuah informasi unit logika. Memori pada sebuah
mikrokontroler, berfungsi menyimpan program yang akan dijalankan dan data yang
digunakan program tersebut . Memori yang tersedia dapat berupa Volatile memori, seperti
RAM (Random Acces Memory) atau Nonvolatile, seperti ROM, PROM, EPROM,
EEPROM.
2.1.3.1 Memori Program
Memori program berfungsi sebagai tempat penyimpanan program / aplikasi
perangkat lunak. Ruang memori dalam menyimpan program berisikan semua kode yang
yang digunakan. Memori program bersifat nonvolatile, yaitu kemampuan memori untuk
memelihara informasi / data yang disimpan walaupun tidak mendapat catu daya. Memori
program dalam mikrokontroler PIC16F877A terdiri atas :
Flash ROM : 8K x 14 bit.
Memori Stack : 8 x 13 bit.
Perealisasian memori program dalam teknologi FLASH memori, akan
memungkinkan melakukan pemrogram atau penghapusan program hingga seribu kali.
Dengan berukuran word 14 bit dan kapasitas 8K word, memori program ini hanya dapat
diakses oleh Program Counter (PC). Hal ini dikarenakan PC berukuran 13 bit. PC ialah
register yang memilihara jalannya urutan program dengan menyimpan alamat instruksi
yang sedang dijalankan. Alamat awal program biasanya nol, dimana instruksi pertama
program akan disimpan kecuali penulis program menentukan lain. Setiap instruksi
dijalankan, PC akan bertambah satu untuk menunjuk keinstruksi selanjutnya. Percabangan
dan jump (pelompatan) tidak dilaksanakan dalam satu instruksi.
Stack berkapasitas 8 lokasi dengan lebar word 13 bit, tidak termasuk kedalam
program ataupun data. Stack digunakan menyimpan isi PC bila ada instruksi CALL, dan
digunakan hanya secara internal untuk menyimpan alamat instruksi kembali dari subrutin
dengan cara LIFO ( Last In First Out ).
2.1.3.2 Memori Data
Memori data terbagi dalam beberapa ruang (semacam halaman / bank), memuat
register yang mempunyai fungsi-fungsi umum dan khusus yang tersendiri. Memori data ini
terdiri atas RAM 368 X 8 Bit (tersusun sebagai file register) dan EEPROM 256 X 8 bit.
Pengaksesan register file secara langsung sangat sederhana yaitu dengan mencantumkan
dilakukan melalui register indeks INDF (register pertama pada setiap bank), yang
sebenarnya bukanlah register fisik. Setiap pengaksesan register INDF sebenarnya
mengakses register yang ditunjuk oleh register pemilih register yaitu FSR (File Select
Register).
2.2 LED
Light Emitting Dioda atau lebih dikenal dengan sebutan LED adalah, dioda
(semikonduktor) yang dapat memancarkan cahaya monokromatik pada saat mendapat arus
bias maju (forward bias). Warna yang dihasilkan bergantung pada bahan semikonduktor
yang dipakai. Berbeda dengan dioda pada umumnya, kemampuan mengalirkan arus pada
LED cukup rendah yaitu maksimal 20 mA dan jatuh tegangan pada LED juga berpariasi
sesuai warna LED tersebut. Tegangan jatuh (forward voltage) merupakan besar tegangan
pada saat LED mulai konduksi atau memancarkan cahaya. Berikut nilai tegangan jatuh
(VF) dan kurva karakteristik pada sebuah LED menurut warna yang dihasilkan.
Infra merah : 1,6 V
Putih : 3,0 V – 3,6 V
Hijau : 2,6 V
Orange : 2,2 V
Merah : 1,8 V – 2,1 V
Biru : 3,0 V – 3,5 V
Kuning : 2,4 V
Gambar 2.4 Konfigurasi Seven Segment
Ada 2 jenis rangkaian dasar dari seven segment, yaitu seven segment common
anoda dan seven segment common katoda. Pada seven segment common anoda, untuk
mengaktifkan karakter display seven segment diperlukan logika low (0) pada jalur A - F,
dan sebaliknya pada seven segment common katoda yaitu untuk mengaktifkan display
seven segment diperlukan logika high (1). Rangkaian internal seven segment common
anoda dan common katoda adalah seperti Gambar 2.5 dan 2.6.
Gambar 2.5 Rangkaian dasar Seven Segment Common Anoda
Gambar 2.6 Rangkaian dasar Seven Segment Common Katoda
2.4 Komunikasi serial RS232
RS232 singkatan dari Recomemded Standard Number 232, yang merupakan sebuah
standard yang dibuat oleh Electronic Industry Association, dengan tujuan untuk membuat
6 DSR Data Set Ready, sinyal kendali dari modem ke PC
yang menyatakan bahwa modem siap mengirim atau
menerima data.
7 RTS Request To Send, sinyal kendali dari PC yang
menandakan bahwa PC siap menerima data.
8 CTS Clear To Send, sinyal kendali dari modem yang
menandakan bahwa modem siap menerima data.
9 RI Ring Indicator, sinyal kendali ke PC, tanda bahwa
saluran telepon berdering.
Level tegangan pada RS232 adalah sebagai berikut:
Logika 1 terletak antara -3 Volt sampai -15 Volt.
Logika 0 terletak antara +3 Volt sampai +15 Volt.
Daerah tegangan antara -3 Volt sampai +3 Volt adalah invalid level, yaitu tegangan
yang tidak memiliki level logika pasti sehingga harus dihindari. Demikian juga
level tegangan dibawah -15 Volt dan diatas +15 Volt juga harus dihindari, karena
bisa merusak line driver pada saluran RS232.
2.5 IC MAX232
IC MAX232 adalah komponen untuk mengubah sinyal / level tegangan dari RS232
ke sinyal / level tegangan TTL saat terjadi komunikasi data antara komputer (atau alat lain
yang menggunakan RS232) dengan mikrokontroler. IC ini memiliki dua pembangkit
tegangan internal yang berfungsi untuk menkonversi tegangan +5V menjadi ± 10V
(tanpa beban). Konverter pertama menggunakan kapasitor C1 untuk menggandakan
tegangan input +5V menjadi +10V saat C3 berada pada output V+. Konverter kedua
menggunakan kapasitor C2 untuk merubah +10V menjadi -10V saat C4 berada pada
Gambar 2.8 IC MAX 232
Synchronous and Asynchronous Serial Receiver and Transmitter) ataupun RS232
converter. Pin 11 dan 10 adalah input UART atau UART Transmitter, pin 14 dan 7 adalah
output RS232 atau RS232 Receiver. Pin 12 dan 9 adalah output UART atau UART
Receiver, pin 13 dan 8 adalah input RS232 atau RS232 Transmitter. Untuk lebih jelas
dapat dilihat pada Gambar 2.9 berikut ini.