//CPU - ATMEGA 32 //clock - 1MHz /*---------------------------------------------------------------- -----------------HEADER FILES------------------------------------- -----------------------------------------------------------------*/ #include //header files #include #define sbi(x,y) x |= _BV(y) //set bit - using bitwise OR operator #define cbi(x,y) x &= ~(_BV(y)) //clear bit - using bitwise AND operator #define OVER 50 //max till 65535; for delay #define TIMER2_ON TCCR2 = 0x05 //101-->clk/256.... 100-->clk/128 #define TIMER2_OFF TCCR2 = 0x00 /*---------------------------------------------------------------- -----------------FUNCTIONS--------------------------------------- -----------------------------------------------------------------*/ unsigned int time=0; unsigned char flag; void init_ports() { DDRD = 0xFF; //int0 & int1 on PD2,PD3 PORTD = 0; flag = 0; sbi(PORTD,0); cbi(PORTD,1); } //------------------------INT------------------------------------ void init_int() { SREG = 0x80; //global interrupt enable TIMER2_ON; TCNT2 = 0; TIMSK = 0x40;//timer0 ovf & comp enable, } ISR(TIMER2_OVF_vect) { time++; if(time == OVER) { time = 0; if(flag) { sbi(PORTD,0); cbi(PORTD,1); } else { cbi(PORTD,0); sbi(PORTD,1); } flag = ~flag; } } ---------------------------------------------------------------- -----------------MAIN FUNCTION------------------------------------ -----------------------------------------------------------------*/ int main() //main function { init_ports(); init_int(); for(;;) { } return 0; }