Paul Greenwood asks: > I thought that one of the PICS had a UART built in but I can't find any. > Am I missing something or is there one that does RS232 using a built-in > UART? I do NOT want to do RS232 using PIC code - I want speed...!!! Only the PIC16C74 and the PIC17C42 have a hardware UART. IMHO, the material in the Microchip application notes on serial communication completely fall flat on the full-duplex case. They recommend sampling at twice the bit rate, which would be fine except that they say to delay 1.25 bit times from detecting the leading edge of the start bit so that the sampling of the data bits falls within the center of the bit times. It's pretty hard to delay 1.25 bit times when you are sampling at .5 bit time intervals. If you were only doing half duplex, you could do a non-standard sample interval for the stop bit because you wouldn't be screwing up the transmit timing. What I've found works best is to sample at 3 times the bit rate. After the detection of the start bit, delay four sample times (1 1/3 bit) before sampling the first data bit, and three sample times between each additional receive bit. This guarantees that the data bit sampling occurs in the middle third of the bit times (unless the start bit was a glitch, which could be detected by sampling it again one sample time after the initial detection). This allows for a +- 6% speed tolerance between the transmitting device and the receiving PIC. The transmit code in the PIC obviously just runs every third sample time. I implemented this all on the 16C71 using two state machines for transmit and receive, and using the RTCC as an interrupt source. It is possible to achieve fairly high data rates without too much CPU time consumed. I used the same technique in the 16C57 but without interrupts. I chose a crystal frequency such that 1/3 bit time worked out to an integral number of RTCC counts, and resync to the RTCC for each sample time. This means that the application code has to run in short time slots. Eric