No sabria responderte las preguntas que has hecho, pero si un detalle; casi seguro que las variables que estas utilizando en diferentes funciones, tipo tics, las tenes que declarar globalmente. De otra forma los programas en las que las estas usando no tendrian acceso a ellas.
Y algo que me comento el profe de monitoreo es que la idea es que antes de que esten declaradas no puede haber interrupciones, y la estructura de las cosas queda masomenos así:
*Declaración de variables globales, constantes, etc, cosas que necesitas si o si que esten antes de que haya alguna interrupción*
habilitar_interrupciones();
*programa principal*
*resto de los programas*
Saludos!