Цитата(ttron @ Jan 10 2007, 17:28)

Нужно организовать искусственный холодный старт микроконтроллера PIC16F877. Для этого просто сбрасываю в ноль бит POR регистра PCON и перехожу на 0-й адрес (обычно этот бит сбрасывается аппаратно при включении питания). Там программа анализирует этот бит и работает по "холодному" старту, а затем устанавливает бит POR, чтобы все остальные рестарты были "теплые".
Корректно ли так делать, или есть какие-то подводные камни?
POR и BOR программно можно только установить в 1. Сбрасываются в 0 они аппаратно.
Если пишете на асме, то просто перед "goto 0" запишите в пару-тройку-... GPR какую-нибудь сигнатуру и анализируйте ее после сброса. Если на С, то определите пару-тройку-... переменных как persistent (они не будут инициализированы 0 в startup'е), дальше аналогично.
А если хочется совсем исключить вероятность ошибочного распознавания причины сброса, пишите флаг в EEPROM.