If your microcontroller program locks up for some reason, a watchdog timer will reset it and (hopefully) make it start running again. This is a link to using the watchdog timer built into an Arduino. Most of the concepts apply to most other microcontrollers, though. A watchdog is a good tool. It doesn't replace good code, but it is a big help when needed.