Anda di halaman 1dari 18

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

PRAKTIKUM SISTEM MIKROKONTROLER

SEMESTER : GANJIL TAHUN : 2021/2022

BAB II

JUDUL BAB : INTERUPSI


NAMA : BINTANG AL RASYID
NIM : 205150300111069
TANGGAL PELAKSANAAN : 21 SEPTEMBER 2021
ASISTEN : - MUHAMMAD FATHAM MUBINA A.
- RANDY CHRISTIAN SAPUTRA

KOORDINATOR ASISTEN : RANDY CHRISTIAN SAPUTRA


DOSEN PENGAMPU : AGUNG SETIA BUDI, S.T., M.T., Ph.D.

Pengesahan
Tanggal:
Asisten
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

BAB : BASIC INPUT/OUTPUT


NAMA : BINTANG AL RASYID
NIM : 205150300111069
TANGGAL : 07/09/2021
ASISTEN : - MUHAMMAD FATHAM MUBINA A
- RANDY CHRISTIAN SAPUTRA
TUGAS / LAPORAN

Percobaan 2.1: Tanpa Interupsi


A. Source Code
Percobaan2.1.c
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #include <avr/interrupt.h>
4 #define F_CPU 1000000UL
5 #define LED PORTC
6 #define LEDDir DDRC
7 int main(void)
8 {
9 LEDDir = 0xFF;
10 LED = 0xFF;
11 DDRD = 0x00;
12 PORTD = 0xFF;
13 while (1)
14 {
15 LED = 0b00000001; _delay_ms(1000);
16 LED = 0b00000010; _delay_ms(1000);
17 LED = 0b00000100; _delay_ms(1000);
18 LED = 0b00001000; _delay_ms(1000);
19 LED = 0b00010000; _delay_ms(1000);
20 LED = 0b00100000; _delay_ms(1000);
21 LED = 0b01000000; _delay_ms(1000);
22 LED = 0b10000000; _delay_ms(1000);
23 if(PIND == 0b11110111){
24 LED = 0xF0; _delay_ms(1000);
25 }
26 }
27 }

B. Penjelasan Kode
Percobaan2.1.c
1 Memanggil library untuk input output.
2 Memanggil library delay.
3 Memanggil library untuk interrupt.
4 Menggunakan internal clock 1MHz.
5 Mendefine LED sebagai PORTC.
6 Mendefine LEDDir sebagai DDRC.
7 Fungsi utama program.
8 Buka kurawa fungsi utama.
9 Inisialisasi PORTC sebagai keluaran.
10 Memberi nilai awal PORTC = 1.
11 Inisialisasi PORTD sebagai input.
12 Memberi nilai awal PORTD = 1.
13 Fungsi perulangan while.
14 Buka kurawa perulangan while.
15 Inisiasi nyala LedBar pada PIN C0 dan memberi delay 1 s
16 Inisiasi nyala LedBar pada PIN C1 dan memberi delay 1 s
17 Inisiasi nyala LedBar pada PIN C2 dan memberi delay 1 s
18 Inisiasi nyala LedBar pada PIN C3 dan memberi delay 1 s
19 Inisiasi nyala LedBar pada PIN C4 dan memberi delay 1 s
20 Inisiasi nyala LedBar pada PIN C5 dan memberi delay 1 s
21 Inisiasi nyala LedBar pada PIN C6 dan memberi delay 1 s
22 Inisiasi nyala LedBar pada PIN C7 dan memberi delay 1 s
23 Inisiasi Seleksi Kondisi jika Push 1 yang terhubung pada PORT D3 ditekan
24 Jika seleksi kondisi terpenuhi, maka Nyala LedBar hanya pada PIN C4-C7 dan
delay 1 s
25 Tutup Kurawal seleksi kondisi
26 Tutup kurawal perulangan while
27 Tutup kurawal fungsi main
C. Screenshot Hasil Simulasi
- Nyala LED setelah program dijalankan

- Nyala LED setelah nyala LED C7 dan ketika PUSH1 ditekan


D. Analisis 2.1
- Ceritakan bagaimana urutan nyala LedBar setelah program diisikan pada
mikrokontroler dan simulasi dijalankan.
Jawab: LED bergantian menyala selama 1 detik dari bit terkecil ke bit
terbesar (PIN C0-PIN C7).

