реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Зашивание текста в память микроконтроллера., Есть ли какой-либо более рацональный способ внесения текста в память к
Alex2578
сообщение Sep 12 2007, 12:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 20-02-07
Пользователь №: 25 515



Всех приветствую.

Имеем AVR, работаем в асемблере в AVR Studio.

Требуется выводить на знакосинтезирующий ЖКИ небольшие объемы текста.
В связи с этим вопрос, а есть какой-либо более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе?

Может глупость спрошу, но, например, есть ли средства, при помощи которых текстовый файл (или просто введенный куда-либо текст) можно былобы конвертнуть в HEX, или в BIN, и при помощи программатора зашить его в отведенную область памяти.

Спасибо всем откликнувшимся.
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 12 2007, 13:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



В принципе чистотеоретически - такой файл можно написать самому - марока там не большая , а вот совсем другое дело заставить программатор писать в определённую область флеша.. Не все программаторы это могут...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 12 2007, 13:40
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Alex2578 @ Sep 12 2007, 11:19) *
...есть ли средства, при помощи которых текстовый файл (или просто введенный куда-либо текст) можно былобы конвертнуть в HEX, или в BIN, и при помощи программатора зашить его в отведенную область памяти

Можно вот так, например
Код
      .cseg
      .org        0x1000      ;адрес загрузки
      .db         "the first string",0
      .db         "the second string",0
. . . . . . . . .
      .db         "the last string",0


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Sep 12 2007, 13:43
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 =GM= - это не то, автор же чётко указал -
"..более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе.."
Go to the top of the page
 
+Quote Post
dimka76
сообщение Sep 12 2007, 13:49
Сообщение #5


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



[quote name='=GM=' date='Sep 12 2007, 17:40' post='293936']
Можно вот так, например
Код
      .cseg
      .org        0x1000     ;адрес загрузки
      .db         "the first string",0
      .db         "the second string",0
. . . . . . . . .
      .db         "the last string",0

[/quote]

тогда еще метки добавить, чтобы можно было обращаться к каждой строки отдельно, а не искать ее по завершающим нулям
Код
      .cseg
      ldi   ZL,low(first);
      ldi   ZH,high(first);

      ldi   ZL,low(second);
      ldi   ZH,high(second);

      .org        0x1000     ;адрес загрузки
       first:
      .db         "the first string",0
       second:
      .db         "the second string",0
. . . . . . . . .
      last    
                 .db         "the last string",0

[/quote]


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 12 2007, 14:00
Сообщение #6


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Kuzmi4 @ Sep 12 2007, 12:43) *
2 =GM= - это не то, автор же чётко указал - "..более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе.."

Я думаю, это то, что он просил. Всё равно надо где-то текст набивать. Думаю также, что автор ветки, чтобы ввести, скажем, ваш никнейм (Kuzmi4) делает таким образом
Код
;               K    u    z    m    i    4
     .db      0x4B,0x75,0x7A,0x7D,0x49,0x34,0x00


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
BratherLU
сообщение Sep 12 2007, 14:17
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 16-05-06
Пользователь №: 17 126



http://www.atmel.ru/Binary/HD-44780.exe
Эта штука под Си заточена но если сишное обрамление убрать и добавить dB вместо того может и сгодится
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 12 2007, 14:30
Сообщение #8


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(dimka76 @ Sep 12 2007, 12:49) *
тогда еще метки добавить, чтобы можно было обращаться к каждой строки отдельно, а не искать ее по завершающим нулям

Ну, это само собой, я дал только общую идею. Хотя сам давно уже не применяю такой подход, на мой взгляд, есть более продуктивный.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
KRS
сообщение Sep 12 2007, 15:10
Сообщение #9


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



у LCD текстовых еще обычно с кодировкой русской проблемы, поэтому я например, делал программу которая читала исходный текстовый файл простейшего формата:
имя строки (метка) пробел, а дальше до конца строки сам текст
текст преобразовывался по таблице кодировки и результат выводился в asm файл, который просто добавлялся в проект.
Go to the top of the page
 
+Quote Post
Guest_=AVR=_*
сообщение Sep 12 2007, 15:52
Сообщение #10





Guests






Цитата(Alex2578 @ Sep 12 2007, 16:19) *
а есть какой-либо более рацональный способ внесения текста в память контроллера, чем заколачивать его руками в компиляторе?

