Quote (xxxmonejall)
Мне нужно чтобы этот результат был равный от 0=0 до 255=1400.
Есть такой вариант:
if B1 = 1 then B5 = 3
if B1 = 2 then B5 = 8...
Гм...
Не, такой вариант тоже имеет право на существование, но уж больно он громоздкий.
Гораздо проще умножить результат с АЦП на 5,49 и получить диапазон 0-1400.
Отсутствие в пикбейсике дробных чисел - не проблема, умножаем результат на 549, а затем делим на 100. Единственная тонкость в данном случае, что 255*549 не укладывается в 16-битную переменную word, посему надо использовать штатную функцию DIV32, которя позволяет поделить 32-битный результат умножения на 16-битный делитель (точнее, 31-битный на 15-битный - см. мануал).
Вот код, который заменяет всю вышеприведенную портянку if ... then:
B1 var byte
B5 var word
B5 = B1 * 549
B5 = DIV32 100
Усе! Проверяйте!
P.S. В данном коде округление до целого числа происходит не совсем корректно, просто отбрасывается дробная часть. В вашем случае, как мне кажется, приемлемо. Если же позарез нужно округление по правилам математики (напр. 100,8 => 101), код надо усложнить на пару строчек.