Цитата(IF_P @ Jul 20 2012, 01:20)

Вот посмотрел "cstartup" и думаю, как лучше сделать. То ли в "cstartup" дописать обработку прерывания, то ли убрать RESET из "cstartup" а описать в своей программе. Я в первом посте привел пример программы использования прерывания RESET. Но оно не работало. Сейчас понял почему. Завтра попробую поменять и испытать в "железе".
Но ведь, "оживая", МК стартует с адреса 0. И это не программой какой-то определяется, а самим железом. Вот с адреса 0 и начинается запуск, который сперва вызывает C_startup(), а тот, в свою очередь, __low_level_init(), __segment_init() и наконец, main().
Если вы вляпаете на нулевой адрес ссылку на самописный интеррапт, то именно с него и начнется выполнение кода, когда МК стартует. Ну, а кто же тогда вашу main() запускать станет, если вы про нее в своем интеррапте забыли?
Тогда уж флаг какой-то надо выставить, чтобы при сброшенном флаге ваш интеррапт устанавливал этот флаг и вызвал C_startup(), а если тот флаг уже был установлен, то делал то, что вы сейчас в интеррапте делаете. Т.е. флаг служил бы признаком того, что main() уже был запущен.