03.03.2013, 11:06
|
|
Частый гость
Регистрация: 01.12.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 34 раз(а) в 10 сообщении(ях)
|
Re: IAR Embedded Workbench
Ошибка проявляется когда я использую CHAR_WIDTH(c)
например
попробуйте x=CHAR_WIDTH(c);
тогда компилятор выдает ошибку что ему не понятен символ с
|
|
|
|
03.03.2013, 11:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: IAR Embedded Workbench
А что такое "с" у Вас и где оно определено ?.
В дефайне "с" - формальный параметр, который заменяется на Ваш реалный при использованиэтого дефайна.
Нескромный вопрос - Вы что нить программировали на СИ?
|
|
|
|
03.03.2013, 12:26
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от Boba_spb
|
А что такое "с" у Вас и где оно определено ?.
В дефайне "с" - формальный параметр, который заменяется на Ваш реалный при использованиэтого дефайна.
Нескромный вопрос - Вы что нить программировали на СИ?
|
![Валяюсь от смеха](images/smilies/icon_biggrin.gif)
А зачем? Столько форумов! Глядишь - напишут ... Гдето поиском найдёт ... Программирование - это просто.... Любой сейчас может, это не туалет чистить, не траву косить ... Здесь думать и читать уже напрочь не надо ...
|
|
|
|
03.03.2013, 12:40
|
|
Частый гость
Регистрация: 01.12.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 34 раз(а) в 10 сообщении(ях)
|
Re: IAR Embedded Workbench
На си програмировал только не с такими вывертами вернемся к строчке
#define CHAR_WIDTH(c) (font-›u8Flags & FONT_FIXEDWIDTH ? ((int)font-›asFontCharInfo)&0x0FF : font-›asFontCharInfo[(c) - font-›u8FirstChar].width)
Здесь мне непонятно как выполняется строчка asFontCharInfo[(c) - font-›u8FirstChar].width
в своей програмке если я подставлю вместо с -1 то без ошибок все идет
например
x=font-›u8Flags & FONT_FIXEDWIDTH ? ((int)font-›asFontCharInfo)&0x0FF : font-›asFontCharInfo[1 - font-›u8FirstChar].width;
немного инфы
#define FONT_FIXEDWIDTH 0x01
#define FONT_PACKEDDATA 0x02
typedef struct __tagFONT_CHAR_INFO {
uint16_t width;
uint16_t start;
} FONT_CHAR_INFO;
typedef struct __tagFONT_INFO
{
uint8_t u8Height; ///‹ Высота символов
uint8_t u8FirstChar; ///‹ индекс первого символа
uint8_t u8LastChar; ///‹ Индекс последнего символа
uint8_t u8Flags; ///‹ Флаги шрифта
const FONT_CHAR_INFO *asFontCharInfo; ///‹ таблица информации о символах
const uint8_t *au8FontTable; ///‹ Массив данных шрифта
} FONT_INFO;
|
|
|
|
03.03.2013, 12:50
|
|
Частый гость
Регистрация: 01.12.2007
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 34 раз(а) в 10 сообщении(ях)
|
Re: IAR Embedded Workbench
Ну догнал короче сам понимаю что для вас это все детский сад короче действительно надо писать в проге CHAR_WIDTH(1) 1 или другое значение это так для примера тогда прога подменяет с на 1
|
|
|
|
03.03.2013, 13:04
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от Freerider
|
Ну догнал короче сам ...
|
Уже польза от форума. И самому приятно.
|
|
|
|
03.03.2013, 18:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от Freerider
|
Ну догнал ... надо писать в проге CHAR_WIDTH(1) 1 или другое значение ...
|
Не, еще не догнал. Какой смысл писать " CHAR_WIDTH(1) 1 или другое значение", если можно сразу подставить ширину символа с номером " значение" и не париться с непонятными дефайнами? И, кстати, необходимость в структурах тоже отпала бы!
__________________
There's always more than one way to skin a cat.
|
|
|
|
03.03.2013, 18:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: IAR Embedded Workbench
Все это для опеределения ширины растра символа.
Если ширина всех символов одинаковая, то можно и не пользовать эту конструкцию.
А если ширина символов разная, то , например,
int width=CHAR_WIDTH('A');
width будет равно ширине символа 'A'
С фонтами есть чем поразвлекаться - интервал, кернинг .. и т.д.и т.п !!!
А если исчо в векторные шрифты занырнуть ...
|
|
|
|
13.03.2013, 12:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: IAR Embedded Workbench
А если я еще не все книги прочитал, меня тут не запинают?
Вопрос такого плана:
Есть 20-ти битное число 11111111111111111111=1 048 575 т.е максимум 7 знаков. Мне нужно вывести его на LED семисегментный индикатор, и только старшие 4 цифры, но при этом еще и округлить.
Для приведенного примера должно высветить 1049.
Чтобы не изобретать велосипед какие есть функции или эффективный алгоритм чтобы это реализовать?
Я делаю так: делю исходное на 10 без остатка, затем отнимаю от него-же результат умноженный на 10 и т.д. - получается не очень быстро по тактам и длинно. И это еще без округления!
ps
МК 8-ми битный
__________________
Мелочи не решают главного. Они решают всё!
Последний раз редактировалось gary2007; 13.03.2013 в 12:59.
|
|
|
|
13.03.2013, 13:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: IAR Embedded Workbench
Сдвигай последовательно вправо, параллельно в памяти считай степени двойки в десятичном виде (тупо прибавляя число само к себе), и если в результате сдвига выдвигается единица - прибавляй текущую степень двойки к результату. Алгоритм сложнее, но зато без делений и по идее самый быстрый для АВР
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подниму тему WinAVR vs IAR
|
oleg110592 |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.10.2015 14:06 |
Часовой пояс GMT +4, время: 02:37.
|
|