Hallo Joe,
ja Du hast recht wenn Du mit Interrupts Daten tauschen willst, kommst Du um Globale Variablen nicht herum, leider.
Bei kleinen Programmen geht das noch, kein Problem, aber sobald es größer wird...
Vor allem wenn Du über mehrere *.c Dateien gehst.
z.B. Der avr-gcc Port von Butterfly http://www.siwawi.arubi.uni-kl.de/avr_projects/#bf_app
Den habe ich seinerzeit auseinandergenommen um den Butterfly in einen Dattenlogger zu verwandeln, das war eine Fleißarbeit glaube mir.

Gruß Sebastian