Esta es la rutina que yo utilizo para imprimir o descomponer una variable de dos o tres digitos en sus unidades para imprimirlas, en este caso, en un LCD, pero se puede utilizar para cualquier cosa:
void actualizar(int dato){
LCD_FunctionMode();
Lcdw(set_dd_line1+11); // coloco el cursor del LCD en la linea 1 + 11 caracteres.
LCD_DataMode();
Lcdw(48+(dato)/100); // imprimo el valor ASCI 48 ("0"
+ dato dividido 100 o sea si dato = 254, dato/100=2.
Lcdw("."); // imprime "." ya que la funcion imprime tiempo.
Lcdw(48+((dato)/10)%10); // imprime ASCI 48 "0" + (dato/10)%10 .. esto es 254/10=25 y 25%10 es igual a 5.. "%" es el resto de la division 25/10 te da 2 y resto 5..
Lcdw(48+(dato%10)); // 254%10=4 o sea 254/10 es igual a 25 y 4 de resto
Lcdw("s"); // imprime "s" de segundos..
}
Espero se entienda !! si tenes variable de 16 o 32 bits agregas mas divisiones y listo !
Saludos Mariano