LAB PTE-3
Kelompok 7 :
1. Dwi Adi Putra M. R. (160534611635)
2. Izzulfi Wahyu Ramadhan (160534611662)
3. Nafalia Kurniawati (160534611621)
4. Rama Deyanto (160534611671)
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
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
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.
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
Script Interupt 1
#include <mega8535.h>
#include <delay.h>
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>
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.
E. KESIMPULAN
F. DAFTAR PUSTAKA
`Lestari, Dyah, 2016. Bahan Ajar Mikroprosesor. Malang : Universitas Negeri Malang.