Od razu mówię, że program nie ma błędów, a z kompilacją nie ma problemu.
Gdyby nie miał błędów to by działał jak trzeba. Błąd jest banalnie prosty:
for(;;)
{
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
led--;
if(led == 10)
{
led = 13;
} /*miganie po kolei diód na pinach 11-13*/
}
Pętla nigdy się nie kończy.
Nawet jeśli mimo to przerwanie jest obsługiwane (w co wątpię, ale pewności nie mam) to pętla działa cały czas i miga diodami.
Po pierwsze nie potrzebna Ci tu pętla. Skasuj ją a jej zawartość zostaw. Funkcję ledy() wywołujesz przecież co każdy obieg loop() więc będzie ona spełniała rolę pętli, ale przy tym będzie sprawdzała wartość x.
Po drugie sprawdź też czy pin 2 obsługuje przerwania.
Po trzecie offtop:
/*miganie po kolei diód na pinach 11-13*/
nie diód a diod, wiem że to forum dla umysłów ścisłych, ale to aż boli jak się czyta :P
diody: kogo? czego? diod
krosty: kogo? czego? krost a nie króst