Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я создавал массив символов во FLASH (правда у меня цифры 24х40 и усеченный шрифт 16х24). Перед выводом создавал образ экрана, точнее его части, т.к. ОЗУ хватало только на 64 строки (индикатор 400*240 пикселей), где делал распаковку текущего символа на строки и загрузку в ОЗУ. Естественно, постоянная часть, которая уже была отправлена в ОЗУ индикатора не трогалась.

- Вложения
-
- индикатор LS без стрелки.jpg
- (32.78 КБ) 493 скачивания
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Если памяти во FLASH достаточно, то можно под каждый символ отводить максимальную ширину, тогда адрес легко вычисляется. Первый байт знакогенератора - ширина символа.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
255 символов 32х32 пиксела (далеко не гигантский шрифт) займут всего ничего 255*32*8=65280 байт... а так - да, можно отводить и максимальную ширину...trofim2 писал(а):Если памяти во FLASH достаточно, то можно под каждый символ отводить максимальную ширину, тогда адрес легко вычисляется.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
255 символов 32х32 пиксела (далеко не гигантский шрифт) займут всего ничего 255*32*8=65280 байт...
Разве не 255*32*4?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
255 символов 32х32 пиксела (далеко не гигантский шрифт) займут всего ничего 255*32*8=65280 байт... а так - да, можно отводить и максимальную ширину...trofim2 писал(а):Если памяти во FLASH достаточно, то можно под каждый символ отводить максимальную ширину, тогда адрес легко вычисляется.
Для М128 это всего половина памяти.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
1. При описании каждого символа шрифта указываетс его ширина. Т.е. в массиве байтов, описывающих пикселы символа первый байт задает ширину этого символа.
Да, спасибо. Этим способом и воспользуюсь.
По предварительным подсчётам:
При средней ширине символа в 8 байт некоторые символы (ориентировочно) получатся до 12-ти байт +1 байт ширина символа.
Даже если округлю до 15 байт на символ в две строки - памяти хватит.
Большое спасибо.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Сделал первым способом. По коду громоздко, если средняя ширина одного знака 7px, то по максимуму все увеличиваются до 11px (в полтора раза), + 1 байт ширина, +1 - "0", итого 24 байта на знак. Но возможно буду ещё увеличивать до 16х18, когда дисплеи 240х320 придут. А это примерно 72 байта на знак выйдет (16*1,5*3). Чем цветнее дисплей, тем мельче пиксель.
В голове ещё третий способ нарисовался. Посмотрю, что будет по памяти, и возможно сделаю "не вашим не нашим", т.е несколько таблиц с символами (шириной 2, 4, 7, 11 px), символы задавать кодами и через условие делать перенаправление на таблицы.
PS Да, с разными таблицами буду пробовать, экономия по памяти получится ощутимая, так как можно некоторые символы кириллицы и латиницы (17 насчитал ABCEHKMOPTXaceopy, а 17х72=1224 байта) на один знак вешать.
PS2 С переменной шириной шрифта определился, но от ASCII отказываюсь, т. к. на больших шрифтах весьма не рационально.
В голове ещё третий способ нарисовался. Посмотрю, что будет по памяти, и возможно сделаю "не вашим не нашим", т.е несколько таблиц с символами (шириной 2, 4, 7, 11 px), символы задавать кодами и через условие делать перенаправление на таблицы.
PS Да, с разными таблицами буду пробовать, экономия по памяти получится ощутимая, так как можно некоторые символы кириллицы и латиницы (17 насчитал ABCEHKMOPTXaceopy, а 17х72=1224 байта) на один знак вешать.
PS2 С переменной шириной шрифта определился, но от ASCII отказываюсь, т. к. на больших шрифтах весьма не рационально.
Последний раз редактировалось shonty Чт янв 17, 2019 10:26:35, всего редактировалось 5 раз.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Может почитать про "масштабируемые шрифты" для форточек...
Только вот ГДЕ?


Только вот ГДЕ?

- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вообще-то, должно быть 12 заглавных букв, совпадающих с латиницей.shonty писал(а):некоторые символы кириллицы и латиницы (17 насчитал ABCEHKMOPTXaceopy
кстати, в автомобильных номерах используются только буквы, совпадающие по начертанию с латиницей. и мне помнится, что их 12...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вообще-то, должно быть 12 заглавных букв, совпадающих с латиницей.
Видимо Y и У, но это как написать.
Решение можно найти и более оригинальное, но я пока не виртуоз, а сразу всё впитать в себя не успеваю, да и дозировать нужно.
На этом этапе сделаю по пониманию материала.
- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
да, это буква "У".
"Требованиями и условиями ГОСТа обозначено, что на автомобильных номерах могут быть использованы 12 букв из алфавита кириллицы — А, В, Е, К, М, Н, О, Р, С, Т, У и Х, так как только они имеют аналогичные буквы в латинице."
Источник: http://pravo-auto.com/kakie-bukvy-ispol ... ah-rossii/
"Требованиями и условиями ГОСТа обозначено, что на автомобильных номерах могут быть использованы 12 букв из алфавита кириллицы — А, В, Е, К, М, Н, О, Р, С, Т, У и Х, так как только они имеют аналогичные буквы в латинице."
Источник: http://pravo-auto.com/kakie-bukvy-ispol ... ah-rossii/
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
2. Создается отдельная таблица, в которой хранится ширина и адрес начала символа в знакогенераторе, а сам знакогенератор в отдельной таблице
Всё таки решился сделать вторым способом. Хочу уточнить несколько деталей.
1. Байт ширины символа без разницы где размещать: в индексной таблице или таблице знакогенератора?
2. (Основной вопрос) Поиск адреса начала символа в знакогенераторе. Извините за делетантство, но на ум приходит ввести 3 параметра: это 1-й множитель, 2-й множитель (или число проходов первого параметра) + слагаемое (в качестве довеска, не все ж числа делятся без остатка).
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Здравствуйте ребята! Прогу пишу на Ассемблере для МК Atmega8. Подскажите как из регистровой пары (например Х - регистр) сделать двухбайтный счетчик с инкрементом и декрементом?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
adiw xl,1 - инкремент
sbiw xl,1 - декремент
sbiw xl,1 - декремент
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Т.е. при достижении числа 256 xl обнулится, а в младшем бите xh запишется 1?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
В случае с adiw/sbiw обрабатывается сразу вся регистровая пара
Xh:Xl, а не раздельно младший и старший байты.

Xh:Xl, а не раздельно младший и старший байты.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ок! Благодарю всех за ответы!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Иногда бывает полезно псевдочтение в регистр с целью изменить содержимое регистровой пары.
Код: Выделить всё
LD R0,X+; инкремент XH:XL
LD R0,-X; декремент XH:XL