No se si entendi muy bien pero tu no deseas convertir un entero a BCD sino imprimir un valor entero en el LCD.
Para realizar esto solo debes utilizar la funcion printf que se encarga de imprimir datos en el lcd. Por ejemplo
int a=123;
...
lcd_init();
printf(lcd_putc,"valor de a= %u",a); //Se imprimira en el LCD el valor almacenado en a.
Con la funcion anterior se imprimirá "valor de a= 123" en el lcd.
Por otro lado una forma de realizar un cronometro es imprimiendo los datos cada cierto tiempo (posiblemente cada 1ms). Para ello te recomiendo que utilices la interrupción por desbordamiento del TIMER cada 1ms. Por ejemplo:
int msec,sec,min,hor;
#int_timerX
void imprimir_cronometro(){
lcd_gotoxy(1,7); //Imprimira valor en la posicion 1,7
printf(lcd_putc,"%02u",msec);//Imprime el valor de mseccon ceros
if(msec++>99){ //incrementa el valor de msec y si es mayor a 99
msec=0; //pone msec a 0.
lcd_gotoxy(1,4); //Imprimira valor en la posicion 1,4
printf(lcd_putc,"%02u",min);//Imprime el valor de sec con ceros
if(sec++>59){
sec=0;
lcd_gotoxy(1,1); //Imprimira valor en la posicion 1,1
printf(lcd_putc,"%02u",min);//Imprime el valor de min con ceros
if(min++>60){
min=0;
lcd_gotoxy(1,4); //Imprimira valor en la posicion 1,4
printf(lcd_putc,"%02u",min);//Imprime el valor de hor con ceros
if(hor++>23){
hor=0;
}
}
}
}
}
Recuerda que antes de utilizar una interrupcion debes habilitarla con la funcion enable_interrupts