Парни, ВЫ чего!!!

Counter - это солидное число, а вовсе не обрубок из двух битов. У него есть union-поле i типа INTEGER. На 8-битном контроллере я байты конечно экономлю, но все равно - 24 бита.
Получается надо гораздо сложнее, чем в простых приведенных вариантах.

Функционально правильно сделанно у Алексея, но ведь логические операции-то ленивые!!! Это не просто УЖОС, это УЖОС в квадрате
Ну и безусловно правильно сказал Евгений:i = (i & ~1) | ((i & 1) ^ ((i & 2) >> 1))- именно так они (ЯВУ) собаки и делают...
(btw: на PC это 3 команды:bt [Counter],1; setc al; xor byte[Counter],al- но увидеть тот компилятор, который так сделает - несбыточная мечта)
Но это другая песня. Хотяфункциональность нужна именно такая - ни шага в сторону.

Коллеги, я дико извиняюсь конечно же, что специально не заострил внимание на многобитности Counter-а... В моей-то голове - все настолько очевидным казалось

Как бы я поясню план наших размышлений (мне именно такой представляется правильным)

1) Не будем говорить о том кто чего поощряет, и что является извращением, а что нет. Такой трюк с битами есть внешняя данность. И те кто это придумывал - вовсе не дураки, не смотря на то, что не посоветовались с Федором Васильевичем. В общем, предложение: холивары - где нибудь в другой теме, про приматологию.
(btw: В электронике одновременное изменение нескольких сигналов называется гонками. А даже не существует теорий синтеза электронных схем без гонок, если одновременно меняются несколько входных сигналов. Если один - то без вопросов. Вот потому "так не математически" и устроена входная последовательность сигналов)

2) Напишем такифункционально правильныйкод на Обероне. Ей-ей не просто

3) Вспомним, что код в первую очередь пишется для Человека

4) И, обогащенные разными вариантами кодов, поразмышляем над предложением Алексея:имеет ли смысл подобный расширизм для оберона?

Если короче: перед тем как давать шаблонный ответ - давайте подумаем. Слепить шаблонный ответ - много ума не надо. Тем более, что слышали сто раз.