Для внесения изменений в программу спектроанализатора
ELM - Audio Spectrum Monitor
http://www.rlocman.ru/shem/schematics.html?di=33988 понадобилось собрать симулятор в Протеусе. В исходной схеме используется графический индикатор SG12232C (122х32, SED1520). Знаю, что в протеусе есть индикатор на SED1520. Это EW12A03GLY. Но у этого индикатора и индикатора SG12232C по разному организовано управление. A0, E1, E2 для первого и A0, CS1, CS2, CL для второго.
Простейший дешифратор на 74ls32 был подключен в проект. Дисплей стал показывать: в левой половине (Контроллер1) вертикальная черта в 2 правых пикселя, в правой половине (Контроллер2) горизонтальная черта в 1 пиксель внизу.
Путем вывода на дисплей информации выяснил, что модель индикатора EW12A03GLY в протеусе выводит байты справа налево. Это подтвердилось анализом программы инициализации С библиотеки протеуса (SED1520.C). Пришлось попытаться поправить программу. Для исправления ситуации в оба контроллера на этапе инициализации послана команда 0хА1 - применить инверсию адресов. Получили те-же яйца, только сбоку. В левой половине (Контроллер1) вертикальная черта в 2 левых пикселя, в правой половине (Контроллер2) горизонтальная черта в 1 пиксель внизу.
По аналогии с С библиотекой протеуса также пробовал послать команду 0х13 (начало адресации с 19 строки - 61...80), ничего не изменилось. При последовательном выводе на дисплей между контроллерами (>61, >122), образуется странное окно без вывода. Это мой первый опыт переделки программы на ассемблере AVR, прошу не пинать и помочь. Пока больше мыслей нет. Не переписывать же программу. Тем более об авторе elm-chan.org отзывы неплохие.
Плилагаю два проекта: Spectrum - исходный проект в Протеусе, InitSed1520 - попытка проанализировать работу с ассемблерным кодом для SED1520.