Also meine UART-Init für nen Mega8 sieht so aus (Allerdings C)
Code:
  ui8_t sreg = SREG;
  ui16_t ubrr = (ui16_t) ((ui32_t) F_CPU / (16 * baud) - 1); // ist 0x33
  UBRRH = (ui8_t) (ubrr>>8);
  UBRRL = (ui8_t) (ubrr);
  cli();
  UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE);
  UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
  do
  {
    UDR;
  } while (UCSRA & (1 << RXC));
  UCSRA = (1 << RXC) | (1 << TXC);
  SREG = sreg;
So haut das eigentlich gut hin.