denya писал(а):отзеркалил байт, все стало хорошо, спасибо

Прекрасно

denya писал(а):не совсем понял что вы имеите в виду.
Я спрашивал про вот это:
Исправил вызовом функции через переменную:
U_AB = ADC_AB_U();
- не понял как работает?
Вообще, заглянул в доку от Кейла и понял, что проще можно делать.
Например так:
Код: Выделить всё
number = 173; //например надо вывести 1,73 V. Выводим:
printf ("%bu,%bu%bu%c V\n",number/100,(number/10)%10,number%10);
В терминале будет: 1,73 V
Или просто вывести 173:
denya писал(а):p/s. Нашел метод отзеркаливания байта, но не понял до конца суть работы:
Хорошая функция, мне понравилась, только в названии
InverseByte некорректно. Но это неважно.
В условии if( b & 1 ) единица это маска, накладываемая на байт:
Код: Выделить всё
0b00110000 //исходный байт
&
0b00000001 //маска
Условие сравнивает биты в самом младшем разряде байтов.
То есть, восемь раз проверяем, что находится самом младшем бите изменяемого байта
b.
Если проверяемый(самый младший) бит равен единице, то пишем единицу в соответствующую позицию
измененного(зеркального) байта
ret. Если нет, то там остается нуль.
Затем сдвиг вправо исходного байта и счетчика
i, значит потом будет проверяться следующий бит.