Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
1

Перевод ASCII-кода в адреса SRAM хранимых констант AVR

12.01.2013, 22:43. Показов 4387. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток.

Столкнулся с проблемой перевода ASCII кода в адреса SRAM хранимых констант директивы .db

Суть в чем:

Используя ASCII код (45 - 46; 48 -57; 65 - 90) необходимо указать адрес SRAM хранимых констант директивы .db
от 0 до 37


Есть предположения как можно организовать эту процедуру ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2013, 22:43
Ответы с готовыми решениями:

AVR. Копирование программы в SRAM
Доброго всем дня, хорошего настроения, друзья. Направьте, кто может. Вот что хочу: Для AVR,...

Перевод кода символа Ascii в символ
Добрый день сделал программу, но не могу перевести код символа Ascii таблицы в сам символ. Помогите...

Перевод двоичного кода в буквы ASCII
Ребят такой вопрос: как перевести двоичный код в букву ASCII. Пробовал Convert.ToInt32(value, 2),...

Перевод 16-ричного кода в символ ASCII
Здравствуйте, форумчане! Не могу разобраться с выводом символа аски: пользователь вводит в строку...

30
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
17.01.2013, 00:20 2
sasha0192, а можно пару примеров с использованием кодов 45 - 46, 65 - 90
Как или для чего с помощью минуса и точки указывать на SRAM?
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 08:45  [ТС] 3
Так смысли (45 - 46; 48 -57; 65 - 90) это коды ASCII, например код 45 соответствует символу "-",
48 -> "0"
49 -> "1" и так далее.

Проще говоря используя код ASCII указать на адрес кода семисегментного индикатора.

Есть конечно вариант опрашивать каждый символ... но слишком объемный код получится...

Может как-то по формуле высчитывать...
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
17.01.2013, 09:02 4
...а завести массив заранее определенных констант кодов и делать выборку по индексу религия не позволяет?
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 09:09  [ТС] 5
Цитата Сообщение от raxp Посмотреть сообщение
...а завести массив заранее определенных констант кодов
Это сделано.


Цитата Сообщение от raxp Посмотреть сообщение
делать выборку по индексу
Вот!

В том то и дело то что Индексом (код индекса) служит код ASCII и начитается он с 45 - 46; 48 -57; 65 - 90.
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
17.01.2013, 18:24 6
Цитата Сообщение от sasha0192 Посмотреть сообщение
том то и дело то что Индексом (код индекса) служит код ASCII и начитается он с 45 - 46; 48 -57; 65 - 90.
Можно по этим адресам записать нужные ASCII коды. Но например для ATmega 8 адреса SRAM начинаются с 96. Соответственно к ASCII кодам прибавлять например 60, и считывать.
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 19:32  [ТС] 7
Цитата Сообщение от Grey Посмотреть сообщение
Соответственно к ASCII кодам прибавлять например 60, и считывать.
Да, думал... но компилятору вить в .dseg не записать готовые маски для семисегментника.
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
17.01.2013, 19:38 8
sasha0192, если это не большой секрет, рассказуй полную идею чего делаешь. Я не представляю как на семисегментнеке выводить буквы.
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 19:45  [ТС] 9
Цитата Сообщение от Grey Посмотреть сообщение
Я не представляю как на семисегментнеке выводить буквы.
Так тоже самое, что и цифры только все буквы соответственно не вывести

Добавлено через 57 секунд
Цитата Сообщение от Grey Посмотреть сообщение
если это не большой секрет, рассказуй полную идею чего делаешь.
Драйвер для 8 разрядного семисегментного индикатора
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
17.01.2013, 21:01 10

Не по теме:

Я так и думал что вопрос не правильно сформулирован :)


Цитата Сообщение от sasha0192 Посмотреть сообщение
но компилятору вить в .dseg не записать готовые маски для семисегментника.
Переходи на другие компиляторы. Хотя не понимаю почему не записать.
Цитата Сообщение от sasha0192 Посмотреть сообщение
только все буквы соответственно не вывести
Переходи на знакосинтезирующие и графические дисплеи. И с кодировкой не нужно будет мучаться.
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
17.01.2013, 23:05  [ТС] 11
Переходи на другие компиляторы. Хотя не понимаю почему не записать.
Пока студия устраивает.

Каждую ячейку ОЗУ записывать?
долго...
это не флеш .db не прокатит.

Переходи на знакосинтезирующие и графические дисплеи. И с кодировкой не нужно будет мучаться.
Так уж сними работал...
Сейчас нужен светодиодный индикатор а точнее драйвер семисегментника, чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
0
Grey
17.01.2013, 23:13
  #12

Не по теме:

чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
Поэтому ты решил добавить второй контроллер в качестве драйвера? Впрочем тебе видней

0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
17.01.2013, 23:18 13
Сейчас нужен светодиодный индикатор а точнее драйвер семисегментника, чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
...не хотите тратить лишних ног контроллера - сдвиговые регистры или SPI https://www.cyberforum.ru/post2425994.html
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
18.01.2013, 08:53  [ТС] 14
Цитата Сообщение от Grey Посмотреть сообщение
Не по теме:
чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
Поэтому ты решил добавить второй контроллер в качестве драйвера? Впрочем тебе видней
Да! потому что это удобно.
Не нужно тратить машинного времени на обработку данных индикации так-как все это может сделать драйвер.

