Como regla general, cuando la máquina es dedicada se puede poner toda la lógica en el main salvo ciertas actualizaciones de variables que dependen directamente de una interrupción (en el ejemplo de este examen sería por ejemplo el aumento del contador del reloj).
Sin embargo, en muchos casos queda una solución más compacta y legible distribuyendo adecuadamente la lógica entre el programa principal y las rutinas de atención a las interrupciones.
Cuando la máquina es no dedicada ahí tenés que resolverlo todo en las rutinas de atención a interrupciones (salvo la inicialización del sistema que sigue yendo en el programa principal).
Saludos,
Gustavo