#include <io.h>
#include <mega32a.h>
#include <delay.h>
  char x,d=50;
char read_key(void)
{
 
            if(PINA!=0XFF)
            {     
               delay_ms(30);
                if(!(PINA&0X01)) x=1;
                if(!(PINA&0X02)) x=2;
                if(!(PINA&0X04)) x=3;
                if(!(PINA&0X08)) x=4; 
            return x; 
            }
} 
 
void two_phase(void)
{
            PORTD=5;
            delay_ms(d);
            PORTD=6;
            delay_ms(d);
            PORTD=0x0a;
            delay_ms(d);
          PORTD=0x09;
            delay_ms(d);
            } 
 
void nimgam(void)
{
            PORTD=5;
            delay_ms(d);
            PORTD=0x0d;
            delay_ms(d);
            PORTD=9;
            delay_ms(d);
            PORTD=0xb;
            delay_ms(d);
            PORTD=0xa;
            delay_ms(d);
            PORTD=0xe;
            delay_ms(d);
            PORTD=6;
            delay_ms(d);
            PORTD=7;
            delay_ms(d);
}
void navasani(void)
{
 
            PORTD=7;
            delay_ms(d);
            PORTD=0xe;
            delay_ms(d);
            PORTD=0xb;
            delay_ms(d);
            PORTD=0xd;
            delay_ms(d);
 
}
 
void main(void)
{
DDRA=0X00;
PORTA=0XFF;
DDRD=0XFF;
while (1)
      { 
       read_key();
      if(x==1) navasani();
      if(x==2) nimgam();
      if(x==3) two_phase();       
      } 
 
}