Hallo,
die erste Frage wäre gleich: Hast du die JTAG-Fuse deaktiviert?
Beim ATmega16 / 32 ist diese standardmäßig aktiviert und dann funktionieren gewisse Pins von PORTC nicht richtig
Am Code habe ich nichts Auffälliges gefunden, lediglich die Delays kannst du um einiges verkürzen.
Falls es nicht an der JTAG-Fuse liegt, verweise ich mal auf diese Liste hier: http://rn-wissen.de/index.php/Textdisplay_Fehlersuche
Grüße, Bernhard