Communicating with a micro-controller at runtime, is a very useful
facility. It can be used for debugging, or to send commands etc. One of the easiest available protocol to communicate is UART. It requires a pin for transmit and a pin for receive, and the GROUND connection. There are many available programs that allow us to communicate using UART on the serial port, or using a usb-serial adapter. e.g. hyperterminal, minicom, etc.
However, not all microcontrollers have UART ports in built.
i was taking a look at the UART protocol, and it seemed pretty simple to implement. So i gave it a go, and was zapped when it just worked the first time :).
Here is a little app that accepts 2 byte commands. Toggles LATD1 when it receives the command "TG", and echoes back the command after its done. Invert flag is provided. ( Inversion may be needed if we are not working directly with a real serial port). Tested with minicom @9600 baud, with hardware-flow-control OFF, so that it sends the chars we type.
It is tested on the PIC18F4550, will need modifications to run on other microcontrollers.
The code is attached.