No veo qeu contador sea booleano
volatile int contador = 0;
pero esto si que no lo entiendo
contador=0;
contador++; // Se incrementa en uno el contador
para eso simplemente le pones
contador=1;
porque jamas tomará otro valor que ese.
Lo mismo con conta