Люди выручайте, вопрос жизни и смерти, нужно перевести прошивку из ATMEGA8 для pic16f76
вот код:
Код:
/*****************************************************
Chip type           : ATmega8
Program type        : Application
Clock frequency     : 1,000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 256

*****************************************************/
#include <mega8.h>

unsigned char nom_temp;
unsigned int imp,kmh;

void init(void);
void display(unsigned char ch,unsigned char nom);

interrupt [EXT_INT0] void ext_int0_isr(void)
{
}

interrupt [EXT_INT1] void ext_int1_isr(void)
{
imp++;
}

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 if (nom_temp<3) nom_temp++; else nom_temp=1;
 switch (nom_temp)
 {
  case 1: {if (kmh>99) display((kmh/100)%10,3); break;}
  case 2: {if (kmh>9)  display((kmh/10)%10,2);break;}
  case 3: {display(kmh%10,1);break;}
 }
}

// Timer 1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
//kmh=imp*9/5;
kmh=imp*79/100;
//imp_s=imp;
imp=0;
TCNT1H=0x00;
TCNT1L=0x00;
}


void init(void)
{
PORTB=0x00;
DDRB=0xff;

PORTC=0x00;
DDRC=0xff;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=P State2=0 State1=0 State0=0 
PORTD=0x08;
DDRD=0xF7;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
//TCCR0=0x03;

// Clock value: 125,000 kHz
TCCR0=0x02;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 3,906 kHz
// 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: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x04;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x07;
OCR1AL=0xA1;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
GIFR=0x00;
MCUCR=0x0A;
GICR|=0xC0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x51;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

}

void display(unsigned char ch,unsigned char nom)
{
PORTD.0=0;PORTD.1=0;PORTD.2=0;
PORTB.0=1;PORTB.1=1;PORTB.2=1;PORTB.3=1;PORTB.4=1;PORTB.5=1;PORTB.6=1;

switch (ch)
{case 0: {PORTB.1=0;PORTB.2=0;PORTD.7=0;PORTD.6=0;PORTD.5=0;PORTB.0=0;PORTD.4=1;break;}
 case 1: {PORTB.1=1;PORTB.2=0;PORTD.7=0;PORTD.6=1;PORTD.5=1;PORTB.0=1;PORTD.4=1;break;}
 case 2: {PORTB.1=0;PORTB.2=0;PORTD.7=1;PORTD.6=0;PORTD.5=0;PORTB.0=1;PORTD.4=0;break;}
 case 3: {PORTB.1=0;PORTB.2=0;PORTD.7=0;PORTD.6=0;PORTD.5=1;PORTB.0=1;PORTD.4=0;break;}
 case 4: {PORTB.1=1;PORTB.2=0;PORTD.7=0;PORTD.6=1;PORTD.5=1;PORTB.0=0;PORTD.4=0;break;}
 case 5: {PORTB.1=0;PORTB.2=1;PORTD.7=0;PORTD.6=0;PORTD.5=1;PORTB.0=0;PORTD.4=0;break;}
 case 6: {PORTB.1=0;PORTB.2=1;PORTD.7=0;PORTD.6=0;PORTD.5=0;PORTB.0=0;PORTD.4=0;break;}
 case 7: {PORTB.1=0;PORTB.2=0;PORTD.7=0;PORTD.6=1;PORTD.5=1;PORTB.0=1;PORTD.4=1;break;}
 case 8: {PORTB.1=0;PORTB.2=0;PORTD.7=0;PORTD.6=0;PORTD.5=0;PORTB.0=0;PORTD.4=0;break;}
 case 9: {PORTB.1=0;PORTB.2=0;PORTD.7=0;PORTD.6=0;PORTD.5=1;PORTB.0=0;PORTD.4=0;break;}
 case 10: {PORTB.1=0;PORTB.2=1;PORTD.7=1;PORTD.6=1;PORTD.5=1;PORTB.0=1;PORTD.4=1;break;}
 }
switch (nom) 
{
 case 1: {PORTD.0=1;PORTD.1=0;PORTD.2=0;break;}
 case 2: {PORTD.0=0;PORTD.1=1;PORTD.2=0;break;}
 case 3: {PORTD.0=0;PORTD.1=0;PORTD.2=1;break;}
}

}
void main(void)
{init();


while (1)
{  
};

}