Код: Выделить всё
uint8_t ByteToBcd2(uint8_t Value)
{
uint8_t bcdhigh = 0;
while (Value >= 10)
{
bcdhigh++;
Value -= 10;
}
return ((uint8_t)(bcdhigh << 4) | Value);
}return ((Value/10)<<4) | (Value%10);
Или это не так эффективно?
Код: Выделить всё
uint8_t ByteToBcd2(uint8_t Value)
{
uint8_t bcdhigh = 0;
while (Value >= 10)
{
bcdhigh++;
Value -= 10;
}
return ((uint8_t)(bcdhigh << 4) | Value);
}А если заменить деление на десять на:HHIMERA писал(а):Для F0 быстрее будет с вычитанием (аппаратное деление отсутствует)
Код: Выделить всё
uint8_t div10(uint8_t value)
{
return ((uint32_t)value * 205) / 2048;
}