- Tekan dan tahan Push 1 (terhubung ke D3) hingga LedBar bagian atas selesai
menyala. Ceritakan bagaimana pola nyala LedBar pada saat switch ditekan.
Jawab: Ketika Push 1 ditekan dan ditahan nyala LedBar tidak terpengaruhi
oleh trigger yang diberikan push button untuk hanya menyalakan lampu
LedBar pada pin C4-C7 saja

- Kode program baris ke berapakah yang berfungsi untuk memeriksa input dan
mengubah pola nyala LedBar saat Push 1 ditekan?
Jawab: Kode Program baris 23 adalah kode program yang berfungsi untuk
memeriksa input dan mengubah pola nyala LedBar saat Push 1 ditekan, karena
pada program tersebut dilakukan inisiasi seleksi kondisi ketika PIN D3 berada
pada kondisi active-low.

- Tekan Push bit 3 sekali lagi dalam waktu singkat dan tanpa ditahan. Ulagi
beberapa kali untuk memastikan. Dapatkah mikrokontroler menjalankan kode
program pada soal no 3 seketika pada saat switch ditekan? Jelaskan.
Jawab: Ketika Push bit 3 ditekan dalam waktu singkat tanpa ditahan sesaat
setelah lampu LedBar pin 7 menyala, nyala lampu LedBar yang tampil hanya
pada LedBar pin C4-C7 saja. Hal ini dapat terjadi karena dalam kode program
yang telah dibuat seleksi kondisi ini mendeklarasikan hal tersebut. Seleksi
kondisi ini pun hanya dapat terealisasi secara sequensial atau benar-benar
tepat setelah perulangan while berada pada tahap terakhir perulangannya yaitu
nyala Pin C7 pada LedBar.
Percobaan 2.2: Interupsi
A. Source Code
Percobaan2.2.c
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #include <avr/interrupt.h>
4 #define F_CPU 1000000UL
5 #define LED PORTC
6 #define LEDDir DDRC
7 int main(void)
8 {
9 LEDDir = 0xFF;
10 LED = 0xFF;
11 DDRD = 0x00;
12 PORTD = 0xFF;
13 GICR = 1<<INT1;
14 MCUCR = 1<<ISC01 | 1<<ISC00 | 1<<ISC10 | 1<<ISC11;
15 sei();
16 while (1)
17 {
18 LED = 0b00000001; _delay_ms(1000);
19 LED = 0b00000010; _delay_ms(1000);
20 LED = 0b00000100; _delay_ms(1000);
21 LED = 0b00001000; _delay_ms(1000);
22 LED = 0b00010000; _delay_ms(1000);
23 LED = 0b00100000; _delay_ms(1000);
24 LED = 0b01000000; _delay_ms(1000);
25 LED = 0b10000000; _delay_ms(1000);
26 }
27 }
28 ISR(INT1_vect)
29 {
30 LED = 0xF0; _delay_ms(1000);
31 }

B. Penjelasan Kode
Percobaan2.2.c
1 Memanggil library untuk input output.
2 Memanggil library delay.
3 Memanggil library untuk interrupt.
4 Menggunakan internal clock 1MHz.
5 Mendefine LED sebagai PORTC.
6 Mendefine LEDDir sebagai DDRC.
7 Fungsi utama program.
8 Buka kurawa fungsi utama.
9 Inisialisasi PORTC sebagai keluaran.
10 Memberi nilai awal PORTC = 1.
11 Inisialisasi PORTD sebagai input.
12 Memberi nilai awal PORTD = 1.
13 Deklarasi nilai GICR yang mengaktifkan INT 1 dengan memasukkan nilai 1
14 Memasukkan nilai MCUCR dengan setting nilai ISC untuk INT 1 akan memberi
interrupt request saat keadaan tepi naik
15 Pemanggilan fungsi untuk mengaktifkan Interupt
16 Inisiasi perulangan while
17 Buka kurawal perulangan while
18 Inisiasi nyala LedBar pada PIN C0 dan memberi delay 1 s
19 Inisiasi nyala LedBar pada PIN C1 dan memberi delay 1 s
20 Inisiasi nyala LedBar pada PIN C2 dan memberi delay 1 s
21 Inisiasi nyala LedBar pada PIN C3 dan memberi delay 1 s
22 Inisiasi nyala LedBar pada PIN C4 dan memberi delay 1 s
23 Inisiasi nyala LedBar pada PIN C5 dan memberi delay 1 s
24 Inisiasi nyala LedBar pada PIN C6 dan memberi delay 1 s
25 Inisiasi nyala LedBar pada PIN C7 dan memberi delay 1 s
26 Tutup Kurawal fungsi while
27 Tutup kurawal fungsi main
28 Inisiasi Fungsi Interrupt pada INT 1
29 Buka kurawal fungsi interrupt
30 Deklarasi Kondisi interrupt PIN C4-C7 menyala bersamaan dengan delay 1 s
31 Tutup kurawal fungsi interrupt

