Sketch controllo encoder con interrupt - ho bisogno di chiarimenti

Grazie per la risposta, ma ho ancora dei dubbi. La variabile uint_8 ho visto che corrisponde a unsigned int da 8 bit, però mi chiedo se era necessario dichiararla proprio in questo modo.

mmm... no uint8_t è una typedef di unsigned char. Quindi si tratta di un tipo definito nell'header della librerie avr-libc.
Si poteva anche scrivere:

unsigned char oldSREG = SREG;

Documentati sulla keyword: typedef
uint8_t oldSREG; // si legge da destra verso sinistra nel seguente modo: oldSREG è una variabile di tipi uint8_t

Poi, le variabili SREG e oldSREG non sono state dichiarate perchè dovrebbero essere delle variabili di registro. Dovendo lavorare con due assi di rotazione indipendenti che ruotano contemporaneamente, mi chiedo quante di queste variabili ho a disposizione?

Sono considerazioni fatte sulla base di; "cosa capita male". Per quanto riguarda SREG in effetti nel codice di esempio non compare dichiarazione, infatti è una macro del preprocessore fornita dall'header specifico della libreria avr-libc, questa macro si risolve in un accesso diretto ad un indirizzo di memoria in cui c'è il registro hardware SREG in base al microcontroller scelto l'indirizzo di SREG può cambiare, grazie alla macro SREG il programmatore è svincolato dal dovere accedere ad un indirizzo di memoria che dipende dal microprocessore.

ciao.