Цитата(dimka76 @ Aug 18 2009, 17:30)

Проверте как у вас настроен INT0. На прерывание по уровню или по фронту. Если по уровню, то он и будет входить в прерывание пока будет держаться заданный уровень на входе INT0.
А кто у вас воздействует на INT0, кнопка?
И зачем у вас в функцию write_data_lcd(...) предаются GICR и GIFR ?
INT0 настроен на спадающий фронт сигнала, данный уровень не держится так как по кнопке управление,
функция write_data_lcd(...) предаёт GICR и GIFR для себя....
вообщем в конце функции стопорится и всё.....причем секунд 15 постоит и выходит из обработчика прерываний.....
если нажать в ходе зависания опять кнопку, т.е. опять ниспадающий фронт,видно как переход осуществляется в начало функции обработчика....
т.е.
clear_lcd();
write_data_lcd(GICR, 0xa0);
write_data_lcd(GIFR, 0xe0);
Поможите люди добрые....даже незнаю куда смотреть.....