Ich würde erst mal folgende Sachen Programmieren (als Übung)

1. Einfach eine LED leuchten lassen
2. 2 LEDs nach ein ander Blinken lassen
3. "Lauflicht" Programmieren

Ich will damit bezwecken dass man die delay.h und den Timer Interrupt kennen lernt.

Warum delay.h und Timer Interrupt?
delay.h ist eine Headerdatei, die ein Funktion enthält, die den Controller "sinnlos" beschäftigt und somit eine Zeitverzögerung verursacht. Timer Interrupt lösen nur nach eine bestimmt Zeit ein Interrupt aus. Interrups sagen den Controller, dass er das Hauptprogramm pausieren soll um die Interrupt anweisung aus zu führen. Dannach mach der Controller an der Stelle in Hauptprogramm weiter, wo er unterbrochen wurde. Der Timer läuft im "Hintergrund, wie eine art Zähler".

Die Kenntnisse brauchst du, um den Taster zu entprellen (es sei den du hast es Hardware technisch gemacht)

Meines erachten sind folgende RN-Artikel ideal zum erlernen wie man mit µC arbeitet.

Da ist zum einen der Einstig:
http://www.rn-wissen.de/index.php/AV...leicht_gemacht
Der vom Aufbau bis zu den ersten einfach Programm geht (LED blinken lassen)

http://www.rn-wissen.de/index.php/C-Tutorial
und hier ein C-Tut, dass die Kenntnisse von C vermittelt die für AVR programmieren für den Anfang reichen.
(C kann noch viel mehr als nur µC Programmieren, zB Spiele und Anwednungen für den Computer)