почитай мой "опус" про прием кодов - там все это есть:
как менять MCUCR - это в даташите глядеть надо или в визарде каком-нибудь (как будто можно такие вещи напамять знать

)
cli и sei ГЛОБАЛЬНО останавливают и запускают прерывания... а если тебе надо только timer0 остановить, так зачем все глушить? КРОМЕ конечно случая, где действ. надо все заглушить
настройка таймера (тут о timer1 речь идет):
void tmr_init (const char en) {
if (en) {
TCNT1 = tmr_cnt; // таймер на 200 us
TCCR1B = tmr_div; // div = 8
TIMSK |= 1 << TOIE1;
} else {
TCCR1B = 0x00;
TIMSK &= ~ (1 << TOIE1);
};
}
TCNT1 = *** - это просто ты восстанавливаешь счетчик, с этого числа он будет идти вперед, пока не перевалит за 0xFF и не вызовет прерывание (FF это для 8-битного конечно таймера, а тут FFFF)
TCCR1B = <>0 - вот тут ты таймер и запускаешь, одновременно устанавливая, как часто он ++ делать будет - каждый такт контроллера, или каждые 8, или ... ну вобщем ты понял думаю
TIMSK |= 1 << TOIE1 - тут ты разрешаешь вызывать прерывания, когда счетчик переваливает свой максимум (т.е. можно разрешить прерывания и не запустить счетчик - и ничего никогда не произойдет; можно запустить счетчик, но не разрешить прерывания - то же самое)
что куда паять к сом-у - вот например картинка, как 2313 подключается к сом-у:

; вместо мах232 есть аналоги дешевле (st232 напрмиер) или вообще на 2-х транзисторах, как в аппноуте 910 атмеловском
пример кода для icc avr или со стороны компа? со стороны компа просто - для делфи полно компонентов, а я так вообще терминальной программой часто пользуюсь и хватает
со стороны icc avr ничего нету; был у меня кусок, которым пользовался все время для связи через сом, с fifo, только он для асм-а, а сейчас все сообщения на lcd вывожу... но теоретич. в хелпе icc avr почитай, там как-то совсем просто - подключить какой-то *.h и потом просто тупо printf делать - все в послед. порт уйдет