Wenn dein Programm wirklich exakt so wie oben gepostet aussieht, ist es
kein Wunder, dass du nie die LED leuchten siehst. Deine if-Abfrage
gehört in die while-Schleife, die CodevisionAVR freundlicherweise
automatisch anlegt, wenn du den Codegenerator benutzt, steht ja auch
deutlich da:
while (1)
{
// Place your code here
};
In deinem Code kann ich so eine Endlos-Schleife nicht entdecken. Dein
gepostetes Programm überprüft lediglich ein einziges mal, ein paar
Mikrosekunden nach dem Einschalten, ob PINA.1 High ist, dann macht es
nichts mehr (weil eben die Endlos-Schleife fehlt). Wenn beim Hochfahren
PINA.1 noch auf Low ist (weil du den Taster erst ein paar Sekunden nach
dem Einschalten betätigst), dann wird die LED nie leuchten.
In den Teil der main-Funktion, der vor der Haupt-Schleife liegt,
gehören lediglich Programmteile, die nur ein einziges mal beim
Hochfahren ausgeführt werden. Also diverse Initialisierungen (LCD,
Ports, Timer) oder z.B. die einmalige Anzeige eines Begrüßungstextes am
LCD, der nur für kurze Zeit beim Hochfahren sichtbar sein soll (z.B.
Anzeige der Software-Version).
Es wäre vielleicht empfehlenswert, wenn du dir mal ein Buch über
C-Programmierung für Mikrocontroller durchliest.
MFG, Andy