/*
 * Indikator.c
 *
 * Created: 02.09.2013 14:21:09
 *  Author:  ..
 */ 

#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned char Danie_Razrad_1,Danie_Razrad_2,Danie_Razrad_3,Danie;
unsigned char sifra[10]= {16,115,36,33,67,129,128,51,0,1};
		
   //*******************************//
   //*******************************//	
 ISR(TIMER0_COMP_vect)	 
 {	
	static unsigned char Vibor_Razrada;	
	 Vibor_Razrada++;			   
	switch (Vibor_Razrada)
	 {
	   case 1: 
	      	   PORTB = sifra [ Danie_Razrad_1 ];
			   PORTD |=(1<<6);
			   PORTD &=~(1<<4);
			   break;	   	       	   	       			  		   
	   case 2: 
	     	   PORTB = sifra [ Danie_Razrad_2 ];
			   PORTD |=(1<<5);
			   PORTD &=~(1<<6);
			   break;	  
	   case 3: 
	    	   PORTB = sifra [ Danie_Razrad_3 ];
	    	   PORTD |=(1<<4);
			   PORTD &=~(1<<5);			   
			   Vibor_Razrada = 0;
			   break;   	   	   	   	   	   					 
	 } 
 }
  //*******************************//
  //*******************************//
 Peresot ( volatile unsigned char Temp )
   {
	 asm("cli"); 
	 Danie_Razrad_1 = 0;
	 Danie_Razrad_2 = 0;	 	     	   
	 while( Temp >= 100 )
	  {
		Temp = Temp - 100;  
		Danie_Razrad_1++;  
	  }	
	  //============
	 while( Temp >= 10 )
	  {
		Temp = Temp - 10;  
		Danie_Razrad_2++;  
	  }
	  //============	  	
	 Danie_Razrad_3 = Temp;	
	 asm("sei"); 	    	  	  	  	  	     
   }
   
   
int main(void)
{
	TCCR0 &=(1<<6);
	TCCR0 |=(1<<3);     
	TCCR0 |=(1<<1);     
	TIMSK |=(1<<1);
 //==================//
    DDRB  = 255;
	PORTB = 255;
	DDRD |=(1<<6)|(1<<5)|(1<<4);
	PORTD &=~(1<<6); PORTD &=~(1<<5); PORTD &=~(1<<4);
 //==================//	
    Danie = 145; 				 	
	asm("sei");
    while(1)
    {
      asm("nop");
	  Peresot(Danie); 
	  asm("nop");
    }
}  

 