Alles sehr sehr komisch....
Wenn ich alles aus der Timer-ISR rausschmeiss ausser dem bRxCount
Also so:
Code:
#pragma vector=TIMER0_OVF_vect
__interrupt void tim0_ovf(void)
{
  TCNT0 = T0_PRELOAD;	        // Refresh preload    		


// ==========================================================================
//        receive
// ==========================================================================
	if (bRxFlag & RX_M_RECEIVE)		//	 receive ?
	{
                        DDRB |= (1<<PB2); // Status LED initialization
          PORTB ^= (1<<PORTB2);		// toggle status LED

/*          if (bRxCount & 0x08)		// is this the stop-Bit (9th)
          {
              bRxFlag &= ~RX_M_RECEIVE;   // receiving sequence done
	      bRxFlag |= RX_M_DATA;	// signal data
	      GICR |= 1<<INT0;  // re-enable int0 for next

	    }
	    else */
 //           {
             // bRxByte >>= 1;	  // Shift right data
              bRxCount++;
              bRxFlag |= RX_M_MUHKUH;


/*	    if(PIND&(1<<PD2))   //set bit or leave it
            {
              bRxByte |=0x80;			
	      bRxCount++;

            } */

//	   }
	}
}
while-Schleife:
Code:
while(1)
  {
    if(bRxFlag & RX_M_MUHKUH)
    {

      //bRxFlag &= ~RX_M_DATA;
      bRxFlag &= ~RX_M_RECEIVE;
      bRxFlag &= ~RX_M_MUHKUH;
      hw_transmit_byte(bRxCount + 0x30);
    }
  }
wird kein INT0 ausgelöst. d.h. nur HW-Uart Echo, kein bRxCounter Stand.

Kommentiere ich aber bRxFlag &= ~RX_M_RECEIVE; und bRxFlag &= ~RX_M_MUHKUH; aus, wird INT0 ständig ausgelöst (ein Tastendruck reicht...)
Was dann gesendet wird:
!+5?IS]gq{…™£*·ÁËÕßéóýCMWaku‰“§±»ÅÏÙãí÷
)3=GQ[eoyƒ—¡«µ¿ÉÓÝçñû#-7AKU_is}‡‘›¥¯¹Ã

also nur Müll halt...