Am einfachsten geht's über Zeiger.
Du definierst einen Zeiger vom Typ char, setzt ihn auf eine bestimmte Adresse und schreibst dort Dein char rein.
Das sieht dann so aus:
Code:
char *test;
test = 0x200;
*test = 0xAB;
Im Beispiel wird ein Zeiger test auf die Adresse 0x200 gesetzt.
Dann wird der Wert 0xAB auf eben diese Adresse geschrieben.

Ansonsten kannst Du auch dem Compiler mitteilen, wo Du eine Variable hinhaben möchtest. Wie das geht, ist von Compiler zu Compiler verschieden.

Wenn Du mit dem aktuellen AVRStudio arbeitest und den GCC-Compiler einsetzt, kannst Du folgenden Weg nehmen:

In den Projekt-Einstellungen unter "Memory Settings" erstellst Du einen neuen Speicherbereich mit dem Typ SRAM und einem beliebigen Namen, nehmen wir einmal ".test", und weißt diesem die gewünschte Adresse zu. (ob beim Namen der Punkt am Anfang sein muss, weiß ich nicht, ist aber wohl Standard. .data, .text, .eeprom und .bss sind vom Compiler reserviert, diese Namen darfst Du also nicht nehmen).

Um eine Variable, nennen wir sie mal bimbam, an diese Stelle zu bekommen, schreibst Du folgendes ausserhalb einer Funktion in Deinen C-Code:
Code:
__attribute__ ((section (".test")))
char bimbam;
Beachte: Nur die erste Variable nach __attribute__ wird in den Speicherbereich geschrieben.

Gruß,
askazo