Цитата Сообщение от raxp Посмотреть сообщение
...не хотите тратить лишних ног контроллера - сдвиговые регистры или SPI BA56-11EWA. Варианты подключения
Дороговато... Icdarom.ru MAX7219ENG+
Гораздо дешевле драйвер на контроллере сделать!
Так же есть возможность выбора интерфейса SPI, UART, I2C.

Цитата Сообщение от raxp Посмотреть сообщение
сдвиговые регистры
На них и сделано, 74HC595
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
18.01.2013, 09:05 15
А у меги разве нет косвенной адрессации, например как у пиков?
У пика адрес для обращения к регистру записывается в FSR (0x04) регистр и при обращении к нулевому регистру (0x00) мы фактически обращаемся к регистру адрес которого записан в FSR.
Например для обнуления 100 регистров общего назначения начиная с 0x20 адреса мы записываем в FSR число 0x20, далее обнуляем нулевой регистр CLRF 0x00, и инкрементируем адрес INCRF FSR , делаем это сто раз в цикле. В рез-те в место 100 команд CLRF 0xXX нам понадобиться 12 команд нашей подпрограммы.
Также есть еще регистр PLATCH для загрузки адреса перехода.

Но это у пиков. У АВР тоже это должно быть.
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
18.01.2013, 09:15  [ТС] 16
Цитата Сообщение от russo turisto Посмотреть сообщение
А у меги разве нет косвенной адрессации, например как у пиков?
Есть. С использованием регистровых пар - X, Y, Z

Цитата Сообщение от russo turisto Посмотреть сообщение
Например для обнуления 100 регистров общего назначения начиная с 0x20 адреса мы записываем в FSR число 0x20, далее обнуляем нулевой регистр CLRF 0x00, и инкрементируем адрес INCRF FSR , делаем это сто раз в цикле. В рез-те в место 100 команд CLRF 0xXX нам понадобиться 12 команд нашей подпрограммы.
Да, возможно такое... если через цикл, то 100 байт однотипными данными только запишем...

Цитата Сообщение от russo turisto Посмотреть сообщение
Также есть еще регистр PLATCH для загрузки адреса перехода.
Так все адреса являются переходными...

Цитата Сообщение от russo turisto Посмотреть сообщение
Но это у пиков. У АВР тоже это должно быть.
Да... наверное все чрез цикл придется делать... компилятор не на все способен.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
18.01.2013, 10:37 17
На них и сделано, 74HC595
так какие ноги контроллера вы тогда экономите? Cхему в тему, разговор безпредметный.
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
18.01.2013, 19:19 18
Вот для семисегментика подпрограмма
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//-------------- Returns mask for common cathode 7-seg. display
unsigned short mask(unsigned short num) {
  switch (num) {
    case 0 : return 0x3F;                                
    case 1 : return 0x06;
    case 2 : return 0x5B;
    case 3 : return 0x4F;
    case 4 : return 0x66;
    case 5 : return 0x6D;
    case 6 : return 0x7D;
    case 7 : return 0x07;
    case 8 : return 0x7F;
    case 9 : return 0x6F;
  } //case end
}
0
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
18.01.2013, 21:35  [ТС] 19
Цитата Сообщение от raxp Посмотреть сообщение
так какие ноги контроллера вы тогда экономите? Cхему в тему, разговор безпредметный.
Вот блок схема, думаю все сразу понятно где ноги МК экономим и машинное время.
Миниатюры
Перевод ASCII-кода в адреса SRAM хранимых констант AVR  
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
19.01.2013, 11:34 20
Угу, понятно и без этого. Непонятно, что вы еще пытаетесь сэкономить. Схема нужна не функциональная, а электрическая принципиальная.
0
19.01.2013, 11:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2013, 11:34
Помогаю со студенческими работами здесь

Перевод из двоичного кода в букву через ASCII
Программа шифрует букву по принципу сети Фейстеля ( во всяком случае должна ), во время работы...

Перевод ASCII кода в двоичную систему счисления
Небольшая программа, которая определяет ASCII код для каждой буквы в предложении: class Program ...

Перевод восьмибитного кода в символьный, кодировки ASCII
Доброе время. подскажи пожалуйста как можно перевести 8-ми битный код в символьный, кодировки...

Размещение констант во flash-памяти AVR?
Уважаемые коллеги! Осваиваю графический экранчик, написал для него в отдельном .h шрифт в виде:...

Перевод констант из строки в число
Добрый день, столкнулся с такой проблемой: Необходимо составить программу для поиска корней...

Русский перевод английский констант в шаблоне
Уже не раз сталкивался с проблемой в WordPress: допустим есть форма комментариев. Внизу текст, мне...

Получить список хранимых процедур, и возможность просмотра их кода
Добрый день! Какими средствами С# можно получить список всех хранимых процедур с SQL сервера, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru