puedes utilizar una interrupción por desbordamiento de timer para tener un control más en "tiempo real" o multitareas como algunos le llaman.
es básicamente como entiendo tu programa debe hacer 3 cosas simultáneamente.
interrupción por timer es la solución.