Interupsi ATmega dengan codevision AVR (1)


Setelah kita memahami cara kerja interupsi pada keluarga AVR ATMega dalam postingan ini, maka sekarang kita akan mencoba membuat program yang menggunakan pemanggilan rutin interupsi.

Interrupt yang akan kita gunakan adalah interrupt 0 atau INT0 yang berada pada PIND.2, ketika PIND.2 ditekan maka program akan menjalankan subrutin interupsi.

Program yang akan kita buat adalah program menyalakan LED dari PORTA.0 – PORTA.7 secara bergantian, dan ketika terjadi interupsi program akan menyalakan 4 LED di PORTA secara bergantian selama 5 x.

Program ini inspirasinya dari buku Pemrograman Bahasa C untuk Mikrokontroler ATMEGA 8535 karya M. Ary Heryanto dan Wisnu Adi P. Tentu saja teman2 masih bisa mengembangkannya sendiri sesuai selera teman2. Yang perlu diperhatikan ketika kita membuat new project di Codevision AVR pastikan anda telah mengenable External IRQ INT0 pada tab yang tersedia, mode yang saya gunakan adalah rising edge.

Berikut adalah listing programnya

/*this program inspired from pemrograman bahasa C
untuk mikrokontroler atmega 8535 dan telah mengalami
modifikasi sesuai selera penulis, silahkan modifikasi
sesuai selera temen2

trimakasih

priyo harjiyono
http://anotherorion.com

*/
#include <mega16.h>
#include <delay.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
unsigned char rr=0;
while(rr<5)
{
PORTA=0x0f;delay_ms(100);
PORTA=0xf0;delay_ms(100);
++rr;
}
}

BACA JUGA:   Membuat Papan Skor Counter Up/Down Codevision

// Declare your global variables here

void main(void)
{
// Declare your local variables here
unsigned char dt=1;
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0xFF;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

BACA JUGA:   Mikrokontrol dalam Komputer Terapan Jaringan

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x03;
MCUCSR=0x00;
GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm(“sei”)

while (1)
{
// Place your code here
PORTA=dt;delay_ms(10);
dt=dt<<1;
if(dt==0){dt=0x01;}
};
}

 

Selamat mencoba


cara menggunakan interupsi di cvavr ATMega16, contoh program interrupt cvavr, menggunakan internal interrupt atmega 8, contoh program interupt pada avr, interrupt internal codevision avr, maksud codevisionavr declaration unsigned char, listing program interupsi atmega8535, Memasang button atmega 16 interupsi, memvuat interupsi internal, intrupsi internal menggunakan avr pdf

Post You May Also Like

Post Author: anotherorion

Priyo Harjiyono, blogger kelahiran Cilacap yang kini menjadi warga Ngayogyakarta Hadiningrat, baginya blog adalah dunia untuk menciptakan mimpi2nya. Saat ini masih disibukkan sebagai pembelajar dalam dunia pendidikan.

Berikan tanggapan anda