обходитесь без floatdanger3466 писал(а):Такая строчка мне обходится в 3,5кб, из-за дробной части? Как это обходят?
drob = (unsigned char)(drob * 0.625);
drob = (drob * 1000UL) / 625; // как-то так
обходитесь без floatdanger3466 писал(а):Такая строчка мне обходится в 3,5кб, из-за дробной части? Как это обходят?
drob = (unsigned char)(drob * 0.625);
danger3466 писал(а):Такая строчка мне обходится в 3,5кб, из-за дробной части? Как это обходят?
drob = (unsigned char)(drob * 0.625);
Мастер Ломастер писал(а):обходитесь без floatdanger3466 писал(а):Такая строчка мне обходится в 3,5кб, из-за дробной части? Как это обходят?
drob = (unsigned char)(drob * 0.625);и в данном случае у вас абсолютно бессмысленное приведение типа.
drob = (drob * 1000UL) / 625; // как-то так
Мастер Ломастер писал(а):компилятор не жаловался, а справедливо вас предупреждал, что вы написали неудобоваримую вещь в выражении. UL - это unsigned long для константы. я ведь рекомендовал вам почитать букварик по Си....
danger3466 писал(а):Такая строчка мне обходится в 3,5кб, из-за дробной части? Как это обходят?
drob = (unsigned char)(drob * 0.625);
Мастер Ломастер писал(а):обходитесь без floatи в данном случае у вас абсолютно бессмысленное приведение типа.
drob = (drob * 1000UL) / 625; // как-то так
BerZerK-ku писал(а):Какой то сумбур в голове, после прочтения вашего поста. Я вас правильно понял: умножение на переменную типа float жрет 3кБ памяти, но осуществляется всего за 2 такта, а использование целочисленных умножения с последующим делением, получается выигрыш по памяти, но зато деление осуществляется за 300 тактов?
FreshMan писал(а):скажите пожалуйста, сдвиг в право содержимого регистра это уменьшение его значения, а в лево - это увеличение ?
Мастер Ломастер писал(а):обходитесь без floatdanger3466 писал(а):Такая строчка мне обходится в 3,5кб, из-за дробной части? Как это обходят?
drob = (unsigned char)(drob * 0.625);и в данном случае у вас абсолютно бессмысленное приведение типа.
drob = (drob * 1000UL) / 625; // как-то так
Код: Выделить всё
drob>>=3;
drob*=5;
зачем столько мороки ??????
Код: Выделить всё
while (1)
{
if (PIND.0==1) // Проверка состояния переключателя
{
rab = 0b10000000; // Сдвиг вправо
while (rab!=0)
{
PORTB=rab^0xFF; // Запись в порт с инверсией
rab = rab >> 1; // Сдвиг разрядов
delay_ms (200); // Задержка на 200 мсек
}
}
else
{
rab = 0b00000001; // Сдвиг влево
while (rab!=0)
{
PORTB=rab^0xFF; // Запись в порт с инверсией
rab = rab << 1; // Сдвиг разрядов
delay_ms (200); // Задержка на 200 мсек
}
}
};
}

Код: Выделить всё
rab = 0b01111111; // Сдвиг вправо
while (rab!=0)
{
PORTB=rab
rab = rab >> 1; // Сдвиг разрядов
delay_ms (200); // Задержка на 200 мсек
} Код: Выделить всё
while (rab!=0)
{
PORTB=rab
rab = rab >> 1; // Сдвиг разрядов
delay_ms (200); // Задержка на 200 мсек
}