Цитата(Палыч @ Jun 10 2011, 10:11)

Вы хотите правильно объявить переменную tval? А, какой диапазон значений этой переменной до этой операции? От 0 до 1920? Тогда - unsigned int...
В корне неверно.
Если unsigned int умножать на 0,625, то в результате всегда будет 0
Потому как (int)0,625 будет 0
Если нужно получать не 0, то нужно использовать float (или double, если нужно, и если оно поддерживается)
Цитата(Палыч @ Jun 10 2011, 10:11)

Применять операции с плавающей точкой в МК - очень расточительно. Достаточно привести 0.625 к виду 5/8 (деление на 8 целого = сдвиг вправо на 3), тогда
Код
tval= (5 * tval) >> 3;
Это правильно, без особой необходимости лучше плавучку на МК не использовать, здесь вам не тут, это не х86 с сопроцессором, однако.
Тем более когда речь идёт об умножении на константу