1) Уберите TIFR = (1<<TOV0); TIFR = (1<<TOV1); из процедур обработки прерывания, этого не нужно, т.к если прерывание произошло, то этот флаг сбрасывается сам. А вот присваивать TIFR'у значение вредно, т.к. вредит другому таймеру. И если уж так хочется сбрасывать TIFR сручную, то делайте это с одним битом, а не со всем его содержимым.
2) Командой TIMSK = (1<<TOIE0); в 4-ой строке вы убиваете ранее занесенное туда значение TIMSK = (1<<TOIE1); в 1-ой строке кода. Вы хоть понимате, что TIMSK один на оба таймера и после второго присваивания эффект прошлого присваивания пропадает? Это и есть ваша ошибка, из-за которой первый из программируемых таймеров перестает работать, как только вы программируете второй. Надо писать TIMSK = (1<<TOIE1) | (1<<TOIE0); сразу для двух таймеров или для второго таймера ДОБАВЛЯТЬ бит: TIMSK |= (1<<TOIE0);
|