DAFTAR ISI
1. Dasar Teori [kembali]
INTERUPSI ATMEGA 16
Interupsi adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti sejenak untuk melayani interupsi tersebut. Program yang dijalankan pada saat melayani interupsi disebut Interrupt Service Routine.
Pada sistem mikrokontroler yang sedang menjalankan programnya, saat terjadi interupsi , program akan berhenti sesaat, melayani interupsi tersebut dengan menjalankan program yang berada pada alamat yang ditunjuk oleh vektor dari interupsi yang terjadi hingga selesai dan kembali meneruskan program yang terhenti oleh interupsi tadi.
Meskipun memerlukan pengertian yang lebih mendalam, pengetahuan mengenai interupsi sangat membantu mengatasi masalah pemrograman mikroprosesor / mikrokontroler dalam hal menangani banyak peralatan input/output. Pengetahuan mengenai interupsi tidak cukup hanya dibahas secara teori saja, diperlukan contoh program yang konkrit untuk memahami. ATMEGA16 memiliki 21 buah sumber interupsi. Interupsi tersebut bekerja jika bit I pada Register status atau Status Register (SREG) dan bit pada masing-masing register bernilai 1.
Interupsi Eksternal
Pengaturan kondisi keadaan yang menyebabkan terjadinya interupsi ekternal diatur oleh registet MCUCR (MCU Control Register) tang terlihat seperti Gambar 4.1.
3. Rangkaian Simulasi [kembali]
4. Flowchart [kembali]
5. Listing Program [kembali]
#include <mega16.h> // pemanggilan fungsi pada atmega 16
#include <delay.h> // pemanggilan fungsi delay
interrupt [EXT_INT0] void ext_int0_isr(void) // mengaktifkan interupsi eksternal 0
{
PORTB=0xff; // Led hidup
delay_ms(100); // delay 100 ms
PORTB=0x00; // Led mati
delay_ms(100); // delay 100 ms
PORTB=0xff; // Led hidup
delay_ms(100); // delay 100 ms
PORTB=0x00; // Led mati
delay_ms(100); // delay 100 ms
PORTB=0xff; // Led hidup
delay_ms(100); // delay 100 ms
PORTB=0x00; // Led mati
delay_ms(100); // delay 100 ms
}
void main(void) // program utama
{
PORTB=0x00; // nilai awal portb '0'
DDRB=0xff; // port sebagai output
DDRD=0x00; // portd sebagai input
PORTD=0xff; // nilai awal portd '1'
GICR|=0x40; // mengaktifkan interupsi INT0
MCUCR=0x00; // logika '0' pada pin INT0 menyebabkan interupsi
GIFR=0x40; // mengaktifkan interupsi INT0
#asm("sei")
while (1) // program akan berulang, karena syarat while bernilai 1 (true)
{
}
}
7. Link Download [kembali]
<rangkaian simulasi>
<listing program>
<html>
Tidak ada komentar:
Posting Komentar