
#include <mega16.h>
#include <delay.h>

void main(void)
{
int i;

DDRA=0x00;
DDRB=0x00; 

PORTA=0xFF;
PORTB=0xFF;   


DDRC=0xFF;
DDRD=0xFF;

for(;;)
{ 
if (PINB.0==0)	
{
for (i = 1; i <=3; i++)  
{
PORTC.0 = 1;
delay_ms (30);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (30);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (30);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (30);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (30);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (30);
PORTD.4 = 0;
PORTD.3 = 1;
delay_ms (30);
PORTD.3 = 0;
PORTD.2 = 1;
delay_ms (30);
PORTD.2 = 0;
PORTD.1 = 1;
delay_ms (30);
PORTD.1 = 0;
PORTD.0 = 1;
delay_ms (30);
PORTD.0 = 0;
}
for (i = 1; i <=3; i++)  
{
PORTC.0 = 1;
delay_ms (10);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (10);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (10);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (10);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (10);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (10);
PORTD.4 = 0;
PORTD.3 = 1;
delay_ms (10);
PORTD.3 = 0;
PORTD.2 = 1;
delay_ms (10);
PORTD.2 = 0;
PORTD.1 = 1;
delay_ms (10);
PORTD.1 = 0;
PORTD.0 = 1;
delay_ms (10);
PORTD.0 = 0;
}
for (i = 1; i <=3; i++)  
{
PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (5);
PORTD.4 = 0;
PORTD.3 = 1;
delay_ms (5);
PORTD.3 = 0;
PORTD.2 = 1;
delay_ms (5);
PORTD.2 = 0;
PORTD.1 = 1;
delay_ms (5);
PORTD.1 = 0;
PORTD.0 = 1;
delay_ms (5);
PORTD.0 = 0;
} 
//=========================================
for (i = 1; i <=3; i++)  
{
PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (5);
PORTD.4 = 0;
PORTD.3 = 1;
delay_ms (5);
PORTD.3 = 0;
PORTD.2 = 1;
delay_ms (5);
PORTD.2 = 0;
PORTD.1 = 1;
delay_ms (5);
PORTD.1 = 0;
PORTD.0 = 1;



PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (5);
PORTD.4 = 0;
PORTD.3 = 1;
delay_ms (5);
PORTD.3 = 0;
PORTD.2 = 1;
delay_ms (5);
PORTD.2 = 0;
 PORTD.1 = 1;

            
PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (5);
PORTD.4 = 0;
PORTD.3 = 1;
delay_ms (5);
PORTD.3 = 0; 
PORTD.2 = 1;

              
PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 0;
PORTD.4 = 1;
delay_ms (5);
PORTD.4 = 0;
PORTD.3 = 1;


PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 0;
PORTD.4 = 1;

PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (5);
PORTC.3 = 0;
PORTC.4 = 1;
delay_ms (5);
PORTC.4 = 1;


PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;
delay_ms (5);
PORTC.2 = 0;
PORTC.3 = 1;


               

PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;
delay_ms (5);
PORTC.1 = 0;
PORTC.2 = 1;




PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 0;
PORTC.1 = 1;




PORTC.0 = 1;
delay_ms (5);
PORTC.0 = 1;


for (i = 1; i <=3; i++)  
{

PORTC.4 = 1;
delay_ms (10);
PORTC.4 = 0;
PORTC.3 = 1;
delay_ms (10);
PORTC.3 = 0;
PORTC.2 = 1;
delay_ms (10);
PORTC.2 = 0;
PORTC.1 = 1;
delay_ms (10);
PORTC.1 = 0;
PORTC.0 = 1;
delay_ms (10);
PORTC.0 = 0;
PORTD.1 = 1; 
delay_ms (10);
PORTD.1 = 0;
PORTD.2 = 1;
delay_ms (10);
PORTD.2 = 0;
PORTD.3 = 1;
delay_ms (10);
PORTD.3 = 0;
PORTD.4 = 1;
delay_ms (10);
PORTD.4 = 0;








           
PORTC.0 = 1;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 1;
PORTC.4 = 1;
PORTD.5 = 1; 
PORTD.4 = 1;
PORTD.3 = 1;
PORTD.2 = 1;
PORTD.1 = 1;
PORTD.0 = 1;
delay_ms (8);
PORTC.0 = 0;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 0;
PORTC.4 = 0;
PORTD.5 = 0; 
PORTD.4 = 0;
PORTD.3 = 0;
PORTD.2 = 0;
PORTD.1 = 0;
PORTD.0 = 0;




}
for (i = 1; i <=2; i++)  
{
PORTC.0 = 0;
PORTD.4 = 1;
delay_ms (10);
PORTD.4 = 0;
PORTD.2 = 1;
delay_ms (10);
PORTD.2 = 0;
PORTD.3 = 1;
delay_ms (10);
PORTD.3 = 0; 
delay_ms (50);
PORTC.4 = 1;
delay_ms (10);
PORTC.4 = 0;
PORTC.5 = 1;
delay_ms (10);
PORTC.5 = 0;
delay_ms (10);
PORTC.2 = 1;
delay_ms (10);
PORTC.2 = 0;
PORTC.3 = 1;
delay_ms (10);
PORTC.3 = 0; 
delay_ms (50);

for (i = 1; i <=2; i++)  
{
PORTD.5 = 1;
PORTD.4 = 1;
delay_ms (10);
PORTD.5 = 0;
PORTD.4 = 0;
delay_ms (20);
PORTD.2 = 1;
PORTD.3 = 1;
delay_ms (10);
PORTD.2 = 0;
PORTD.3 = 0; 
PORTC.5 = 1;
PORTC.4 = 1;
delay_ms (10);
PORTC.5 = 0;
PORTC.4 = 0;
delay_ms (20);
PORTC.2 = 1;
PORTC.3 = 1;
delay_ms (10);
PORTC.2 = 0;
PORTC.3 = 0;
}
}
}
};
}
}