Объединить два полубайта в один байт
- Войдите на сайт для отправки комментариев
Втр, 26/04/2016 - 23:48
пытаюсь использовать LED-матрицу 5х7 в горизонтальном положении.
Есть такие массивы, представляющие собой цифры:
const byte dig2[5] = {B01110000, B00010000, B01110000, B01000000, B01110000}; // цифра 2 размерностью 3х5 const byte dig4[5] = {B01010000, B01010000, B01110000, B00010000, B00010000}; // цифра 4 размерностью 3х5
Как их склеить в один массив, представляющий собой двузначное число?
byte dig24[5] = {B01110101, B00010101, B01110111, B01000001, B01110001}; // число 24
C = (A<<4) + B; Так не получается?
Ну, нижнюю сдвинуть вправо на 4 бита и сложить по OR с верхней. И так в цикле по всему массиву. Нет?
Если это константа, то так и напишите, как dig24 описана - один раз ручками потрудитесь, цифр немного.
Или так:
Если несколько строк, то заверните в ещё один цикл по строкам. Может быть, знатоки макросов помогут сделать код, который компилятор выполняет, а не процессор.
C = (A<<4) + B; Так не получается?
Так не получится: движение не в ту сторону, использовать "+" вместо "or" при сдвиге влево нельзя, ибо знак переноса прицепится. Да и вообще, заменять or на + опасно, ибо флаг переноса, от предыдущей операции оставшийся, легко зацепится. :)
Если это константа, то так и напишите, как dig24 описана - один раз ручками потрудитесь, цифр немного.
Или так:
Если несколько строк, то заверните в ещё один цикл по строкам. Может быть, знатоки макросов помогут сделать код, который компилятор выполняет, а не процессор.
А or и shr Вы макросами определили? Вы ж их не любите! :)
нет, надо динамически формировать массив, т.к. на индикатор физически влазит две циферки.