Why is the stop bit necessary? My system reads serial by the following routine, called every 1/baudrate secs. Is active_word flag high? Yes: goto NEXT_BIT START_BIT Look at input line. Is it high? No: Exit routine Yes: Set active_word flag, set rx_bits=no. of bits in word Exit routine NEXT_BIT Look at input line. Shift bit into rx_data store Decrement rx_bits rx_bits=0? No: Exit routine Yes: End of word Clear active_word flag Set received_word flag Exit routine By this method, the next start bit can come immediately after the last data bit. Problems occur if the routine happens to be called on the transition edges of the data. I`m already using the edge trigger bit on RB0 for another serial comms system, and have some maths running "in the background". How can I force it to read the centre of the pulses? Bryan -- b.crotaz@ic.ac.uk --------------------------------- TECHNICAL MANAGER Student Television Of Imperial College Beit Quad, Prince Consort Road London SW7 2BB Tel. 0171-594-8104 Fax. 0171-594-8065 Attn. STOIC { NOTE NEW FAX NUMBER }