Может глупость спрошу, но, например, есть ли средства, при помощи которых текстовый файл (или просто введенный куда-либо текст) можно былобы конвертнуть в HEX, или в BIN, и при помощи программатора зашить его в отведенную область памяти.
Таких утилит бродит по Сети великое множество. Гибко это умеет делать, например, WinHex, с разной степенью гибкости (и вовсе без таковой) - различные поделия типа bin2asm. Гугль тебе в помощь по этим ключевым словам
Go to the top of the page
 
+Quote Post
Alex2578
сообщение Sep 12 2007, 17:09
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 20-02-07
Пользователь №: 25 515



Всем спасибо, пробежался по ответам, завтра буду осмысливать, эксперементировать.
Go to the top of the page
 
+Quote Post
skn
сообщение Sep 12 2007, 20:27
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-03-06
Пользователь №: 15 416



Я тут давеча "конвертировал" текстовый файл для заливки его в еепром - изменил расширение с txt на bin. Строки разделял, нажимая Enter. Правда строка получилась не с завершающим нулем, а с завершающим 0xd, зато проще не придумать.
Go to the top of the page
 
+Quote Post
Alex2578
сообщение Sep 13 2007, 04:59
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 20-02-07
Пользователь №: 25 515



Цитата(skn @ Sep 13 2007, 00:27) *
Я тут давеча "конвертировал" текстовый файл для заливки его в еепром - изменил расширение с txt на bin. Строки разделял, нажимая Enter. Правда строка получилась не с завершающим нулем, а с завершающим 0xd, зато проще не придумать.


Ух ты!!!! ХИТЕР!!!
Если не требуется кирилица, то способ просто супер. Проще не придумаешь.
Go to the top of the page
 
+Quote Post
skn
сообщение Sep 13 2007, 06:52
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-03-06
Пользователь №: 15 416



Цитата(Alex2578 @ Sep 13 2007, 08:59) *
Если не требуется кирилица

У меня вроде кириллица.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 13 2007, 10:05
Сообщение #15


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



foo.txt:
Код
Требуется выводить на знакосинтезирующий ЖКИ
небольшие объемы текста.
В связи с этим вопрос,
а есть какой-либо более рацональный способ


toasm.sed:
Код
1 i\
    .cseg
1 i\
    .org 0x1000
s/^/    .db "/
s/$/",0/


sed -f toasm.sed foo.txt >foo.asm
Код
    .cseg
    .org 0x1000
    .db "Требуется выводить на знакосинтезирующий ЖКИ ",0
    .db "небольшие объемы текста.",0
    .db "В связи с этим вопрос, ",0
    .db "а есть какой-либо более рацональный способ",0


т.е. для таких простых преобразований при использовании стандартных программ (у кого как, а у меня sed и на ДВК-2 валялся под рукой), скриптики настолько просты, что никогда и не сохраняются, их заново набить проще, чем искать по диску.
Другое дело - кириллица, на всяких HD44780 кодировка странная, либо в том же sed пробовать глобальную замену делать, либо таки поискать нужную программу :-)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Alex2578
сообщение Sep 13 2007, 10:32
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 20-02-07
Пользователь №: 25 515



Там же кириллица не совпадает с кодировкой руссифицированного HD-44780
Go to the top of the page
 
+Quote Post
skn
сообщение Sep 13 2007, 11:58
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 20-03-06
Пользователь №: 15 416



Цитата(Alex2578 @ Sep 13 2007, 14:32) *
Там же кириллица не совпадает с кодировкой руссифицированного HD-44780

Сделайте таблицу перекодировки и все будет совпадать.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 13 2007, 12:47
Сообщение #18


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Не, таблица перекодировки - это некрасиво. Лишний объём флеша на то, что можно сделать до компиляции программы.

Можно перекодировку и в командный файл sed вставить, но это уже хотелось бы делать на чём-то более высокого уровня. Например, очень хороший перекодировщик
http://www.onembedding.com/tools/utility/pylcdstring/
но оно тоже рассчитано на то, что изначальный текст набивается вручную smile.gif

Кстати, а какая проблема набить вручную небольшие объёмы текста? Особенно если они не превышают объём постов в этой теме? wink.gif


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Alex2578
сообщение Sep 14 2007, 04:12
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 20-02-07
Пользователь №: 25 515



