nur mal kurz überflogen ...

ldi temp1, 1
rcall sende_zeichen
sende_zeichen:
lds temp1,UCSR0A
sbrs temp1,UDRE0
rjmp sende_zeichen
ld zeichen, Z+ ; Zeichen laden
sts UDR0, zeichen ; und Zeichen ausgeben
dec temp1
brne sende_zeichen
ret
das gibt schon mal eine Endlosschleife.