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.
Its also available as a module to include at https://github.com/manojmo/pic_micro