Текст длиной около 1000 символов. Ну.... в принципе 1 раз можно переморщиться..... Но проблема еще в том, что в каждом следующем приборе сообщения могут быть свои, отличные от предыдущих. И каждый раз долбить в компиляторе текст, честно говоря, не вдохновляет.
Go to the top of the page
 
+Quote Post
kolobok0
сообщение Sep 14 2007, 09:13
Сообщение #20


практикующий тех. волшебник
*****

Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417



Цитата(Alex2578 @ Sep 14 2007, 08:12) *
Текст длиной около 1000 символов. Ну.... в принципе 1 раз можно переморщиться..... Но проблема еще в том, что в каждом следующем приборе сообщения могут быть свои, отличные от предыдущих. И каждый раз долбить в компиляторе текст, честно говоря, не вдохновляет.



тут вот вопрос возник...
а собственно кто мешает инклудить Ваши строки данных как внешнии файлы.. а в файлы уже заливать кодировщиком ? Или религия не-не ?

с уважением
(круглый)
Go to the top of the page
 
+Quote Post
CDT
сообщение Sep 14 2007, 11:35
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 303
Регистрация: 3-03-05
Пользователь №: 3 044



Вот штука, которая спасет отцов русской демократии.
Да возблагодарят они (как и я) автора ее!
Прикрепленные файлы
Прикрепленный файл  text_for_HD44780.rar ( 162.06 килобайт ) Кол-во скачиваний: 1126
 


--------------------
Опыт - чудесная вещь: легко использовать, можно продать, трудно пропить.
Go to the top of the page
 
+Quote Post
qqqqqq
сообщение Sep 14 2007, 15:32
Сообщение #22


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 17-01-06
Пользователь №: 13 277



Для перекодировки во время компиляции
для иаровского асма сделал такой макрос:
;-----------------------------------
LCDstr: macro
reptc chr,\1
if 'chr'='└'
db 65
elseif 'chr'='┴'
db 160
elseif 'chr'='┬'
db 66
elseif 'chr'='├'
db 161
elseif 'chr'='─'
db 224
elseif 'chr'='┼'
db 69
elseif 'chr'='╞'
db 163
elseif 'chr'='╟'
db 164
elseif 'chr'='╚'
db 165
elseif 'chr'='╔'
db 166
elseif 'chr'='╩'
db 75
elseif 'chr'='╦'
db 167
elseif 'chr'='╠'
db 77
elseif 'chr'='═'
db 72
elseif 'chr'='╬'
db 79
elseif 'chr'='╧'
db 168
elseif 'chr'='╨'
db 80
elseif 'chr'='╤'
db 67
elseif 'chr'='╥'
db 84
elseif 'chr'='╙'
db 169
elseif 'chr'='╘'
db 228
elseif 'chr'='╒'
db 88
elseif 'chr'='╓'
db 225
elseif 'chr'='╫'
db 171
elseif 'chr'='╪'
db 172
elseif 'chr'='┘'
db 226
elseif 'chr'='┌'
db 173
elseif 'chr'='█'
db 174
elseif 'chr'='▄'
db 98
elseif 'chr'='▌'
db 175
elseif 'chr'='▐'
db 176
elseif 'chr'='▀'
db 177
elseif 'chr'='р'
db 97
elseif 'chr'='с'
db 178
elseif 'chr'='т'
db 179
elseif 'chr'='у'
db 180
elseif 'chr'='ф'
db 227
elseif 'chr'='х'
db 101
elseif 'chr'='ц'
db 182
elseif 'chr'='ч'
db 183
elseif 'chr'='ш'
db 184
elseif 'chr'='щ'
db 185
elseif 'chr'='ъ'
db 186
elseif 'chr'='ы'
db 187
elseif 'chr'='ь'
db 188
elseif 'chr'='э'
db 189
elseif 'chr'='ю'
db 111
elseif 'chr'='я'
db 190
elseif 'chr'='Ё'
db 112
elseif 'chr'='ё'
db 99
elseif 'chr'='Є'
db 191
elseif 'chr'='є'
db 121
elseif 'chr'='Ї'
db 228
elseif 'chr'='ї'
db 120
elseif 'chr'='Ў'
db 229
elseif 'chr'='ў'
db 192
elseif 'chr'='°'
db 193
elseif 'chr'='∙'
db 230
elseif 'chr'='·'
db 194
elseif 'chr'='√'
db 195
elseif 'chr'='№'
db 196
elseif 'chr'='¤'
db 197
elseif 'chr'='■'
db 198
elseif 'chr'='ж'
db 199
elseif 'chr'='и'
db 162
elseif 'chr'='╕'
db 181
else
db 'chr'
endif
endr
db 0
endm
;-----------------------------------

