51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
1 | |
Перевод ASCII-кода в адреса SRAM хранимых констант AVR12.01.2013, 22:43. Показов 4387. Ответов 30
Метки нет (Все метки)
Доброе время суток.
Столкнулся с проблемой перевода ASCII кода в адреса SRAM хранимых констант директивы .db Суть в чем: Используя ASCII код (45 - 46; 48 -57; 65 - 90) необходимо указать адрес SRAM хранимых констант директивы .db от 0 до 37 Есть предположения как можно организовать эту процедуру ?
0
|
12.01.2013, 22:43 | |
Ответы с готовыми решениями:
30
AVR. Копирование программы в SRAM Перевод кода символа Ascii в символ Перевод двоичного кода в буквы ASCII Перевод 16-ричного кода в символ ASCII |
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
|
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
17.01.2013, 09:09 [ТС] | 5 |
Это сделано.
Вот! В том то и дело то что Индексом (код индекса) служит код ASCII и начитается он с 45 - 46; 48 -57; 65 - 90.
0
|
Тутошний я
|
|
17.01.2013, 18:24 | 6 |
Можно по этим адресам записать нужные ASCII коды. Но например для ATmega 8 адреса SRAM начинаются с 96. Соответственно к ASCII кодам прибавлять например 60, и считывать.
0
|
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
17.01.2013, 19:32 [ТС] | 7 |
Да, думал... но компилятору вить в .dseg не записать готовые маски для семисегментника.
0
|
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
17.01.2013, 19:45 [ТС] | 9 |
Так тоже самое, что и цифры только все буквы соответственно не вывести
Добавлено через 57 секунд Драйвер для 8 разрядного семисегментного индикатора
0
|
Тутошний я
|
|
17.01.2013, 21:01 | 10 |
Не по теме: Я так и думал что вопрос не правильно сформулирован :) Переходи на другие компиляторы. Хотя не понимаю почему не записать. Переходи на знакосинтезирующие и графические дисплеи. И с кодировкой не нужно будет мучаться.
0
|
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
17.01.2013, 23:05 [ТС] | 11 |
Каждую ячейку ОЗУ записывать? долго... это не флеш .db не прокатит. Сейчас нужен светодиодный индикатор а точнее драйвер семисегментника, чтобы удобнее было управлять и не тратить лишних ног у управляющего драйвером контролера.
0
|
Grey
|
17.01.2013, 23:13
#12
|
Не по теме:
0
|
17.01.2013, 23:18 | 13 |
0
|
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
18.01.2013, 08:53 [ТС] | 14 |
Да! потому что это удобно.
Не нужно тратить машинного времени на обработку данных индикации так-как все это может сделать драйвер. Дороговато... Icdarom.ru MAX7219ENG+ Гораздо дешевле драйвер на контроллере сделать! Так же есть возможность выбора интерфейса SPI, UART, I2C. На них и сделано, 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 |
Есть. С использованием регистровых пар - X, Y, Z
Да, возможно такое... если через цикл, то 100 байт однотипными данными только запишем... Так все адреса являются переходными... Да... наверное все чрез цикл придется делать... компилятор не на все способен.
0
|
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
|
||||||
18.01.2013, 19:19 | 18 | |||||
Вот для семисегментика подпрограмма
0
|
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
|
|
18.01.2013, 21:35 [ТС] | 19 |
0
|
19.01.2013, 11:34 | 20 |
Угу, понятно и без этого. Непонятно, что вы еще пытаетесь сэкономить. Схема нужна не функциональная, а электрическая принципиальная.
0
|
19.01.2013, 11:34 | |
19.01.2013, 11:34 | |
Помогаю со студенческими работами здесь
20
Перевод из двоичного кода в букву через ASCII Перевод ASCII кода в двоичную систему счисления Перевод восьмибитного кода в символьный, кодировки ASCII Размещение констант во flash-памяти AVR? Перевод констант из строки в число Русский перевод английский констант в шаблоне Получить список хранимых процедур, и возможность просмотра их кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |