One last thing: The bit generation need not be exact because each character is self clocked independantly of the others. While it seems from my previous example that a start bit start on a bit boundary, it can in fact start at any time. Typically serial ports will operate correct up to 4 percent error or so. For 9600 BPS that means that any clock from 9216 BPS to 9984 BPS (100 to 108 uS bit cell time) the character will be interpreted at the other end correctly. This is why it's possible to generate 9600 BPS characters at 4 Mhz or 10 Mhz when 9600 isn't an exact multiple. BAJ > > Greetings, > > how do we send a byte from PIC without USART to pc at 9600 baud rate ? > from my hollow understanding, baud rate of 9600 is 9600 clock per > second. so, if i were to send a byte to pc, i should send bit by bit , > sending 1 bit every 104.166 micro second ? since 1/9600 is 104.166 > micro > second. > > please give me a clearer picture on how to implement software USART by > lower family of PIC. thanks ! > > regards, > ckchan >