Erstmal wieso deklariest du Daten als volatile, braucht man doch da garnicht.
Und mach sie zu ner unsigned das sie sonst von -127 - +127 geht und nicht den vollen ASCII Code darstellen kann.
Und noch was schau mal wieder zu www.mikrocontroller.net
es hat sich bei C einiges geändert, eigentlich gibt es outp() nicht mehr
statt dessen DDRC = 0xff;
Ich glaub nicht das es was aus macht aber erst machst du =='a' also ' ' bedeutet das Zeichen s und dann nur ==0 wobei jetzt hier die Zahl 0 gemeint was glaub ich was anderes ist wie '0', hier ist nämlich glaub ich das Zeichen 0 gemeint.
Gruß Muraad