Кусок кода приведенный автором написан криво, очень криво, но я спишу это на трудности переноса сути вопроса из большого проекта

А вот что я заметил:
1) константа step ( которая обьявлена вовсе не как константа) объявлена как int и занесено туда значение 0х100, а затем этой "константой" автор инициализирует
8 битный счетчик TMR0
2) зачем в главном цикле while(1){} производится постоянно переинициализация таймера(останов, загрузка опять же 16 битным значением 8 битного регистра счета, старт с предделителем)?
3) далее зачем то ждем 1000 циклов таймера чтобы сбросить WatchDog, причем используется переменная long int step_kol. хотя тут хватило бы и простого int.
4) затем задержка на 5 сек во время которой продолжаются прерывания таймера.
В итоге, автор не написал как работает данный кусок, но я предположу, что происходит постоянная генерация на ноге PortC.0 с частотой переполнения 8 битного таймера на частоте XTAL/1024, т.е. частота XTAL/1024/256, возможно , с короткими перерывами. Также предположу что автор хотел генерировать 1000 импульсов с перерывом в 5 секунд, но данный кусок этого просто не может обеспечить.