> Is it possible to do serial I/O with a PIC16c84 clocked at 4MHz? > I'd perfer 19200/38400 or a variable speed, where can I get information > or routines for doing this? Nearly anything is possible. As to what's practical... By far, the easiest way of doing serial I/O is with dedicated polling routines. Such routines will do nothing except either output a character or input a character (the input character routine will wait until either it receives a character or times out). Polled I/O is half-duplex only, and may severely impact the rest of the system (e.g. everything stops when the input routine is waiting for a character) On the other hand, it's simple to code and can go extremely fast (even 115,200 would be no problem for a 4MHz PIC). The other approach to handling serial I/O is to use a routine which gets called at the baud rate (for transmit) or at three times the baud rate (for serial) and handles the outgoing/incoming data. Such a routine may be implemented very nicely as a state machine, though I don't have any code handy to post.