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;
}
}

// Declare your global variables here

BACA JUGA:   Buku: Pengantar Elektronika dan Instrumentasi (Pendekatan Project Arduino & Android)

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:   Sensor cahaya pada ATMega dengan codevision AVR

// 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




DMCA.com Protection Status

cara menggunakan interupsi di cvavr ATMega16 (3), menggunakan internal interrupt atmega 8 (2), interrupt internal codevision avr (2), contoh program interupt pada avr (2), maksud codevisionavr declaration unsigned char (1), Memasang button atmega 16 interupsi (1), memvuat interupsi internal (1), menggeser led dengan interrupt pada cvavr (1), belajar memvuat tulisan led (1), menjalankan semua port Atmega8535 buat program codevision sub routing (1)

Post You May Also Like

Tinggalkan Balasan

Alamat surel Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *