Interface Interrupt menggunakan PIC 16F877A





1. Tujuan [Kembali]

Mempelajari bagaimana cara mengaktifkan interupsi menggunakan mikrokontroler dengan programnya.

2. Alat [Kembali]

2.1 Mikrokontroler PIC16F877A.


2.2 LED

2.3 Button

2.4 Reisistor

3. Teori [Kembali]

3.1. Pengertian Mikrokontroler PIC 16F877A

PIC yang merupakan produk dari Microchip Technology, merupakan kepanjangan dari Peripheral Interface Controller memiliki arsitektur Harvard dan merupakan jenis RISC (Reduced Instruction Set Computing). Salah satu jenis mikrokontroler ini adalah PIC16F877A.

3.1.1 Fitur-Fitur PIC16F877A.

a. Memiliki Instruksi sebanyak 35 buah.
b. Masing-masing instruksi dieksekusi dalam satu siklus mesin kecuali untuk instruksi percabangan yaitu dua siklus.
c. Kecepatan operasi masukan clock dari DC hingga 20MHz.
d. Kapasitas memori program berukuran 8k x 14 words.
e. Kapasitas RAM 268 byte.
f. Kapasitas memory EEPROM berukuran 256 byte.

3.1.2 Pin Out PIC16F877A.


-Memiliki 5 PORT I/O (PORTA 6 pin, PORTB 8 pin, PORTC 8 pin, PORTD 8 pin, PORTE 3 pin).
-Memiliki 3 buat timer
-Memiliki 2 buah keluaran PWM.
-Komunikasi serial singkron menggunakan SPI dan I2C.
-Komunikasi USART.

3.1.3 Pemograman PIC16F877A.



Pemograman PIC ini diprogram menggunakan bahasa C dan dapat menggunakan kompiler MikroC for PIC yang dapat didownload di situs resminya.

3.1.4 Rangkaian Dasar Sistem Mikrokontroler PIC16F877A.


Di gambar dapat dilihat bahwa rangkaian dasar dari sistim mikrokontroler biasanya menggunakan rangkaian crystal sebagai clock atau oscilator eksternal sebagai jantung untuk memberikan kecepatan eksekusi dari mikrokontroler tersebut. Pada gambar juga terdapat rangkaian reset yang digunakan untuk memulai dari awal kembali program yang kita jalankan pada mikrokontroler ini.


3.2. Pengertian Interupsi

Interupsi adalah kejadian atau peristiwa yang menyebabkab mikrokontroler berhenti sejenak untuk melayani interupsi tersebut. Program yang dijalankan pada saat melayani interupsi di sebut Interrupt Service Routine (Rutin Layanan Interupsi). Analoginya adalah sebagai berikut: seseorang sedang mengetik laporan ,mendadak telepon berdering dan menginterupsi orang tersebut sehingga menghentikan pekerjaan mengetik lalu mengangkat telepon setelah pembicaraan di telepon selesai, maka dia melanjutkan pengerjaan mengetik kembali.

Demikian pula pada sistem mikrokontroler yang sedang menjalankan programmya, saat terjadi interupsi, program berhenti sesaat, melayani interupsi tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh vector dari interupsi yang terjadi hingga selesai dan kembali meneruskan program yang terhenti oleh interupsi tadi. Seperti yang terlihat pada gambar 1.18. Sebuah program yang seharusnya berjalan terus lurus, tiba-tiba terjadi interupsi dan harus melayani interupsi tersebut terlebih dahulu hingga selesai sebelum ia kembali meneruskan pekerjaannya.

Adapun untuk menjalankan interupsi pada mikrokontroler PIC16F877A ini, menggunakan Register INTCON, berikut bit-bit yang ada pada register ini.



GIE: Global Interrupt Enable bit
1-Mengaktifkan global inteerrupt
0-Menonaktifkan global Interrupt

PIE: Peripheral Interrupt Enable bit
1-Mengaktifkan peripheral interrupts
0-Menonaktifkan peripheral interrupts

TMR0IE: TMR0 Overflow Interrupt Enable bit
1-Mengaktifkan TMR0 interrupt
0-Menonaktifkan TMR0 interrupt

INTE: RB0/INT External Interrupt Enable bit
1 = Mengaktifkan RB0/INT external interrupt
0 = Menonoaktifkan RB0/INT external interrupt

RBIE: RB Port Change Interrupt Enable bit
1 = mengaktifkan RB port change interrupt
0 = MenonaktifkanRB port change interrupt

TMR0IF: TMR0 Overflow Interrupt Flag bit
1-TMR0 register Meluap (harus di clear dengan software)
0-TMR0 register tidak meluap

INTF: RB0/INT External Interrupt Flag bit
1 = The RB0/INT external interrupt terjadi (Harus di clear dengan software)
0 = The RB0/INT external interrupt tidak terjadi

RBIF: RB Port Change Interrupt Flag bit
1 = paling sedikit RB7:RB4 pins berubah status
0 = tidak ada RB7:RB4 pins berubah status


4. Rangkaian [Kembali]


Rangkaian di atas merupakan rangkaian sederhana dari penggunaan interupt ekseternal PIC 16F877A. Kerja dari rangkaian di atas adalah, saat di mulai, semua LED dalam keadaan mati, namun ketika tombol inteerupt ditekan maka semua LED akan menyala. karena si program akan memprioritaskan interupt tersebut.

5. Program [Kembali]

void main() {

TRISC=0x00;                     // Menyatakan PORTC sebagai output
INTCON.GIE=1;                   // Mengatifkan Global Interrupt
INTCON.INTE=1;                  // Mengaktifkan interrupt ekseternal

while(1){

PORTC=0x00;                     // Semua LED mati
}

}

void interrupt(){
 INTCON.INTF=1;                 // Membersihkan interrupt flag eksternal
 PORTC=~PORTC;                  // Menginverskan nilai PORTC sehingga semua LED Hidup
 delay_ms(100);                 // delay 100 ms
}




6. Flowchart [Kembali]

7. Video Simulasi [Kembali]









           


          






Share
Tweet
Pin
Share