/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.5 Professional
Automatic Program Generator
 Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 10.07.2008
Author  : F4CG                            
Company : F4CG                            
Comments: 


Chip type           : ATmega16
Program type        : Application
Clock frequency     : 8,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256
*****************************************************/

#include <mega16.h>
#include <DELAY.H> 

#define SET_B2 |=(1<<2)  //Aeoiaua ii?aaaeaiey
#define SET_B3 |=(1<<3)  //Aeoiaua ii?aaaeaiey
#define SET_B4 |=(1<<4)  //Aeoiaua ii?aaaeaiey

#define CLR_B2 &=~(1<<2) //Aeoiaua ii?aaaeaiey
#define CLR_B3 &=~(1<<3) //Aeoiaua ii?aaaeaiey
#define CLR_B4 &=~(1<<4) //Aeoiaua ii?aaaeaiey

#define digit1_ON PORTC SET_B2 //Ii?aaaeaiea aey aee??aiey oeo?u 1
#define digit2_ON PORTC SET_B3 //Ii?aaaeaiea aey aee??aiey oeo?u 2
#define digit3_ON PORTC SET_B4 //Ii?aaaeaiea aey aee??aiey oeo?u 3

#define digit1_OFF PORTC CLR_B2 //Ii?aaaeaiea aey ioee??aiey oeo?u 1
#define digit2_OFF PORTC CLR_B3 //Ii?aaaeaiea aey ioee??aiey oeo?u 2
#define digit3_OFF PORTC CLR_B4 //Ii?aaaeaiea aey ioee??aiey oeo?u 3

flash char digits[10]={         //Iauyaeai iannea a 10oeo?. Caienai ai yia?aiiacaaeneio? iaiyou
0b11111100,  //0
0b01100000,  //1
0b11011010,  //2 
0b11110010,  //3
0b01100110,  //4
0b10110110,  //5
0b10111110,  //6
0b11100000,  //7
0b11111110,  //8
0b11110110  //9 
};  

char digit_out[3]; //iannea aey ecaea?aiey cia?aiee eiaeeaoee ec i?aauaouaai ianneaa 
unsigned int indication; //oi ?enei, eioi?ia aoaai ioia?a?aou
char aaa;

void recoding(void){
if(indication<=999){
digit_out[0]=indication%10; //ionou ?enei 327, yoi iia?aoey 327%10 ===7 inoaoie io aaeaiey iaoaei, aai ieoai a 0 yeaiaio ianneaa2
indication/=10; //327 aaeei ia 10 iieo?aaony 32, 7 ne ioa?anuaaao
digit_out[1]=indication%10;  //ooo iia?aoey 32%10  ===2 yoio inoaoie ai aoi?ie yeaiaio ianneaa 
digit_out[2]=indication/10; // a o?aoee yeaiaio ieoaony i?inoi 3
} // cae?uee oneiaea if
} //cae?uee ooieoe? recoding  

void risuem(void){ //ioe?uoea ooieoee risuem

if(aaa<2){ //ioe?uoea oneiaey while
PORTA=digits[digit_out[0]]; //ecaeaeaai oeo?o 1
digit1_ON;                         //a?oaaai oeo?o 1 
delay_us(10);
digit1_OFF;

aaa++;                        //aoaai ia?aaaouaaou aoi?o? oeo?o 
PORTA=digits[digit_out[1]]; //ecaeaeaai oeo?o 2
digit2_ON;                         //aee??aai aoi?ie eiaeeaoi? 
delay_us(10);
digit2_OFF;

aaa++;                        //aoaai ia?aaaouaaou o?aou? oeo?o
PORTA=digits[digit_out[2]]; //ecaeaeaai oeo?o 3   
digit3_ON;                         //aee??aai o?aoee eiaeeaoi?     
delay_us(10);
digit3_OFF;

}; 

} //cae?uoea ooieoee risuem 



void main(void)
{
// Declare your local variables here

// 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=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 
PORTB=0x00;
DDRB=0xFF;

// 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;

while (1)       //aaneiia?iue oeee
      {
      
indication=543;
recoding();
risuem();
aaa=0;


 };
}