C. Screenshot Hasil Simulasi

- Nyala LED setelah Program dijalankan

- Nyala LED saat Push 1 ditekan


D. Analisis 2.2
- Ceritakan bagaimana pola nyala LedBar setelah program diisikan pada
mikrokontroler
Jawab: LED bergantian menyala selama 1 detik dari bit terkecil ke bit
terbesar (PIN C0-PIN C7).

- Tekan Push 1 (terhubung ke D3). Ceritakan bagaimana pola nyala LedBar


pada saat switch ditekan
Jawab: Ketika Push 1 ditekan, nyala lampu pada PIN C4-C7 menyala
bersamaan seketika.

- Kode Program baris ke berapakah yang berfungsi untuk mengubah pola nyala
LedBar?
Jawab: Kode Program baris ke 28 adalah kode yang berfungsi untuk
mengubah pola nyala LedBar, karena baris kode ini merupakan inisiasi seleksi
kondisi.

- Tekan Push 1 (terhubung ke D3) sekali lagi. Dapatkan mikrokontroler


menjalankan kode program pada soal no.3 seketika pada saat Push 1 ditekan
Jelaskan
Jawab: Ketika Push 1 ditekan sekali lagi, mikrokontroler masih dapat
menjalankan program dikarenakan pada program ini fungsi Interupsi telah
diaktifkan sehingga nyala lampu tidak perlu menunggu sekuensial untuk
menjalankan program pada baris ke 28 yang mana program ini berada dalam
fungsi interupsi.

- Perhatikan pergerakan LedBar dengan seksama, kemudian tekan Push 1.


LedBar keberapakah yang menyala sebelum Push 1 ditekan?
Jawab: Untuk menjawab pertanyaan ini, sebelum Push 1 ditekan nyala LED
berada pada PIN C2

- Pada saat mikrokontroler selesai mengerjakan program pada soal no. 5,


apakah LedBar yang menyala akan melanjutkan nyala LedBar sebelum switch
bit 3 ditekan?
Jawab: Setelah push 1 ditekan dan PIN C4-C7 menyala bersamaan, program
melanjutkan nyala LED pada PIN C2, yang menandakan bahwa meskipun ada
interupsi nyala LedBar masih akan tetap sekuensial tergantung kondisi lampu
sebelum Push 1 ditekan untuk memberikan Interupsi
Percobaan 2.3: Dua Interupsi
A. Source Code
Percobaan2.3.c
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #include <avr/interrupt.h>
4 #define F_CPU 1000000UL
5 #define LED PORTC
6 #define LEDDir DDRC
7 int main(void)
8 {
9 LEDDir = 0xFF;
10 LED = 0xFF;
11 DDRD = 0x00;
12 PORTD = 0xFF;
13 GICR = 1<<INT0 | 1<<INT1;
14 MCUCR = 1<<ISC01 | 1<<ISC00 | 1<<ISC10 | 1<<ISC11;
15 sei();
16 while (1)
17 {
18 LED = 0b00000001; _delay_ms(1000);
19 LED = 0b00000010; _delay_ms(1000);
20 LED = 0b00000100; _delay_ms(1000);
21 LED = 0b00001000; _delay_ms(1000);
22 LED = 0b00010000; _delay_ms(1000);
23 LED = 0b00100000; _delay_ms(1000);
24 LED = 0b01000000; _delay_ms(1000);
25 LED = 0b10000000; _delay_ms(1000);
26 }
27 }
28 ISR(INT0_vect)
29 {
30 LED = 0x0F; _delay_ms(1000);
31 }
32 ISR(INT1_vect)
33 {
34 LED = 0xF0; _delay_ms(1000);
35 }

B. Penjelasan Kode
Percobaan2.3.c
1 Memanggil library untuk input output.
2 Memanggil library delay.
3 Memanggil library untuk interrupt.
4 Menggunakan internal clock 1MHz.
5 Mendefine LED sebagai PORTC.
6 Mendefine LEDDir sebagai DDRC.
7 Fungsi utama program.
8 Buka kurawa fungsi utama.
9 Inisialisasi PORTC sebagai keluaran.
10 Memberi nilai awal PORTC = 1.
11 Inisialisasi PORTD sebagai input.
12 Memberi nilai awal PORTD = 1.
13 Deklarasi nilai GICR yang mengaktifkan INT 0 dan INT 1 dengan memasukkan
nilai 1
14 Memasukkan nilai MCUCR dengan setting nilai ISC untuk INT 1 akan memberi
interrupt request saat keadaan tepi naik
15 Pemanggilan fungsi untuk mengaktifkan Interupt
16 Inisiasi perulangan while
17 Buka kurawal perulangan while
18 Inisiasi nyala LedBar pada PIN C0 dan memberi delay 1 s
19 Inisiasi nyala LedBar pada PIN C1 dan memberi delay 1 s
20 Inisiasi nyala LedBar pada PIN C2 dan memberi delay 1 s
21 Inisiasi nyala LedBar pada PIN C3 dan memberi delay 1 s
22 Inisiasi nyala LedBar pada PIN C4 dan memberi delay 1 s
23 Inisiasi nyala LedBar pada PIN C5 dan memberi delay 1 s
24 Inisiasi nyala LedBar pada PIN C6 dan memberi delay 1 s
25 Inisiasi nyala LedBar pada PIN C7 dan memberi delay 1 s
26 Tutup Kurawal fungsi while
27 Tutup kurawal fungsi main
28 Inisiasi Fungsi Interrupt pada INT 0
29 Buka kurawal fungsi interrupt
30 Deklarasi Kondisi interrupt PIN C0-C3 menyala bersamaan dengan delay 1 s
31 Tutup kurawal fungsi interrupt
32 Inisiasi Fungsi Interrupt pada INT 1
33 Buka kurawal fungsi interrupt
34 Deklarasi Kondisi interrupt PIN C4-C7 menyala bersamaan dengan delay 1 s
35 Tutup kurawal fungsi interrupt

C. Screenshot Hasil Simulasi


- Nyala LED setelah Program dijalankan
- Nyala LED saat Push 1 ditekan

- Nyala LED saat Push 2 ditekan

D. Analisis 2.3
- Ceritakan bagaimana pola nyala LedBar setelah program diisikan pada
mikrokontroler
Jawab: LED bergantian menyala selama 1 detik dari bit terkecil ke bit
terbesar (PIN C0-PIN C7).

- Tekan Push 1. Ceritakan bagaimana pola nyala LedBar pada saat switch
ditekan
Jawab: Ketika Push 1 ditekan, nyala lampu pada PIN C4-C7 menyala
bersamaan seketika.

- Tunjukkan kode program baris ke berapakah yang mengubah pola nyala


LedBar saat Push 1 ditekan
Jawab: Kode Program baris ke 32 adalah kode yang berfungsi untuk
mengubah pola nyala LedBar, karena baris kode ini merupakan inisiasi fungsi
interupsi INT 1 yang telah dideklarasi pada Push 1
- Tekan Push 2. Ceritakan bagaimana pola nyala LedBar pada saat switch
ditekan
Jawab: Ketika Push 2 ditekan, nyala lampu pada PIN C0-C3 menyala
bersamaan seketika.

- Tunjukkan kode program baris ke berapakah yang mengubah pola nyala


LedBar saat Push 2 ditekan
Jawab: Kode Program baris ke 28 adalah kode yang berfungsi untuk
mengubah pola nyala LedBar, karena baris kode ini merupakan inisiasi fungsi
interupsi INT 0 yang telah dideklarasi pada Push 2

- Hentikan simulasi. Sambungkan pin D2 dan D3 sehingga terlihat seperti pada


Gambar 8. Tekan Push 1 atau Push 2. Kode program manakan yang
dikerjakan dahulu oleh mikrokontroler saat switch ditekan? Ulangi beberapa
kali untuk memastikan kode program yang dijalankan
Jawab: Ketika pin D2 dan D3 disambungkan lalu Push 1 ataupun Push 2
ditekan yang akan dijalankan terlebih dahulu ialah program Interrupt pada INT
0 yaitu lampu pada PIN C0-C3 akan menyala bersamaan lalu INT 1 yaitu
lampu pada PIN C4-C7 akan menyala bersamaan.

Kesimpulan
Percobaan 2.1 – Pada percobaan ini ditunjukkan kegunaan push button yang
kemudian fungsinya akan ditingkatkan pada percobaan selanjutnya. Pada
percobaan ini, push button menjadi trigger seleksi kondisi untuk menunjukkan
kondisi ketika LedBar pada PIN C4-C7 menyala secara bersamaan.

Percobaan 2.2 – Pada percobaan ini diperlihatkan cara untuk mendeklarasikan


trigger interrupt dan cara mengaktifkan interrupt. Interrupt dapat dideklarasikan
dengan memberi nilai pada GICR dan MCUCR untuk cara triggernya. Lalu
diinisiasi fungsi sei() untuk memanggil fungsi interrupt pada program yang akan
dijalankan.

Percobaan 2.3 – Pada percobaan ini diperlihatkan kondisi jika terdapat 2 interupsi
yang berbeda dalam sebuah program. Pada percobaan ini dapat diketahui bahwa
ATMega 16 memiliki urutan prioritas dalam menjalankan interupsi yakni INT 0
terlebih dahulu lalu dilanjutkan INT 1 & INT 2.
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

BAB : INTERUPSI
NAMA : BINTANG AL RASYID
NIM : 205150300111069
TANGGAL : 21/09/2021
ASISTEN : - MUHAMMAD FATHAM MUBINA A
- RANDY CHRISTIAN SAPUTRA

1. Pada percobaan ini, kode program baris keberapakah yang mengatur


register untuk interupsi eksternal? Berapakah nilai setiap bit dari register
tersebut? Jelaskan apa arti nilai pada register tersebut.
Jawab: Pada percobaan 2.3 kode program yang mengatur nilai register
eksternal terdapat pada baris 17 & 18. Pada baris 17, program mengatur
nilai GICR untuk mendeklarasikan apakah INT diaktifkan atau tidak, pada
baris ini INT 0 & INT 1 diberi nilai 1 yang berarti bahwa INT 0 & INT 1
akan diaktifkan. Lalu pada baris 18, program mengatur nilai register
MCUCR pada Register ISC00 & ISC01 yang merupakan bagian dari
register INT 0 serta Register ISC10 & ISC11 yang merupakan bagian dari
register INT 1 diberi nilai 1 1 yang artinya program hanya akan
memberukan interrupt request ketika terjadi tepi naik atau perubahan dari
push button bernilai 0 menjadi 1.

2. Buatlah kode program yang menggunakan interupsi eksternal dengan


pemicuan yang berbeda-beda. Tunjukkan bahwa program tersebut
dikerjakan saat pemicuan sesuai dengan kode program.
Jawab:

Source Code
Tugas2.c
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #include <avr/interrupt.h>
4 #define F_CPU 1000000UL
5 #define LED PORTC
6 #define LEDDir DDRC
7 int main(void)
8 {
9 LEDDir = 0xFF;
10 LED = 0xFF;
11 DDRD = 0x00;
12 PORTD = 0xFF;
13 GICR = 1<<INT0 | 1<<INT1;
14 MCUCR = 0<<ISC01 | 1<<ISC00 | 1<<ISC10 | 0<<ISC11;
15 sei();
16 while (1)
17 {
18 LED = 0b00000001; _delay_ms(1000);
19 LED = 0b00000010; _delay_ms(1000);
20 LED = 0b00000100; _delay_ms(1000);
21 LED = 0b00001000; _delay_ms(1000);
22 LED = 0b00010000; _delay_ms(1000);
23 LED = 0b00100000; _delay_ms(1000);
24 LED = 0b01000000; _delay_ms(1000);
25 LED = 0b10000000; _delay_ms(1000);
26 }
27 }
28 ISR(INT0_vect)
29 {
30 LED = 0x0F; _delay_ms(1000);
31 }
32 ISR(INT1_vect)
33 {
34 LED = 0xF0; _delay_ms(1000);
35 }

Penjelasan Kode
Tugas2.c
1 Memanggil library untuk input output.
2 Memanggil library delay.
3 Memanggil library untuk interrupt.
4 Menggunakan internal clock 1MHz.
5 Mendefine LED sebagai PORTC.
6 Mendefine LEDDir sebagai DDRC.
7 Fungsi utama program.
8 Buka kurawa fungsi utama.
9 Inisialisasi PORTC sebagai keluaran.
10 Memberi nilai awal PORTC = 1.
11 Inisialisasi PORTD sebagai input.
12 Memberi nilai awal PORTD = 1.
13 Deklarasi nilai GICR yang mengaktifkan INT 0 dan INT 1 dengan memasukkan
nilai 1
14 Memasukkan nilai MCUCR dengan setting nilai ISC untuk INT 1 akan memberi
interrupt request saat keadaan terdapat perubahan logika, dan setting nilai ISC
untuk INT 0 sehingga akan memberi interrupt request pada saat keadaan tepi
turun
15 Pemanggilan fungsi untuk mengaktifkan Interupt
16 Inisiasi perulangan while
17 Buka kurawal perulangan while
18 Inisiasi nyala LedBar pada PIN C0 dan memberi delay 1 s
19 Inisiasi nyala LedBar pada PIN C1 dan memberi delay 1 s
20 Inisiasi nyala LedBar pada PIN C2 dan memberi delay 1 s
21 Inisiasi nyala LedBar pada PIN C3 dan memberi delay 1 s
22 Inisiasi nyala LedBar pada PIN C4 dan memberi delay 1 s
23 Inisiasi nyala LedBar pada PIN C5 dan memberi delay 1 s
24 Inisiasi nyala LedBar pada PIN C6 dan memberi delay 1 s
25 Inisiasi nyala LedBar pada PIN C7 dan memberi delay 1 s
26 Tutup Kurawal fungsi while
27 Tutup kurawal fungsi main
28 Inisiasi Fungsi Interrupt pada INT 0
29 Buka kurawal fungsi interrupt
30 Deklarasi Kondisi interrupt PIN C0-C3 menyala bersamaan dengan delay 1 s
31 Tutup kurawal fungsi interrupt
32 Inisiasi Fungsi Interrupt pada INT 1
33 Buka kurawal fungsi interrupt
34 Deklarasi Kondisi interrupt PIN C4-C7 menyala bersamaan dengan delay 1 s
35 Tutup kurawal fungsi interrupt

Screenshot Hasil Simulasi

- Nyala LedBar ketika Push 1 berada pada posisi 1 (Kondisi Awal)

- Nyala LedBar ketika Push 1 ditekan sehingga terjadi Trigger


Perubahan Logika
- Nyala LedBar ketika Push 2 berada pada posisi 1 (kondisi awal)

- Nyala LedBar ketika Push 2 ditekan menjadi posisi 0 (Trigger Tipe


Turun)

Analisis Kode
Program ini diatur untuk menguji berbagai trigger untuk memanggil
Interrupt, pada INT 0 nilai ISC01 bernilai 0 dan ISC00 bernilai 1 sehingga Push 2
akan memberi interrupt request ketika push buttonnya ditekan dan ditahan,
dikarenakan pada saat itu dilakukan tepi turun terjadi yakni perubahan nilai logika
dari 1 ke 0. Sebaliknya, pada INT 1 nilai ISC10 bernilai 1 dan ISC11 bernilai 0
sehingga, INT 2 akan terpanggil ketika terjadi perubahan logika pada Push 1 yang
artinya hanya perlu menekan Push 1 untuk memanggil interrupt ini karena tidak
memerhatikan apakah itu tepi naik ataupun turun.
3. Mengapa pada percobaan 2.3 selalu kode program untuk INT0 yang
dijalankan terlebih dahulu? Hubungkan penjelasan Anda dengan fungsi
tabel interrupt vector pada datasheet Atmega 16.
Jawab:
Pada Atmega16 ada prioritas dalam menjalankan sebuah program
sebagaimana interupsi yang lebih diproritaskan ketimbah program
sekuensial, maka di dalam interupsi tentu juga terdapat prioritas interupsi
yang mana yang akan dijalankan dahulu jika terdapat kondisi 2 interupsi
yang diajukan bersamaan, Hal inilah yang menyebabkan mengapa INT 0
selalu dijalankan terlebih dahulu karena secara default Atmega 16 telah
diatur untuk meletakkan INT 0 pada tingkatan prioritas lebih di atas
dibanding INT 1. Hal ini pun dapat dilihat pada datasheet Atmega 16.

Anda mungkin juga menyukai