Meiner Meinung nach ist es nicht besser lesbar. Wie man die Hilfsvariable nennt ist egal, mann kann sie z.B. auch "FreigabeEingaenge" oder sonst wie nennen.
Ob man 1 Variable benötigt, oder 3 wird egal sein. Wenn man aber mehrere hat und so arbeitet bekommt man irgendwann ein Speicherproblem (z.B. wenn man Eingänge eines ganzen Ports steuern will). Deswegen sollte man sorgsam mit den Resourcen umgehen.

Man kann auch mit #define arbeiten.
z.B.
Code:
#define  PA4_ein  hilfsvariable |= (1<<0)
#define  PA4_aus hilfsvariable &= ~(1<<0)
#define  PA4_freigabe  hilfsvariable & (1<<0)
Wenn du es nutzen willst schreibst du:

Code:
PA4_ein; // PA4 freigeben
PA4_aus; // PA4 sperren

if ((PINA & (1<<PA4)) && PA4_freigabe) {...}  // Abfrage auf PA4 und Freigabe PA4

Bei der ISR kann man es so machen wie du und mehrere Variablen nehmen, oder du konfigurierst die ISR so das du alle 10ms einen Interrupt bekommst (geht nicht immer).
Wenn man z.B. alle 10ms einen Int haben will muss man den Timer so anpassen das du, wenn du den Timer von 0-Max laufen lässt, über die 10ms kommst (Prescaler anpassen). Anschließend musst du einen "Startwert" für den Timer ausrechnen. Den musst du in der ISR jedes mal neu übergeben. Also wenn du z.B. bei einem 8bit Timer jede ISR den Wert 250 in das TCNT Register schreibst zählt er von 250 bis 255 und löst dann wieder einen Int aus.

MfG Hannes