It's funny, even without a crystal you have access to a very good timing reference. If the aim is to communicate with a device of known timing integrity (PC) why not use bytes from the PC to calibrate the PIC, use a known start character with a run of bits so you can time it reasonably accurately. Use this value to set the bit sampling interval for subsequent bits and for transmit timing. If the aim is to communicate between PICs you might use the above but add a synchronisation scheme where the PIC might adjust it's OSCAL to approach that of the other. A number of devices might pull themselves into line eventually. Consider using 4 or less bit words for greater error tolerance. Artificially insert a bit flip half way through, say at 5th bit. Use variable timing, make later bits wider. Oliver. -- http://www.piclist.com#nomail Going offline? Don't AutoReply us! use mailto:listserv@mitvma.mit.edu?body=SET%20PICList%20DIGEST