инклужу его из отдельного файла,
в программе пишу:

LSTEXP-
str0: LCDstr "строка по-русски"
str1: LCDstr "больщая буква Я работает"
str2: LCDstr "вместо маленькой приходится ставить вертикальную палку"
even
LSTEXP+

LSTEXP - это чтоб компилер результат этого макроса в листинг не писал,
а то уж очень нечитаемый листинг получается.
нуль в конец строки он сам добавляет...
Go to the top of the page
 
+Quote Post
GrayCat
сообщение Sep 17 2007, 06:55
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342



Внесу свои 4.(9) копеек:

перекодировщик Win1251 => HD44780, работает по принципу "фильтра":
Код
CODE4LCD < Text_1251.txt > Text_44780.txt
Применять по вкусу wink.gif . Я в makefile вставляю, перед компиляцией...
Прикрепленные файлы
Прикрепленный файл  CODE4LCD.rar ( 6.79 килобайт ) Кол-во скачиваний: 73
 


--------------------
Gray©at
Go to the top of the page
 
+Quote Post
qqqqqq
сообщение Sep 17 2007, 08:52
Сообщение #24


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 17-01-06
Пользователь №: 13 277



Макрос, разумеется, такой. (в пред. посте кодировку не сменил):


LCDstr: macro
reptc chr,\1
if 'chr'='А'
db 65
elseif 'chr'='Б'
db 160
elseif 'chr'='В'
db 66
elseif 'chr'='Г'
db 161
elseif 'chr'='Д'
db 224
elseif 'chr'='Е'
db 69
elseif 'chr'='Ж'
db 163
elseif 'chr'='З'
db 164
elseif 'chr'='И'
db 165
elseif 'chr'='Й'
db 166
elseif 'chr'='К'
db 75
elseif 'chr'='Л'
db 167
elseif 'chr'='М'
db 77
elseif 'chr'='Н'
db 72
elseif 'chr'='О'
db 79
elseif 'chr'='П'
db 168
elseif 'chr'='Р'
db 80
elseif 'chr'='С'
db 67
elseif 'chr'='Т'
db 84
elseif 'chr'='У'
db 169
elseif 'chr'='Ф'
db 228
elseif 'chr'='Х'
db 88
elseif 'chr'='Ц'
db 225
elseif 'chr'='Ч'
db 171
elseif 'chr'='Ш'
db 172
elseif 'chr'='Щ'
db 226
elseif 'chr'='Ъ'
db 173
elseif 'chr'='Ы'
db 174
elseif 'chr'='Ь'
db 98
elseif 'chr'='Э'
db 175
elseif 'chr'='Ю'
db 176
elseif 'chr'='Я'
db 177
elseif 'chr'='а'
db 97
elseif 'chr'='б'
db 178
elseif 'chr'='в'
db 179
elseif 'chr'='г'
db 180
elseif 'chr'='д'
db 227
elseif 'chr'='е'
db 101
elseif 'chr'='ж'
db 182
elseif 'chr'='з'
db 183
elseif 'chr'='и'
db 184
elseif 'chr'='й'
db 185
elseif 'chr'='к'
db 186
elseif 'chr'='л'
db 187
elseif 'chr'='м'
db 188
elseif 'chr'='н'
db 189
elseif 'chr'='о'
db 111
elseif 'chr'='п'
db 190
elseif 'chr'='р'
db 112
elseif 'chr'='с'
db 99
elseif 'chr'='т'
db 191
elseif 'chr'='у'
db 121
elseif 'chr'='ф'
db 228
elseif 'chr'='х'
db 120
elseif 'chr'='ц'
db 229
elseif 'chr'='ч'
db 192
elseif 'chr'='ш'
db 193
elseif 'chr'='щ'
db 230
elseif 'chr'='ъ'
db 194
elseif 'chr'='ы'
db 195
elseif 'chr'='ь'
db 196
elseif 'chr'='э'
db 197
elseif 'chr'='ю'
db 198
elseif 'chr'='╓'
db 199
elseif 'chr'='Ё'
db 162
elseif 'chr'='ё'
db 181
else
db 'chr'
endif
endr
db 0
endm

