Os UARTs normalmente usados em sistemas seriais do tipo RS232 funcionam amostrando a linha de dados em algum ponto intermediário de acordo com uma divisão do relógio de freqüência base da taxa de transmissão predefinida. Como tal, se os dados e o receptor enviados não estiverem na mesma frequência, o "ponto de amostragem" se aproximará da borda do quadro de bits em bits sucessivos.
Com um UART normal, o comprimento de bit para um byte é 10 ou 11 bits. 1 Iniciar, 8 dados e 1 ou 2 bits de parada. Meio desvio no décimo bit se traduz em erro de 0,5 / 10 = 5%.
No entanto, na realidade, sua tolerância é menor do que isso, porque você também precisa adicionar a latência do seu período de frequência base, o que adicionará um deslocamento da borda anterior do bit inicial. Quanto maior a sua frequência base, menos efeito isso tem.
Quanto ao uso de um timer 555 para esse fim, eu não o recomendaria, a menos que você planeje fazer um ajuste manual no circuito 555.
Um USART, por outro lado, usa um método de controle mais complexo que tenta sincronizar a transmissão com os dados recebidos. Isso pode ser feito usando um padrão de dados que possui um relógio incorporado, usando um relógio passado ou por alguma forma de bloqueio de fase nas bordas dos dados recebidos. (Embora sem dúvida o último seja realmente pseudo-síncrono.)