Hallo!!
Fast gut, es fehlt, soweit ich das sehe, nur eine fiese Kleinigkeit, nämlich das '~' in 'PORTA &= (1<<0)'

nach dem IF passier bei Dir folgendes:
00000000
or
00000001
ergibt
00000001
-> LED geht an, der Zustand der anderen Bits ändert sich nicht/ist egal.
beim 'ELSE'
00000001
and
00000001
ergibt
00000001
-> LED bleibt an, allerdings werden alle anderen Bits auf 0 gesetzt
d.h., sobald die LED einmal an war, bleibt Sie an.
macht man vor das '(1<<0)' noch ein '~', wird das ganze invertiert, es passiert also folgendes :
00000001
and
11111110 (1.Bit gesetzt und Ergebnis invertiert)
ergibt 00000000
-> LED aus, Zustand der anderen Bits ändert sich nicht

MfG
Volker