EDIT: En si.. te va a llevar lineas de codigo, pero si sos ordenado, no deberia ser demasiado.
Y eso depende de que envias o de que queres enviarle al Timer... ¿Como lo envias? Yo te doy un ejemplo:
"t45:15" (45min , 15 seg)
donde t es como para indicarle que ahi comienza los datos del tiempo. o tal ves envias
"30m20s" Para indicar minutos y segundos.
Eso depende de como vos lo queres.
Como te comente el timer es fijo, y si lo haces de 0.1s (100ms) o 1s te resulta mucho mas sencillo de realizar. Voy a suponer 1 segundo para que sea mas sencillo la explicacion.
Supongamos que te llega lo siguiente:
"t45:15"
Esperas una 't' en tu recepcion serial, al detectar la t, ahora esperar 2 valores como maximo que son el '4' y el '5'.
Lo transformas de ASCII a decimal restandole '0', es decir '4' - '0' = 4
Al primer digito lo multiplicas por 10 y lo guardas en un registro que sean los "minutos" quedando minutos en 40
Luego llega el '5', nuevamente lo transformas en un digito '5' - '0' = 5, y lo sumas en minutos, quedando 45.
El proximo dato si o si hay que esperar los dos puntos ':' si no estan, tiras todo y esperas la 't' nuevamente (ya que hay un error en lo enviado, lo mismo si antes no es un numero) comenzando de nuevo todo.
Si todo va bien, necesitas esperar los 2 valores mas que son los segundos, y hacer exactamente lo mismo que antes, guardarlo ahora en "segundos" si queres.
Ya ahora tenes "minutos" y "segundos" separados y en binario/decimal. Solo resta juntarlos, ya que como mi interrupcion es de 1s, necesitaria saber cuantos segundos esperar

.
Entonces minutos lo multiplico por 60, lo guardo en 2 registros al resultado (se necesitan 16 bits) y luego sumas los segundos.
Ese registro lo vas a decrementar para ir contando las interrupciones..
En caso de que sea 0.1s la interrupcion, necesitas 10 interrupciones por cada segundo, entonces multiplicas ese registro por 10.