External interrupt

External Interrupt PIN
      variable_name |=(1<<bit position); // To set a particular bit
      variable_name &=~(1<<bit position); // To clear a particular bit
    #include<avr/interrupt.h>
    sei(); or SREG|=(1<<I);
    #include<avr/interrupt.h>
    cli(); or SREG&=~(1<<I);
sei();   //SREG|=(1<<I);			    //Global interrupt enable
GICR |=(1<<INT0);						//External Interrupt Request 0 Enable
MCUCR|=(1<<ISC00)|(1<<ISC01);		  //The rising edge of INT0 generates an interrupt request
   void uptodown(void)
   {
      for(int16_t i=0;i<=7;i++){
          PORTC |=(1<<i);  _delay_ms(50);
          PORTC &=(~(1<<i));_delay_ms(50);
          }
  }
   void downtoup(void)
   {
      for(int16_t i=7;i>=0;i--){
          PORTC |=(1&lt;&lt;i); _delay_ms(50);
          PORTC &amp;=(~(1&lt;&lt;i)); _delay_ms(50);
          }
   }
 #include<avr/interrupt.h>
 ISR(INT0_vect)
 {
   ;//user defined code here
  }   
/************************************************************************************************
*************************************************************************************************
This program will set PORTC form up-to-down and down-to-up when external trigger to INT0 bit
************************************************************************************************
***********************************************************************************************/
#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
#include"int0.h"
uint16_t sample=0;
int main(void)
{
  DDRC=0xFF;			// port c for output
  int_int0(); 		//INT0 interrupt enable call
  while(1)
  {
    sample ? uptodown() : downtoup();
  }
  return 0;
}
ISR(INT0_vect)
{
   sample^=0x01;		//Toggle condition
}