Цитата(SysRq @ Oct 6 2008, 12:20)

uart0_rx_isr - это обработчик прерывания (а зачем unsigned char?)? Ежели да, то у вас глобально запрещены прерывания, int1_isr срабатывать не будет.
#pragma interrupt_handler uart0_rx_isr:12
unsigned char uart0_rx_isr(void)
{
//uart has received a character in UDR
ch=UDR; UCSRB=0;C2_OFF;C3_OFF;WDTCR=0x1F;WDTCR=0x00;MCUCR = 0x80;PORTD=0x08;PORTB=0;PORTC=0;asm("sleep");asm("nop");
if(sb==1){TCCR0=0;sb=0;if(ch>=128){CLI();ST=1; UDR=0;UCSRB=0x08;/*only peredacha*/ch-=128;UDR=('#');d();UDR=('1');d();UDR=ch;UCSRB=0;EP_W(0,ch);lcd_t(ch);while(1);}else{ch=0;sl_count=0;TCC
R1B=0x05;}}
if(ch==42){sb=1;UDR=0;UCSRB=0x90;pause_timer1();/*only priyom*/timer=0;TCCR0 = 0x05;}
}
сори! вот так как выше всё. почему unsigned char uart0_rx_isr(void) ну функция так определяется в с++ а вобще фиг его знает... я форму брал из генератора кода. сейчас вынесу вход в спящий режим в main.