zeleny (04.10.2013 16:26, просмотров: 87) ответил sierra на Есть ли в среде IAR функции перевода из десятичного числа в строку и наоборот?
вывод в буфер LCD: //32-bit division with remainder
u8 divmod10_rem;
u32 divmod10(u32 n) {
u32 quot = n >> 1;
quot += quot >> 1;
quot += quot >> 4;
quot += quot >> 8;
quot += quot >> 16;
u32 qq = quot & ~7ul;
quot >>= 3;
divmod10_rem = n - ((quot << 1) + qq);
if (divmod10_rem > 9) {
divmod10_rem -= 10;
quot++;
}
return quot;
}
//convert binary 0..15 to HEX char
u8 lcd_b2h(u8 b) { return (b <= 9) ? (b + '0') : (b + 'A' - 10); }
//write 32-bit signed decimal n to buffer pos, width w, and point position p
void lcd_wr_s32(u8 pos, s32 n, u8 w, u8 p) {
u8 dp = 0;
u8 s = 0;
if (n < 0) { n = -n; s = 1; }
if (p) w--;
while (w--) {
if (p && (p == dp)) lcd_buf[pos--] = '.';
u8 nz = (n != 0);
n = divmod10(n);
if ((dp == 0)||nz) lcd_buf[pos] = lcd_b2h(divmod10_rem);
else {
if (s) {
lcd_buf[pos] = '-';
s = 0;
} else lcd_buf[pos] = ' ';
}
pos--; dp++;
}
}