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:   Mikrokontrol dan 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:   [Buku] Mikrokontroler AVR ATMega8/32/16/8535 WinAVR

// 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 (3), menggunakan internal interrupt atmega 8 (2), contoh program interupt pada avr (2), interrupt internal codevision avr (2), contoh program interrupt cvavr (2), maksud codevisionavr declaration unsigned char (1), listing program interupsi atmega8535 (1), memvuat interupsi internal (1), menggeser led dengan interrupt pada cvavr (1), intrupsi internal menggunakan avr pdf (1)

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