Цитата(sheld @ Oct 27 2009, 10:20)

К сожалению С почти не знаю, поэтому пишу на асме.
Текщая проблема следующая: 1е6 занимает 5 байт, а пять байт делить на 4байтное число не умею (
делить 1е6 на 16, а потом в конце всех вычислений умножать на 16 можно, но погрешность наступает чудовищная при большом числе отсчетов таймера!
P.S. все время разработки меня не отпускает мысль что я делаю через Ж*ПУ...
Т.е. ваш 1 МГц занимает 5 байт? А чего так? Раз пишите на ассемблере то отведите для исходной частоты 1МГц 3 байта. Напишите функцию деления 3хбайтного числа на 2х байтное (думаю для генерации частоты вы используете TC1?) с возвратом 2х байтного целого и одного байта остатка (если нужно) - div_3_2.
А метод деления самый простой - вычитаете делитель из делимого пока не получите отрицательный результат. Потом возвращаетет целую часть плюс остаток. Например 17/6: 17-6 = 11 (целое 1, остаток 0), 11-6=5 (целое 2, остаток 0), 5-6=-1 (целое 2, остаток 5 - возвращаем результат).
По поводу перевода в двоично-десятичную систему столько всего написано.....
Стоит только поискать по форуму или в гугле