1) ADCSRA |= (1<<ADEN); /*Разрешаем работу ADC */ Переносим в void ADC_Init(void) 2) ADCSRA &= ~(1<<ADEN); /*Запрещаем работу ADC*/ Убираем вообще 3) float Measured_U=0; Меняем тип на unsigned long Measured_U=0; 4) temp_ADC=ADC; и саму переменную temp_ADC Убираем вообще 5) Measured_U += (temp_ADC/1024.0)*5.0 ; Заменяем на Measured_U +=ADC; 6) return (Measured_U/250); Заменяем на return( ((float)Measured_U) * ( 5.0/(1024.0*250.0)) )
Т.о. ( 5.0/(1024.0*250.0)) - будет вычислен препроцессором 1 раз ещё ПЕРЕД (!) компиляцией.
Такие изменения позволят уменьшить ресурсоёмкость ADC_Measured_Voltage в несколько ТЫСЯЧ (!) раз. Пока так. Но в дальнейшем в этом месте и в функциях вывода на ЖКИ плавающую точку желательно заменить на фиксированную.
Всегда имейте в виду : этот контроллер (да и ARM тоже) не имеет операции деления. Она заменяется большушими подпрограммами. Как и работа с плавающей точкой.