Genau....

Es ist echt sinnvoll, die Hardware-Zusatzfunktionen der µC zu nutzen.
Diese laufen dann wirklich parallel und eigenständig.

Wobei man beim UART auch meist mit dieser Funktio arbeitet:
Code:
void UART_transmit(uint8_t c){ 
   while(!(UCSRA & (1<<UDRE)));
   UDR = c; 
}
Beim while wartet er ja auch bis er gesendet hat.....

Oder auch beim SPI:
Code:
uint8_t SPI_transmit( uint8_t data ){
   SPDR = data;
   while( !( SPSR & (1<<SPIF) ) );
   return SPDR;
}