UARTで何かデータを受信したら割り込みを発生するテストプログラムを書いてみた。

volatile unsigned char moji='a';

ISR(USART_RX_vect)
{
char x = UDR0;
while (!( UCSR0A & (1<<UDRE0)));
UDR0 = ++moji;
}

int main()
{
UCSR0B = 0x00;
UCSR0A = 0x00;

UCSR0C = 0b00000110;
UBRR0L = 25;
UBRR0H = 0;
UCSR0B = (1<<RXCIE0) | (1<<TXCIE0) | (1<<RXEN0) | (1<<TXEN0);

while(1)
{
}
}

うまく動けばUART経由で一文字打ち込むたびに変数mojiがインクリメントされていきターミナルには

bcdefgh・・・

みたいな感じの文字が表示されてしかるべきなのになぜか

bbbbbb・・・・

といつまでたってもbしか表示されない。なにか設定おかしいところある?