Показать сообщение отдельно
Непрочитано 15.08.2009, 06:32  
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,508 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию

  • 2.29. Исследуем исходник на ассемблере. Чем и как его открыть и редактировать.
    В п. 2.21 при анализе динамической индикации с помощью графиков мы определили, что причиной является пересечение во времени сигналов активных разрядов, вызывающее "наползание" индицируемых цифр одна на другую. Идеально было бы применить тот способ, который использован в примере t15demo.DSN, а именно - стробирование (гашение) дешифратора короткими импульсами на время смены разрядов индикации. Легко сказать, но нелегко сделать, - ведь у нас задействованы все ноги МК, лишнюю никак не приделаешь. Значит, аппаратный способ исключается. Остается только правка программы. Конечно, поправить листинг ассемблера в самом Протеусе нам не удастся, он для этого и не предназначен. Потребуется какой-нибудь сторонний редактор. Самым тривиальным в данном случае является использовать родной виндоузный редактор Блокнот (он же Notepad в английской версии), поскольку листинг ассемблера с расширением .asm является обычным текстовым файлом и открывается любым редактором, поддерживающим кодировку DOS. Можно, при некотором навыке, воспользоваться даже MS Word, только придется поизощряться с сохранением файла в нужном формате. Но все это "крайние меры", поскольку ни дают никакой дополнительной информации по синтаксису текста - вы будете видеть обычный ровный черный текст, как на бумаге. Разбираться в таком тексте крайне затруднительно: где команды, где просто комментарии к программе - сходу не понять.
    Конечно же, можно воспользоваться и родными редакторами, встроенными в компиляторы, например для PIC микроконтроллеров в том же MPLAB IDE или CCS PICC, но согласитесь - открывать для поправки пары строк кода навороченный компилятор как то душа не лежит.
    Для таких целей идеально подходят редакторы с подсветкой синтаксиса языков программирования. Перечислять все доступные во "всемирной паутине" текстовые редакторы для программистов не хватит и нескольких листов. Почему то каждый начинающий программист спешит заявить о себе миру с создания именно текстового редактора, и каждый считает, что создал нечто уникальное, не имеющее аналогов. Но большинство из них поддерживают подсветку синтаксиса только для языков высокого уровня: Си, Бэйсик, Паскаль и т.п., ну в лучшем случае еще ассемблер х86. Правда, уважающие себя авторы, предусматривают возможность настраиваемой подсветки. Рекомендовать какой либо конкретный редактор, означает вызвать бурю негодования поклонников других программ, но я все же рискну. Вот уже на протяжении нескольких лет для быстрого просмотра и редактирования листингов программ я пользуюсь редактором
    ConTEXT ( http://www.contexteditor.org ).
    Кстати свежая версия 0.98.6 вышла 14 августа 2009 года. Почему именно он? Да потому что с 2007 года автор этой программы - Eden Kirin из Хорватии сделал его бесплатным и открыл доступ к исходникам. Теперь он развивается, как и Linux, что называется "всем миром". Ну а главные его достоинства - небольшой "вес" инсталятора - 1,6 Mb и огромное количество доступных для скачивания готовых подсветок языков программирования, в том числе и для ассемблеров всех популярных микроконтроллеров: AVR, PIC, ARM, 68000, 68HC11 и пр. Если кому не нравится готовый вариант подсветки, может создать свой или поправить его по своему вкусу. Ну и не последнее место среди "удобств" занимает встроенный русский интерфейс программы, а также функция Compare (сравнение двух файлов на идентичность текста). Не всякий навороченный редактор имеет такие возможности. Сайт программы англоязычный, поэтому для тех кто "плавает" в языке подскажу, что файлы подсветки синтаксиса доступны на страничке Downloads и распределены по группам Highlighters в алфавитном порядке. Например, чтобы скачать файлы для подсветки ассемблера PIC (их аж два варианта) заходим на страничку Highlighters [M..P] и скачиваем или PIC Assembler.chl или PIC-MPASM.chl ну или, как Винни-Пух: "и то и другое, и можно без хлеба". Эти файлы помещаются в папку Highlighters установленной программы, после чего подсветка доступна для выбора. Как это выглядит можно воочию убедиться по следующему скриншоту (Рис.55 ) с нужным нам участком программы. Да, еще для "не владеющих", при скачивании самой программы воспользуйтесь ссылкой: Alternatively Download without making a Donation на странице скачивания, если нужна бесплатная "халява", поскольку выше авторы предлагают "поддержать программу материально".
    Еще раз подчеркиваю, чтоб в меня "не бросали камнями" - это не единственный текстовый редактор с подсветкой синтаксиса и, наверное, не самый лучший, но он прост и доступен, а для меня еще важно и то, что я им пользуюсь давно и привык, как к любому другому подручному инструменту: паяльнику, пинцету и т.п. Желающие также могут попробовать другие бесплатные редакторы:
    Notepad++ http://notepad-plus.sourceforge.net/ru/site.htm - 2.9 Mb (мое личное впечатление очень даже…);
    PSPad - http://www.pspad.com/ru/compilers.htm - 4.2 Mb;
    Notepad2 - http://flos-freeware.ch/notepad2.html - 251 Kb;
    или совсем небесплатные:
    MED - http://www.med-editor.com/indexus.html - 1.37 Mb;
    SlickEdit - монстр, рекомендованый dosikus-ом, офф. сайт - http://www.slickedit.com - весит около 55 Mb, а вот здесь: http://megajohn.embedders.org/articles/?id=slickedit русскоязычное описание жутко навороченных его возможностей.
    Я же на этом заканчиваю "рекламную паузу" и приступаю к этапу пластической хирургии. Итак, мы открыли файл Digiscal.asm в каком-нибудь редакторе и найдем в листинге две любопытных строки с комментарием:
    Код:
    356 ; 7-step cycle of digits
    ...
    ...
    541 ; 8-step cycle of digits
    Именно отсюда начинаются циклы динамической индикации, судя по переводу фраз. В одном случае для 7 разрядов, в другом - для 8. Давайте попробуем в ISIS воткнуть в этих местах брекпойнты и посмотреть - туда ли мы попали. Напомню, что точки останова можно поставить только в строчках с исполняемым кодом, либо метками - адрес которых совпадает со следующей исполняемой строкой. Ставим точки останова на строки:
    Код:
    359 LEDCycle    movlw      LED0
    ...
    ...
    544                     movlw      b'00000000'
    Запускаем симуляцию обычной кнопкой Play и благополучно тормозимся на 359 строке (Рис. 56 ). Ну конечно, так и должно быть, ведь в исходном состоянии должны индицироваться 7 разрядов. Восьмой служит только для настройки. Остается только проверить это. Делаем брекпойнт 359-й строки неактивным, ну или совсем удаляем и снова запускаем симуляцию. Теперь она не тормозится, значит в строку 544 мы не попадаем. Давайте попробуем войти в режим установки, нажав при симуляции на секунду кнопку SB3.1 и мы благополучно "приземлились на наш брекпойнт. Статус кво восстановлен. Делаем вывод: со строки 356 начинается обычная индикация в рабочем режиме, со строки 541 - в режиме установки, когда присутствует 8-й разряд индикации.
Рисунок 55
Рисунок 56
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic55.gif
Просмотров: 1158
Размер:	55.6 Кб
ID:	1733   Нажмите на изображение для увеличения
Название: Pic56.gif
Просмотров: 1101
Размер:	67.6 Кб
ID:	1734  

Последний раз редактировалось Halex07; 04.11.2009 в 06:45.
Halex07 вне форума  
Эти 19 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
ABrej (06.04.2010), alexandr156 (16.03.2011), bi_max (29.09.2011), bz1100 (24.02.2012), e_oshtuk (11.01.2010), fmp (30.12.2010), leoblp (01.12.2009), Paulwasw (27.11.2012), ReLe1 (14.08.2011), rw54 (02.07.2010), seltec (29.05.2011), Tischon (21.01.2011), Traan (16.09.2013), Vladim00 (10.12.2014), wct_sniaper (29.01.2010), ДимаК (21.06.2011)