Цитата(Метценгерштейн @ May 24 2010, 13:20)

Ведь наша локальная переменная будет ждать, что тиковая больше неё на 200, а тиковая дойдет до границы своего размера и обнулится и больше нашей уже никогда не станет.
Переменная обнулится, произойдет ее переполнение, а счет продолжится дальше. Потеряется старший разряд, но этот момент ни на что не повлияет, т.к. вычитание в сравнении
беззнаковое!
Для наглядности пример.
Допустим CntMC и timeStamp 16-и битные переменные (макс. значение 65535 в десятичном виде или 0xFFFF в 16-иричном). Значение переменной timeStamp - 65530, CntMC - 210. Совершенно точно прошло более 200 тиков прерываний, а именно (65535-65530)+1+210=216. Беззнаковое вычитание 210-65530 даст точно такой же результат - 216. 216>200, поэтому условие в сравнении ((CntMC-timeStamp)>=200) будет истинно.
Поясню откуда числа.
65535-65530 это разница в значениях счетчика до момента его переполнения.
1 - это учитываем состояние нуль.
210 - текущее значение тиковой переменной, после переполнения.
Если сомневаетесь, то переведите числа в 16-тиричный вид и посчитайте сами на виндусовом калькуляторе в инженерном режиме, ограничив его разрядность 2-мя байтами .
Цитата(Метценгерштейн @ May 24 2010, 13:20)

Где можно почитать про объявления переменный как простые, или как static или как volatile? Или вкратце скажите, чем они отличаются?
В "букваре" языка Си. Или в
стандарте Си. Вот только volatile это
квалификатор, а не тип переменной, определяющий область ее распределения и видимости.
Цитата(Метценгерштейн @ May 24 2010, 13:20)

и как выделить мой код, чтобы он стал виден как у Вас код?
Используйте тэги [ code ] и [ codebox ] для оформления цитаты кода. Кнопочка

в редакторе вставляет первый из них. Второй, к сожалению, только вручную, редактированием сообщения.