Цитата(Jenya7 @ Dec 30 2014, 20:41)

если счетчик обновляется медленно то это условие присутствует какое то время и я получу несколько пульсов вместо одного.
или вообще не обновляется - тогда это условие присутствует все время и я получу пульсы все время.
Если счётчик не изменяется, то зачем его проверять всё время?
Переместите проверку в то место программы, где происходит изменение счётчика:
Код
counter++; // или любая другая функция изменения counter
if !(counter % 100) PulseOut();
Если counter изменяется вне программы (volatile), тогда так:
Код
if (digit != counter)
{
digit = counter;
if !(digit % 100) PulseOut();
}
upd:
т.к. операция взятия остатка от деления тяжелая, можно находить разность счётчика и временной переменной, но тогда вызов PulseOut будет происходить не обязательно в момент перехода сотен, а просто каждые 100 импульсов. Например, если начальное значение счётчика было 17, то вызовы PulseOut() будут в 117, 217, 317 и т.д.
Код
if (counter-digit >= 100 || digit-counter >=100)
{
digit = counter;
PulseOut();
}