Anda di halaman 1dari 13

LAPORAN PRAKTIKUM

LAB PTE-3

MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER


ATMEGA8535

Disusun untuk Memenuhi Matakuliah Lab-PTE-03


Yang Dibimbing oleh ibu Dyah Lestari, S.T.,M.Eng

Kelompok 7 :
1. Dwi Adi Putra M. R. (160534611635)
2. Izzulfi Wahyu Ramadhan (160534611662)
3. Nafalia Kurniawati (160534611621)
4. Rama Deyanto (160534611671)

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK ELEKTRO
Oktober 2017
MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER
ATMEGA8535

A. TUJUAN
Menjelaskan fitur interrupt dalam mikrokontroler.
Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk
menjalankan interupsi pada saat program utama dijalankan

B. DASAR TEORI

1. INTERRUPT
Interrupt adalah kondisi di mana pada saat program utama dieksekusi/dikerjakan
oleh CPU kemudian tiba-tiba berhenti untuk sementara waktu karena ada rutin lain yang
harus ditangani terlebih dahulu oleh CPU. Setelah selesai mengerjakan rutin tersebut,
CPU kembali mengerjakan instruksi pada program utama. Port yang berfungsi sebagai
interrupt eksternal adalah:
PORTD.2 (PD2) External Interrupt 0 Input (INT0)
PORTD.3 (PD3) External Interrupt 1 Input (INT1)
PORTB.2 (PB2) External Interrupt 2 Input (INT2)
Di dalam mikrokontroler AVR terdapat 21 interrupt baik eksternal maupun internal.
Interrupt tersebut dapat dilihat dalam tabel berikut.
Register-register yang digunakan untuk interrupt meliputi:
a. MCU Control Register-MCUCR

Bit 3,2 ISC11, ISC10: Interrupt Sense Control 1 Bit 1 dan Bit 0

Bit 1,0 ISC01, ISC00: Interrupt Sense Control 0 Bit 1 dan Bit 0

b. MCU Control and Status Register-MCUCSR

ISC2 = 0, a falling edge on INT2 activates the interrupt


ISC2 = 1, a rising edge on INT2 activates the interrupt
Lebar pulsa minimum: 50 ns
c. Status Register-SREG

Bit 7 I: Global Interrupt Enable


d. General Interrupt Control Register-GICR

Bit 7 - INT1:eksternal interrupt request 1 enable


Bit 6 INT0 :eksternal interrupt request 0 enable
Bit 5 INT2 : eksternal interrupt request 2 enable

e. General Interrupt Flag Register-GIFR

Bit 7 - INT1:eksternal interrupt flag 1 enable


Bit 6 INT0 :eksternal interrupt flag 0 enable
Bit 5 INT2 : eksternal interrupt flag 2 enable
C. LEMBAR PRAKTIKUM

1. Alat dan Bahan


1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
2 buah kabel pita hitam

2. Prosedur
A. MENGGUNAKAN 1 INTERRUPT
1. Hubungkan PORTC pada minimum system dengan soket jumper OUTPUT
pada trainer dan PORTD.2 (INT0) dari minimum sistem ke soket IS1 pada
trainer.
2. Buka program Code Vision AVR
3. Buatlah project baru. Pada tap External IRQ centang INT0 lalu pilih Mode
Falling edge dan set PORTC sebagai OUTPUT

4. Ketik sub routine interrupt seperti sintaks dibawah ini.


5. Ketik dalam program utama (main program)

6. Compile dan Build program, jika ada yang error perbaiki program.
Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto
program.
7. Amati nyala LED sebelum dan sesudah anda menekan tombol interupsi
(lihat tabel interupsi pada data hasil percobaan)
8. Ulangi langkah 3-9 untuk mode interupsi (Interrupt Sense Control) Rising
Edge, Any Change dan Low Level.

B. MENGGUNAKAN 3 INTERRUPT SECARA BERSAMAAN


1. Hubungkan PORTC pada minimum system dengan soket jumper OUTPUT
pada trainer, PORTD.2 (INT0), PORTD.3 (INT1) dan PORTB.2 (INT2)
dari minimum sistem ke soket IS1 pada trainer.
2. Buka program Code Vision AVR.
3. Buatlah project baru. Pada tap External IRQ centang INT0 Enabled, INT1
Enabled dan INT2 Enabled. Kemudian pilih Mode Falling Edge untuk
semua interrupt dan set PORTC sebagai OUTPUT.
4. Ketik sub routine interrupt seperti sintaks dibawah ini.

