la variable counter no varia porque dentro de tu programa principal, osea main() , defines la variable counter=1 y sin embargo en la zona que define que hacer cuando ocurra una interrupcion [while(1)] , tu le dices que incremente el counter. Esto no tiene sentido porque seguro la variable se incrementa, pero cuando se vuelve al main con el nuevo valor del counter, el programa se encuentra con que counter=1, asi que ese nuevo dato se pierde.
Debes manejar diferente esa variable counter, mediante un puntero por ejemplo, o si no cambiarle la estructura al programa, de tal forma que la variable que modifiques efectivamente asuma el valor nuevo que le pones.
Me parece que debes revisar como funciona una interrupcion dentro de un programa .
ok.