Обсуждаем контроллеры компании Atmel.
Ответить

ASCII в FLASH

Вс янв 14, 2007 00:51:48

Здравствуйте!

Не могли бы вы помочь мне в решении одного вопроса по поводу
программирования контролеров?


Задача у меня такая:
На днях я подключил к своему контроллеру (ATmega16) дисплей от
NOKIA 3310. Все прекрасно работает, но появилась одна проблема :-(

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

Я работаю в VMLAB.

Подскажите если можете.
Заранее вам очень благодарен!

Вс янв 14, 2007 10:47:57

что такое "фонты для символов" ?

Вс янв 14, 2007 22:06:11

Я уже во всем разобрался! :-)
а фонты, ну то как должен выглядеть символ. У меня к примеру на каждый символ отводиться 5 байт, и если их выстроить вместе, сверху начиная с млачшего (или старшего) бита, то единички образуют символ.

Из:
0 1 1 1 0
1 0 1 0 1
1 0 1 0 1
1 0 1 0 1
0 1 1 1 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0

Получим:

1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1
1
1

Вс янв 14, 2007 23:19:21

Блин, в полученном пробелы убрались :-(

Пн янв 15, 2007 00:06:15

-=M@X=- писал(а):Я уже во всем разобрался! :-)


и как это делать ?

Пн янв 15, 2007 10:12:08

Ну к примеру возьмем тот фонт буквы "Ф":

Где ни будь в программе пишем, к примеру, так:

My_Chars_table:
.db 0xAA, 0x0E, 0x11, 0x7F, 0x11, 0x0E ; Ф


не обращайте внимания на байт 0хАА, он толко для четности строки(про это можно прочитать на данном сайте в статье бегущие огни)

А потом нахожу адрес метки Me_Chars_table и вычисляю нужное смещение.

ldi ZH,High(My_CHars_table)
ldi ZL,Low(My_Chars_table)

ldi temp,0x00
add ZL,char
adc ZH,temp

lpm ; В регистр R0 загружаеться первый байт символа Char

char - регистр содержащий номер символа
temp - регистр для хранения временных переменных.

Скоро объясню все подробнее...
Ответить