Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: двоичное представление числа с IAR AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
allmaker
Есть кусок кода, содержащий массив знакогенератора из пары тысяч констант вида 0bxxxxxxxx, который надо портировать в мой проект на С в IAR AVR.
const u8 font[][6] = {
{ // ' '
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
},{ // '!'
0b00000000,
0b00000000,
0b11111010,
0b00000000,
0b00000000,
0b00000000,
...

Насколько я понимаю двочное представление чисел IARу чуждо.
Чую, что есть адеккватное решение.
Помогите плз.
MALLOY2
Оно чуждо не IAR а языку С и C++.
Я бы делал так:
Все это содержание перегнал бы в обычный бинарник, создвл бы специальную секцию во флеш, прилинковал бы туда этот бинарник.


Второй вариант сделать 256 дефайнов вида
Цитата
#define 0b00000000 0x0
#define 0b00000001 0x1
#define 0b00000010 0x2
...
#define 0b11111111 0xFF


Возможно уже есть готовый такой файл поищите по форуму.
Alex11
или, как вариант обрежьте 0 перед b, напишите 256 #define в нормальные числа и оно будет транслироваться.
Пока писал уже предложили. Только 0 все равно нужно отрезать.
_Артём_
Цитата(allmaker @ Mar 22 2012, 16:06) *
Насколько я понимаю двочное представление чисел IARу чуждо.


Чуждо.
Напишите утилиту которая конвертирует ваши 0b100000 в 0xXX.
Это не сложно.
Nixon
Вопрос поднимается с завидной регулярностью. Хоть в шапку выноси.
http://bytes.com/topic/c/answers/216333-bi...constant-macros
или
http://electronix.ru/forum/index.php?showt...4&hl=BINARY
ViKo
Код
/* Макро для использования двоичного формата чисел */
#define _BITSET(bits) \
  ((uint16_t) ( \
  (bits % 010) | \
  (bits / 010 % 010) << 1 | \
  (bits / 0100 % 010) << 2 | \
  (bits / 01000 % 010) << 3 | \
  (bits / 010000 % 010) << 4 | \
  (bits / 0100000 % 010) << 5 | \
  (bits / 01000000 % 010) << 6 | \
  (bits / 010000000 % 010) << 7 | \
  (bits / 0100000000 % 010) << 8 | \
  (bits / 01000000000 % 010) << 9 | \
  (bits / 010000000000 % 010) << 10 | \
  (bits / 0100000000000 % 010) << 11 | \
  (bits / 01000000000000 % 010) << 12 | \
  (bits / 010000000000000 % 010) << 13 | \
  (bits / 0100000000000000 % 010) << 14 | \
  (bits / 01000000000000000 % 010) << 15))
#define BIN(bits) _BITSET(0##bits)

/* Макро для использования четверичного формата чисел */
#define _PAIRSET(digits) \
  ((uint16_t) ( \
  (digits % 010) | \
  (digits / 010 % 010) << 2 | \
  (digits / 0100 % 010) << 4 | \
  (digits / 01000 % 010) << 6 | \
  (digits / 010000 % 010) << 8 | \
  (digits / 0100000 % 010) << 10 | \
  (digits / 01000000 % 010) << 12 | \
  (digits / 010000000 % 010) << 14))
#define QUAD(digits) _PAIRSET(0##digits)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.