MCUCR = 0x80; <-- Посмотрите в ДШ флажки ISCxx (врятли вам нужен Level Sensitive int).
GIFR = 0x00; <-- это не обязательно (тем более сброс флагов делается записью "1", а "0" - не имеет никакого эффекта).
SREG=0x02; <--- Уберите это!!
while(PIND==0xF3){}; <-- здесь возможно подвисание.
в остальном все Ок
давайте попробуем Int настроить как Edge Triggered (а не Level Sensitive), и в обработчике просто перевернуть значение порта A.
Код
#define ISC11 3
MCUCR = 0x60 | (1 << ISC11); // int1 on falling edge (----\int___)
GICR = 0x80;
interrupt [EXT_INT1] void ext_int1_isr(void)
{
static char x = 0;
x = ~x;
PORTA = x;
}