Interupsi ATMega dengan Codevision AVR (2)


Setelah kita bisa menggunakan interrupt dalam ATMega sekarang kita bisa menambahkan tidak hanya satu interupsi bisa tambah satu atau dua dengan mengaktifkan INT1 dan INT2. Dengan demikian kita bisa menambahkan 3 buah interrupt pada program utama.

Yang masih tetap harus diingat adalah settingan register GICR, GIFR MCUCR dan MCUCSR untuk mengatur mode2 Interrupt yang akan kita gunakan. Nah untuk memperjelasnya kita akan melakukan sebuah percobaan lagi, basicnya masih sama dengan program pertama, hanya sekarang kita menambahkan INT1 dengan mode falling edge.

Ketika terjadi interrupt dari INT1 maka nyala led akan berjalan terbalik dari program utama. Setting pada input PIND.3 juga harus disesuaikan dengan input tombol aktif high. Berikut adalah listing programnya

#include <mega16.h>
#include <delay.h>
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{

/*****************************************************

program ini dibuat oleh priyo harjiyono http://anotherorion.com

*****************************************************/

// Place your code here
unsigned char rr=0;
while(rr<5)
{
PORTA=0x0F;
delay_ms(100);
PORTA=0xf0;
delay_ms(100);
}

}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
unsigned char dd=0x80;
while(dd>=1)
{
PORTA=dd;
delay_ms(100);
dd=dd>>1;
}
}

// Declare your global variables here


void main(void)
{
// Declare your local variables here
unsigned char data=1;
// Input/Output Ports initialization
// Port A 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
PORTA=0x00;
DDRA=0x00;

BACA JUGA:   Input tombol dengan output LCD

// 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:   Menggunakan dot matrix atmega dengan codevision(2)

// 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: On
// INT1 Mode: Rising Edge
// INT2: Off
GICR|=0xC0;
MCUCR=0x0B;
MCUCSR=0x00;
GIFR=0xC0;

// 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=data;
delay_ms(100);
data=data<<1;
if(data==0){data=1;}
};
}

Anda bisa menambahkan INT2, menggunakan Any Change atau Low Mode dan memvariasikan outputnya.

Selamat mencoba




DMCA.com Protection Status

program interupsi sederhana ntala leddi CVavr (2), pengertian GICR MCUCR MCUCSR GIFT di cvavr (1)

Post You May Also Like

Tentang 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.
Tulisan ini dipublikasikan di sinau dan tag , , , , . Tandai permalink.

Tinggalkan Balasan

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