My PIC18 datasheet says the following: "Once the TXREG register transfers the data to the TSR register ... the TXREG register is empty ..." In my ISR, I have this: if(PIR1bits.RCIF =3D=3D 1) // if the USART receive interrupt flag has been= set { if(TXREG =3D=3D 0) // check if the TXREG is empty { TXREG =3D RCREG; // echo received data back to sender } =09 PIR1bits.RCIF =3D 0; // clear the USART receive interrupt flag } I know it's a good idea to check and make sure there isn't data waiting to be sent, so I added the IF statement to check if the TXREG register is empty. The problem is, it's not being cleared, although the datasheet says it should be. Using my ICD3 debugger I set a breakpoint in the ISR, and after the first byte is received and echoed back, no more bytes get sent, which is because the TXREG contains the first byte sent and is never cleared. Why would this be? Is there a better way to check if it's "safe" to send data? Thanks! Nathan --=20 Student Hobbyist www.roboticsguy.com --=20 http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .