Wird wohl am Programm liegen - kenn aber Deine Programmierumgebung nicht.

PORTA |= (1<<PA0) ist ja z.b. ok um ein Bit zu setzen, aber Ruecksetzen mit
PORTA &= (0<<PA0) wird wohl nix, da wird ja gleich der ganze Port auf 0 gesetzt.. werden ja keine 1er nachgeschoben;
0<<PA0 ist ja wohl 00000000 (um das mal prosaisch auszudruecken)..
Ich wuerde bitwise XOR (^) nehmen, gesetzt is das Ding ja, also PORTA ^= (1<<PA0)

Ich vermute mal, dass keines Deiner IFs ausgefuehrt wird, oder die Impulse am falschen Pin landen.
Mach mal zusaetzlich innerhalb der IFs eine LED an und schau so nach, ob irgendeine Bedingung erfuellt ist..