5. Ketik dalam program utama (main program)

6. Compile dan Build program jika ada yang error perbaiki program. Masukkan
file hex menggunakan Khanzama AVR Programer. Klik auto program.
7. Hubungkan INT0, INT1, dan INT2 menjadi satu dengan IS1 pada trainer
8. Amati nyala LED sebelum dan sesudah anda menekan tombol interupsi
tombol IS1
D. DATA HASIL PERCOBAAN

Tabel Interupsi menggunakan 3 interrupt


No Mode Program yang dijalankan (Interrupt / Main Program)
Interupsi Saat toogle switch Saat toogle switch Saat toogle
belum dinyalakan dinyalakan switch dimatikan
(Low) (Raising) (Falling)
1 10101010 10101010
11111111 11111111
00000001 00000001
Falling Edge 11110000 11111111 11111111
10000000 10000000
11111111 11111111
11110000 11110000
2 00000001 00000001
11111111 11111111
10101010 10101010
Rising Edge 11110000 11111111 11111111
10000000 10000000
11111111 11111111
11110000 11110000
3 10101010 00000001
11111111 11111111
00000001 10101010
Any Change 11110000 11111111 11111111
10000000 10000000
11111111 11111111
11110000 11110000
4 11110000 00000001
11111111
10000000
10101010
11111111
Low Level 11111111
10101010
11111111
10101010
11111111

Script Interupt 1

#include <mega8535.h>
#include <delay.h>

interrupt [EXT_INT0] void ext_int0_isr(void)


{
PORTC=0B10101010;
delay_ms(1000);
PORTC=0B11111111;
delay_ms(1000);
}

void main(void)
{

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

GICR|=0x40;
MCUCR=0x02;
MCUCSR=0x00;
GIFR=0x40;

TIMSK=0x00;

UCSRB=0x00;

ACSR=0x80;
SFIOR=0x00;

ADCSRA=0x00;

SPCR=0x00;

TWCR=0x00;
#asm("sei")

while (1)
{
PORTC=0B11110000;
}
}

Script Interupt 3

#include <mega8535.h>
#include <delay.h>

interrupt [EXT_INT0] void ext_int0_isr(void)


{
// Place your code here
PORTC=0b10101010;
delay_ms(1000);
PORTC=0b11111111;
delay_ms(1000);
}

interrupt [EXT_INT1] void ext_int1_isr(void)


{
// Place your code here
PORTC=0b00000001;
delay_ms(1000);
PORTC=0b11111111;
delay_ms(1000);
}

interrupt [EXT_INT2] void ext_int2_isr(void)


{
// Place your code here
PORTC=0b10000000;
delay_ms(1000);
PORTC=0b11111111;
delay_ms(1000);
}

void main(void)
{
PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

GICR|=0xE0;
MCUCR=0x0F;
MCUCSR=0x40;
GIFR=0xE0;

TIMSK=0x00;

UCSRB=0x00;

ACSR=0x80;
SFIOR=0x00;

ADCSRA=0x00;

SPCR=0x00;

TWCR=0x00;

#asm("sei")

while (1)
{
// Place your code here
PORTC=0b11110000;
}
}

