Źle podchodzisz do tego przeliczania

to makro powstało nie po to aby na wyjściu obliczać mikrosekundy panie kochany a ilości tyknięć timera. Dlatego te twoje wyliczenia są o tyle złe że na końcu dodałeś sobie us!
#define TOLERANCE 200
#define MIN_HALF_BIT ir_micro_s(889 - TOLERANCE)//((689)*(16M/1M)/8) czyli (689*2)czyli MIN_HALF_BIT = 1378
us#define MAX_HALF_BIT ir_micro_s(889 + TOLERANCE)//(1089*2)czyli MIN_HALF_BIT = 2178
us#define MAX_BIT ir_micro_s((889+889) + TOLERANCE)//(1978*2) czyli MAX_BIT = 3956
uswięc jeszcze raz to nie us - tylko ilość tyknięć timera - spróbuj to sobie przeliczyć dla 8MHz

to się akurat wtedy będzie zgadzało z mikrosekundami ponieważ przy 8MHz jedno tyknięcie to 1us .... ale już przy 16us jak się domyślasz nie

_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]