/*****************************************************
This program was produced by the
CodeWizardAVR V2.03.9 Standard
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 25.09.2009
Author  : Admin
Company : Microsoft
Comments: 


Chip type               : AT90S4433
AVR Core Clock frequency: 4,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 32
*****************************************************/

#include <90s4433.h>
#include <delay.h>
 
signed char i=0,regerr;
 unsigned char rt,regval,a=0,c=0,d=0;
 unsigned char Mas_a[14]={0,57,36,48,25,18,2,56,0,16,0b11111100,0b11110011,0b11100111,0b01111110 };
// unsigned char Mas_b[10]={ };
 
 
interrupt [EXT_INT0] void ext_int0_isr(void)
{
   
   if(a){              // когда нагрев 100% мощности
         PORTC.5=1;
         delay_ms(1);
         PORTC.5=0;   
                        }
    else  {                 // далее сам алгоритм...
     regerr=regerr-regval;
       if(regerr<0){ 
                regerr+=99; 
                PORTC.5=1;
                delay_ms(1);
                PORTC.5=0;
                          }     
                            }
                          
                          }
void cyfra (unsigned int data)
{   
      
char el[10]={0,57,36,48,25,18,2,56,0,16}; 
      data=regval;
      for(i=1;i<=2;i++){
      rt=data%10;
      data/=10;
      PORTB=el[rt];
      if((rt==0)|(rt==1)|(rt==7)){
      PORTC=0b011111;}
      else PORTC=0b011110;
      PORTC&=(~(1<<i))  ; 
      delay_ms(4);
      PORTB=0b111111;
      PORTC=0b011111;
        }
      };
void main(void)
{


PORTB=0x3F;
DDRB=0x3F;


PORTC=0b011111;
DDRC=0b100111;


PORTD=0x00;
DDRD=0x00;


TCCR0=0x00;
TCNT0=0x00;


TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
GIMSK=0b01000000;
MCUCR=0b00001010;


TIMSK=0x00;

UBRRHI=0x00;

SREG=0b10000000;

ACSR=0x80 ;
   regval=75;
    #asm ("sei")
    
    WDTCR=0b00011000;
    WDTCR=0b00010000;
      d=30  ;
    while((d)&&(PINC.3)){          a=1   ;        // нагрев 
                                      cyfra(c);        
                                     
                                      
                                                                
                                              TCCR1B=0b00000100;
                                         while(!(TIFR&0b10000000)){
                                             
                                                               } 
                                                               TCCR1B=0b00000000;
                                                               TIFR=0b10000000;
                                                             
                                                               
                                           
                                      c++;     
                                      if(c>99){c=0;}     
                                       d--;                   
                                           
                                                               } 
    
    
while (1)
      {       
      
           
                                           
                                           
                                     
                                           
                  a=0;                         
                  cyfra(regval);
                           
      

           if (!(PINC.3)){ 
                         delay_ms(250) ;
                            regval++;
                            if (regval>99){regval=0;
                                                    }
                            regerr=50;
                               }
      
                if (!(PINC.4)){ 
                              delay_ms(250) ;
                              regval--;
                               if (regval>99){regval=99;
                                                        }
                               regerr=50;
                             }
      
      };
}
