On Sunday, Jan 11, 2004, at 01:09 US/Pacific, David Dolheguy wrote: > static void usartput(unsigned char c) > { > while(!TRMT1) > TXREG1=c; > } > I'm no PIC UART expert. But shouldn't this look more like: while (!TRMT1) ; /* Wait for transmitter register to be empty */ TXREG1 = c; that is, it looks like you are at least missing a semicolon. And a lot of comments, of course. the code always works better if you have a lot of comments, especially if that means you have to make the code match what the comments say. Normally, I'd expect it to be more like: while (! (TXSTAT & TXRDY)) ; (TRMT1 and/or RXRDY being a bit definition rather than an IO location, but it could be different for PIC and you compiler. Worth looking into as well.) BillW -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu