Wenn du ständig putchar() aufrufst muss er ja auch was senden. Wie ich oben schon gesagt hatte, ist nb_getkey() nichtblockierend. Nutze doch einfach mal die stdio.h Funktion _getkey. Die ist blockierend und dein putchar() sendet nur noch wenn der RX auch was bekommt.

Wie hast du denn die LED angeschlossen? An TX und VCC?

sast