Это не совсем ANSI C, но попробуйте это:
void setup_timer_parameters(float micro_seconds)
{
//constants
float calibration = 0;
//calculables
float periods_needed = micro_seconds * 12.0 + calibration;
float target_overflows = periods_needed / 65536;
float overflows_counter = target_overflows;
float temp = periods_needed - (target_overflows * 65536);
float leftover = (long)temp;
//int overflows_needed = micro_seconds % timer_period;
fprintf(lcd_putc, "\fPN%05f TMP%05f\nTO%05f LO%05f", periods_needed, temp, target_overflows, leftover);
}
int main(int argc, char** argv)
{
setup_timer_parameters(20000F);
return 0;
}
Не похоже, что вы объявили какие-либо типы переменных, которые действительно расстроят вещи, если они не объявлены в другом месте (?)Возможно, вы захотите изменить типы в зависимости от того, действительно ли вам нужны числа с плавающей запятой, т. Е. Для некоторых из них может подойти long int или значение double, если вам нужна большая точность./MPIR.