вместо прописной 'я' приходится альт-214 вводить...
Go to the top of the page
 
+Quote Post
Waso
сообщение Jul 8 2012, 10:24
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 268
Регистрация: 4-11-05
Пользователь №: 10 470



Тема древняя как г мамонта, но вот сейчас пришлось заморачиваться такойже проблемой, и решил поделиться своим решением. Вот взял коды из макроса qqqqqq для своей таблички...
Код
// коды букв русского алфавита в таблице контроллера жки
unsigned char __flash LcdRusChar[] =
{
  65,160,66,161,224,69,163,164,165,166,75,167,77,72,79,168,80,67,
  84,169,228,88,225,171,172,226,173,174,98,175,176,177,97,178,179,
  180,227,101,182,183,184,185,186,187,188,189,111,190,112,99,191,
  121,228,120,229,192,193,230,194,195,196,197,198,199
};
а в процедуру вывода символов на жки вставляется пара строк:
Код
  if(c >= 192) // 192 - код русской А в кодировке WIN1251
  {
    c = LcdRusChar[c-192]; // перекодировка в русские символы на жки
  }
    lcdDataWrite(c);
проблемы с буквой "я" нет. Да, перекодировка на лету, но в сравнении со общим временем обращения к ЖКИ это пшик. Ну и плюс 64 байта табличка. Зато как удобно.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Jul 9 2012, 06:12
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Waso, поддерживаю.
Я тоже делал что-то родственное на CvAVR.
Да, жрёт лишние пол-копейки флэша, зато удобно и переносимо на любые компиляторы (применял и на WnAVR), в отличие от асмовских макросов и прочих "хитростей", которые у каждого компилятора со своими выкрутасами.

Сообщение отредактировал hd44780 - Jul 9 2012, 06:14


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
uni
сообщение Jul 25 2012, 03:13
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 5-04-06
Из: Екатеринбург
Пользователь №: 15 809



Есть даже универсальное решение одновременно для IAR и WinAVR, но на С++. Кому интересно посмотрите как это сделано в классе CLCD.

Ну и мой вариант таблицы перекодировки:

CODE
/* +----------------+
|Таблица символов|
|Windows (ANSI) |
+----------------+ +----------------+
|0123456789ABCDEF| |0123456789ABCDEF|
+----------------+ +----------------+
0x00 |( пропущено ) | 0x80 |( пропущено ) |
0x10 |( пропущено ) | 0x90 |( пропущено ) |
0x20 | !"#$%&'()*+,-./| 0xA0 |( пропущено ) |
0x30 |0123456789:;<=>?| 0xB0 |( пропущено ) |
0x40 |@ABCDEFGHIJKLMNO| 0xC0 |АБВГДЕЖЗИЙКЛМНОП|
0x50 |PQRSTUVWXYZ[\]^_| 0xD0 |РСТУФХЦЧШЩЪЫЬЭЮЯ|
0x60 |`abcdefghijklmno| 0xE0 |абвгдежзийклмноп|
0x70 |pqrstuvwxyz{|}~ | 0xF0 |рстуфхцчшщъыьэюя|
+----------------+ +----------------+
*/

