hallo,

bin zwar ein alter copy'n'paster, aber das return sollte innerhalb der main funktion sein (letzte beiden zeilen vertauschen).
(anmerkung: je nach compiler kann man das return statement auch weglassen, denn es wird ohnehin nie erreicht.)

ausserdem passt in zeile 4 das kommentar nicht zur semantik des statements:
DDRA = (1 << DDA2); //A2 auf Ausgang konfigurieren
hier werden in wirklichkeit zusätzlich alle anderen pins von port A als eingang konfiguriert.

und da markus die bitweisen operatoren eingebracht hat, hier weiter information zu diesem wichtigen thema:

&, |, ^ und ~ operatoren:
http://de.wikipedia.org/wiki/Bitweis...ise_Operatoren
<< und >> operatoren (für vorzeichenlose ganze zahlen):
http://de.wikipedia.org/wiki/Bitweis...e_Verschiebung
und hier nochmal für C speziell:
http://home.fhtw-berlin.de/~junghans...T/bitwise.html

und die (grösse der) in C verfügbaren elementaren datentypen:
https://www.roboternetz.de/wissen/in...are_Datentypen

ausserdem wurde im gezeigten code die kuzschreibweise für arithmetische und logische operatoren verwendet (i.e. |=), eine erklärung ist hier in der tabelle "Kurzschreibweisen" zu finden:
https://www.roboternetz.de/wissen/in...der_Operatoren

lg


ps. zu erwähnen dass es sich bei 0x04 auch um eine konstante handelt würde wohl nur unnötig verwirrung stiften