Gambar :
1. Analisa data hasil pada Tabel Interupsi
Dari hasil percobaan yang telah kelompok 7 lakukan pada percobaan kedua
yaitu pada tabel kedua menggunakan 3 interrupt terdapat 4 jenis mode interrupt.
Mode interrupt dalam praktikum ini mempunyai fungsi yang berbeda-beda interrupt
sendiri berfungsi sebagai penyala dalam suatu program dengan keadaan awal
program yang dikondisikan pada nyala lampu LED yang berlogika 0b11110000.
Falling edge merupakan interrupt yang diterapkan pada program dalam keadaan
input yang berlogika 1 menjadi 0. Pada hasil percobaan pada tabel diatas dapat
kita lihat bahwa pada kondisi awal LED adalah 0b11110000 yaitu ketika kondisi
low. Ketika diberikan kondisi raising pada input LED menyala 10101010;
11111111; 00000001; 11111111; 10000000; 11111111; 11110000. Kemudian
diberikan kondisi falling LED yang menyala 10101010; 11111111; 00000001;
11111111; 10000000; 11111111; 11110000. Pada program diberikan script
delay_ms(1000); yaitu agar nyala LED berganti setiap 1detik.
Raising edge merupakan interrupt yang diterapkan pada program dalam keadaan
input yang berlogika 0 menjadi 1. Pada hasil percobaan pada tabel diatas dapat
kita lihat bahwa pada kondisi LED 0b11110000 yaitu ketika kondisi low. Dan
ketika diberikan kondisi raising pada input LED menyala 00000001; 11111111;
10101010; 11111111; 10000000; 11111111; 11110000. Kemudian diberikan
kondisi falling LED yang menyala 00000001; 11111111; 10101010; 11111111;
10000000; 11111111; 11110000 nyala LED sama dengan ketika kondisi raising.
Pada program diberikan script delay_ms(1000); yaitu agar nyala LED berganti
setiap 1detik.
Any Change edge merupakan interrupt yang diterapkan pada program dalam
input keadaan input yang berlogika 0 menjadi 1 dan 1 menjadi 0. Pada hasil
percobaan pada tabel diatas dapat kita lihat bahwa pada kondisi LED
0b11110000 yaitu ketika kondisi low. Dan ketika diberikan kondisi raising pada
input LED menyala 10101010; 11111111; 00000001; 11111111; 10000000;
11111111; 11110000. Kemudian diberikan kondisi falling LED yang menyala
00000001; 11111111; 10101010; 11111111; 10000000; 11111111; 11110000.
Pada program diberikan script delay_ms(1000); yaitu agar nyala LED berganti
setiap 1detik.
Low level merupakan interrupt yang diterapkan pada program dalam kondisi
yang berlogika 0. Pada hasil percobaan pada tabel diatas dapat kita lihat bahwa
pada kondisi LED 10101010; 11111111 yaitu pada kondisi low. Dan ketika
diberikan kondisi raising pada input LED menyala 11110000. Kemudian
diberikan kondisi falling LED yang menyala 00000001; 11111111; 10000000;
11111111; 10101010; 11111111; 10101010; 11111111. Pada program diberikan
script delay_ms(1000); yaitu agar nyala LED berganti setiap 1detik.

2. Ketika ke tiga interupt diaktifkan secara bersamaan tuliskan urutan terjadinya


interupt
Pada saat ketiga interrupt diaktifkan secara bersamaan misalnya mode
interrupt yang digunakan yaitu Falling Edge. Maka pada saat toogle switch
belum dinyalakan yaitu pada kondisi low, LED akan menyala 0b11110000.
Kemudian saat toogle switch dinyalakan dari logika 0 menjadi 1, yaitu pada
kondisi Rising, LED akan menyala 10101010; 11111111; 00000001; 11111111;
10000000; 11111111; 11110000, yang menyala bergantian setiap 1 detik. Lalu
saat toogle switch dimatikan dari logika 1 menjadi 0, yaitu pada kondisi Faling,
LED akan menyala 10101010; 11111111; 00000001; 11111111; 10000000;
11111111; 11110000, yang menyala bergantian setiap 1 detik. Jadi saat ketiga
interrupt diaktifkan secara bersamaan, interrupt yang akan dijalankan terlebih
dahulu yaitu interrupt 0, lalu interrupt 1, dan kemudian interrupt 2. Jika pada
saat interrupt masih dalam keadaan sedang dijalankan atau masih belum selesai
mengeksekusi programnya, lalu toogle switch di ubah untuk mengganti interrupt
yang lainnya, maka tidak akan berpengaruh hingga program yang dijalankan
selesai.

E. KESIMPULAN

Interrupt adalah kondisi di mana pada saat program utama


dieksekusi/dikerjakan oleh CPU kemudian tiba-tiba berhenti untuk sementara waktu
karena ada rutin lain yang harus ditangani terlebih dahulu oleh CPU. Untuk
menggunakan fasilitas interrupt pada ATMega8535 kita harus melakukan inisialisasi
pada progam utama, agar dapat dibaca oleh mikrokontroler.
Dalam praktikum ke VII ini dengan menggunakan mode interrupsi ada
banyak perbedaan dengan mode-mode interrupsi, yaitu:
a. Falling Edge : program berubah ketika toogle switch dimatikan (Falling).
b. Rising Edge : program berubah ketika toogle switch dinyalakan (Raising)
c. Any Change : program berubah ketika toogle switch dimatikan dan toogle
switch dinyalakan
d. Low Level : program berubah ketika toogle switch masih kondisi awal belum
dinyalakan (Low)

F. DAFTAR PUSTAKA

`Lestari, Dyah, 2016. Bahan Ajar Mikroprosesor. Malang : Universitas Negeri Malang.

Anda mungkin juga menyukai