Ohne jetzt auf deinen Code und das MPLab einzugehen.
Das die Abweichung schwankt kann eigentlich nicht sein, wenn er immer gleich zählt.

Also nicht einmal blinken messen, sondern gucken wielange es dauert bis die LED 100mal geblinkt hat, ist sehr viel genauer. Daraus kannst du denn einen Korrektuwert errechnen.

Und nochwas, Programmcode bitte immer in Code-Tags.