String troppo "lunga"

byte LunIntero(int p_Val) 
{ char tmp[6]=itoa(p_val);
  return(strlen(tmp));
}
...
lunghezza=LunIntero(a0);

In pratica passiamo il valore contenuto in a0, lo convertiamo in testo con itoa() e poi con la strlen() contiamo quanti caratteri sono.
Si poteva usare snprintf():

byte LunIntero(int pVal) 
{ char tmp[6];
  snprintf(tmp,6,"%d",pVal);  // stampo pVal dentro a tmp come testo
  return(strlen(tmp));
}