However, it is possible to perhaps eliminate the intermediate level shifter by sending the TTL inverted. That is, the idle is
near ground (close to the less than minus 3.0), the start bit is near +5 VDC which meets the greater than +3 VDC
requirement and the data bits are then transmitted inverted, followed by the idle (near ground). My confidence in taking this
short cut was considerably bolstered by the introduction of the popular BasicX BX24 which does not provide a level shifter
and this seems to work and I have introduced a number of kits that use the same technique and have had no negative
feedback. That is, PC Com ports seem to recognize near ground as being an RS232 logic one although it is a tad higher than
the specified –3 VDC. Thus, in most cases, you can simplify the circuitry in transmitting to a PC Com port by simply
sending the data as inverted. (Again, note that this inversion is not possible with the hardware UART. Indeed, one can
invert the data, but the idle condition of the UART is near +5 VDC).
When using a PIC to receive data from a PC, recognize the outputs of the PC are probably good RS232 levels. That is, the
idle logic one is less than –3.0 VDC (usually –8.0 VDC and a logic one is greater than +3.0 VDC (typically +8.0 VDC).
Here again, the PIC can interpret a level near ground (less than minus 3.0 VDC) as being a logic one and a level near +5
VDC (greater than 3.0 VDC) as a logic zero. However, note that voltages of –8.0 and +8.0 VDC are considerably outside
the specification for levels appearing at a PIC input. I usually use a series 22K resistor which in conjunction with the
internal protection diodes clips these levels to close to TTL levels.