I've done it that way in the AVR, nice and simple. Take the start bit edge interrupt, and start your timer with half a bit time. When the int fires, if the pin is still low, then load a full bit time, and start shifting bits. After 8 bits of data, you can optionally look at the stop bit. -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist