Re: PIC16F84
The basic idea of bit-banging is to manipulate bitwise I/O to fit a protocol, in this case, the RS232 serial protocol. It's just that simple.
During tx, just ensure you transmit the startbit+data-byte+stopbit synchronised to your baudrate. During rx, just listen for the startbit, then read the subsequent data byte and stopbit at a rate determined by your baudrate. It's not really that difficult to do. All you need to know is simple knowledge of single-pin I/O, as well as the use of the on-chip timer to synchronize with the baudrate. As for listening for the startbit, you can either use an edge interrupt or polling.
Of course, the easiest solution is to use a PIC with hardware UART. All you have to do is to initialize some registers, then TX/RX operations are simply byte transfer operations between some registers. This saves external interrupt and timer peripherals, which can be reserved for other more important operations. If possible, dump the 16F84 for a 16F628. They are virtually one-to-one replacements (ie virtually no code changes required), but with hardware UART, and they cost around the same.
P.S. implementing a software UART may be good starter for PIC programming. Besides, it gives you some experience to understanding protocols. Much of digital electronics requires nothing much more than understanding protocols and specifications.