// Таблица перекодировки из CP1251 (WIN)
#ifdef __ICCAVR__
__flash uint8_t CP1251_TO_CPHD44780[ 256 ] = {
#elif defined __GNUC__
PROGMEM uint8_t _CP1251_TO_CPHD44780[ 256 ] = {
#endif
//PROGMEM unsigned char CP1251_TO_CPHD44780[ 256 ] = {
/* +---------------------------------------------------------------------------------------------------------------+
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | */
/* CGRAM: (1) (2) (3) (4) (5) (6) (7) (8) (1) (2) (3) (4) (5) (6) (7) (8) */
/* 0x00 */ 0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0A , 0x0B , 0x0C , 0x0D , 0x0E , 0x0F , //

/* 0x10 */ 0x10 , 0x11 , 0x12 , 0x13 , 0x14 , 0x15 , 0x16 , 0x17 , 0x18 , 0x19 , 0x1A , 0x1B , 0x1C , 0x1D , 0x1E , 0x1F , //
/* 0x20 */ 0x20 , 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 , 0x27 , 0x28 , 0x29 , 0x2A , 0x2B , 0x2C , 0x2D , 0x2E , 0x2F , //
/* 0x30 */ 0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F , //
/* 0x40 */ 0x40 , 0x41 , 0x42 , 0x43 , 0x44 , 0x45 , 0x46 , 0x47 , 0x48 , 0x49 , 0x4A , 0x4B , 0x4C , 0x4D , 0x4E , 0x4F , //
/* 0x50 */ 0x50 , 0x51 , 0x52 , 0x53 , 0x54 , 0x55 , 0x56 , 0x57 , 0x58 , 0x59 , 0x5A , 0x5B , 0x20 , 0x5D , 0x5E , 0x5F , //
/* 0x60 */ 0x60 , 0x61 , 0x62 , 0x63 , 0x64 , 0x65 , 0x66 , 0x67 , 0x68 , 0x69 , 0x6A , 0x6B , 0x6C , 0x6D , 0x6E , 0x6F , //
/* 0x70 */ 0x70 , 0x71 , 0x72 , 0x73 , 0x74 , 0x75 , 0x76 , 0x77 , 0x78 , 0x79 , 0x7A , 0x5B , 0x20 , 0x5D , 0xE9 , 0x7F , //
/*| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | */
/* 0x80 */ 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , //
/* 0x90 */ 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , //
/* 0xA0 */ 0xCB , 0x20 , 0x49 , 0x69 , 0x04 , 0x20 , 0xFE , 0xEF , 0xA2 , 0xCC , 0x00 , 0xC9 , 0x20 , 0x20 , 0x20 , 0x02 , //
/* 0xB0 */ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xB5 , 0x4E , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , //
/* 0xC0 */ 0x41 , 0xA0 , 0x42 , 0xA1 , 0xE0 , 0x45 , 0xA3 , 0xA4 , 0xA5 , 0xA6 , 0x4B , 0xA7 , 0x4D , 0x48 , 0x4F , 0xA8 , //
/* 0xD0 */ 0x50 , 0x43 , 0x54 , 0xA9 , 0xAA , 0x58 , 0xE1 , 0xAB , 0xAC , 0xE2 , 0xAD , 0xAE , 0x62 , 0xAF , 0xB0 , 0xB1 , //
/* 0xE0 */ 0x61 , 0xB2 , 0xB3 , 0xB4 , 0xE3 , 0x65 , 0xB6 , 0xB7 , 0xB8 , 0xB9 , 0xBA , 0xBB , 0xBC , 0xBD , 0x6F , 0xBE , //
/* 0xF0 */ 0x70 , 0x63 , 0xBF , 0x79 , 0xE4 , 0x78 , 0xE5 , 0xC0 , 0xC1 , 0xE6 , 0xC2 , 0xC3 , 0xC4 , 0xC5 , 0xC6 , 0xC7 , //
/* | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
+---------------------------------------------------------------------------------------------------------------+ */
};
#ifdef __GNUC__
FU08T_PTR CP1251_TO_CPHD44780(_CP1251_TO_CPHD44780);
#endif


Сообщение отредактировал IgorKossak - Jul 25 2012, 06:34
Причина редактирования: [codebox] для длинного кода!!!


--------------------
Россия навсегда!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 25 2012, 08:15
Сообщение #28


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (uni @ Jul 25 2012, 06:13) *
Кому интересно посмотрите как это сделано в классе CLCD.
А из каких соображений эта таблица не является статическим членом класса?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
uni
сообщение Jul 25 2012, 23:06
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 5-04-06
Из: Екатеринбург
Пользователь №: 15 809



Цитата(Сергей Борщ @ Jul 25 2012, 14:15) *
А из каких соображений эта таблица не является статическим членом класса?

Из тех соображений, что у меня код одновременно компилируется в IAR и GCC, что наложило отпечаток на форму декларации принадлежности к флешу. В GCC варианте создаётся два идентификатора: массив и указатель на него, а у IAR'а можно обойтись только одним. Не знаю как это объяснить компилятору в терминах членов класса. Пока это не критично, функционал ещё допиливается.


--------------------
Россия навсегда!
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 10:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01697 секунд с 7
ELECTRONIX ©2004-2016