Meine Empfehlung:
Günter Schmitt: "Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie"
Das deckt auch Grundlagen ab wie z.B. Zahlendarstellungen. Es beginnt zuerst mit Assembler-Programmierung mit vielen Beispielen und geht dann auch auf die Programmierung in C ein. Die Beispiele sind dann sowohl in Assembler als auch in C präsentiert. Nach der Beschreibung der Peripherie (ebenfalls mit Beispielen) folgen noch Anwendungsbeispiele mit typishen Aufgaben wie das Einlesen von Tastern, Ansteuern von Siebensegment-Anzeigen (Stoppuhr), LCD-Ansteuerung, Einlesen von Matrix-Tastaturen usw.
Generell sind hier alle Controller-typischen Dinge wie Bedeutung von Byte-Operationen, das Löschen/Setzen von Bits mit Masken, als auch Interrupts in C (grundlegend) angesprochen.

Zusäztlich hab ich mir noch "Systemprogrqammierung für AVR-Mikrocontroller" von Manfred Schwabl-Schmidt zugelegt. Das ist allerdings eher ein Werk für Fortgeschrittene, das ausführlicher auf Interrupts, Multitasking, Fließkommarithmethik und Zufallszahlen usw. eingeht. -> Allerdings ist hier Alles in Assembler!

Das Datenblatt für seinen Controller sollte man zusätzlich aber immer zusätzlich parat haben. Manche Dinge sind evtl. bei einigen Controllern (z.B. ATMega128 -> zwei UARTS usw.) etwas anders.

Gruss
HaPe