если нужно получить один инкремент на четыре четверти:
void up(void)
{
fineCounter++;
processNewCounter( fineCounter >> 2 )
}
void down(void)
{
fineCounter--;
onNewCounter( fineCounter >> 2 )
}
Вначале инициализируем fineCounter в 0, 1, 2 или 3 в соответствии с требуемым положением перехода грубого счетчика.
Ну и для особых пижонов можно добавить:
void onNewCounter( int newCounter )
{
if( prevCounter != newCounter ) {
prevCounter = newCounter;
onChangedCounter( newCounter );
}
}