/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 10.06.2016
Author  : F4CG                            
Company : F4CG                            
Comments: 


Chip type           : ATmega16
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega16.h>
 #include <delay.h>

void ShowLed(void);
// Declare your global variables here

void main(void)
{
// Declare your local variables here
  char s;   
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTA=0x00;
DDRA=0xFF;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out 
// State7=P State6=P State5=P State4=P State3=P State2=0 State1=0 State0=0 
PORTB=0xF8; // 11111/000 aoiau n iiaoyaii/auoiau n ioe?i
DDRB=0x07;   //00000/111  aoiau /auoiau

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTC=0x00;
DDRC=0xFF;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
PORTD=0x00;
DDRD=0xFF;

// 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;

// 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: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// 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;
#asm("sei") // ?ac?aoaai aeiaaeuiua i?a?uaaiey
  while(1){          
  
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
			for(s=1;s<15;s++){
				PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00000001,delay_ms(20) ;  
				PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(50) ;
			}                                                   
			ShowLed();
			}       
		}
		if (PINB.3==1){
			delay_ms(100); 
			if (PINB.3==1){
			ShowLed();
			}  
		}           // Place your code here                                  
							  
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
			ShowLed();
			}
		}
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
			ShowLed();
			} 
		}
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
			ShowLed();
			} 
		}        
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
				ShowLed();
			} 
		}
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
				ShowLed();
			} 
		}     
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
				ShowLed();
			} 
		}      
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
				ShowLed();
			}
		}
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
				ShowLed();
			} 
		}       
		if (PINB.3==1){
			delay_ms(100); 
			if(PINB.3==1){
				ShowLed();
			} 
		}
	}; 
}; 
//==================================================================================================
void ShowLed(void){
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00000001,delay_ms(20) ;  //1 hfz  
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00000011,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00000111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00001111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00001111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00011111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b01111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000001,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000011,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00001111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00011111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b01111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000001,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000011,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00001111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00011111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00111111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b01111111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b00,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b01,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111111,delay_ms(20) ;  // vsya zashla
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111110,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111100,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11111000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11110000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11100000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b11000000,delay_ms(20) ; 
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111111,PORTA=0b10000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111110,PORTA=0b00000000,delay_ms(20) ; 
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111100,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11111000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11110000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11100000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b11000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b10000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111111,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111110,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11111100,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;  
	PORTB=0b11,PORTD=0b11111000,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11110000,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11100000,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b11000000,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b11,PORTD=0b10000000,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b10,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00000000,delay_ms(20) ;
	PORTB=0b00,PORTD=0b00000000,PORTC=0b00000000,PORTA=0b00000000; 
}
         