- •1. Введение.
- •2. Области применения микроконтроллеров.
- •3. Основные характеристики микроконтроллера кр1816ве48.
- •4. Память микроконтроллера.
- •5. Организация ввода/вывода информации.
- •6. Управление микроконтроллером.
- •7. Система команд мк48.
- •8. Мк-система с внешней памятью программ.
- •9. Основные принципы разработки программ для мк48.
- •10. Постановка задачи.
- •11. Аппаратные средства.
- •12. Программные средства.
- •13. Транслятор с языка asm-48.
- •14. Имитатор.
- •15. Тестирование.
- •16. Заключение.
12. Программные средства.
В состав программного обеспечения комплекса входят следующие программы:
транслятор с языка ASM-48;
имитатор микроконтроллера;
драйвер программатора.
Транслятор преобразует файл, написанный на языке ASM-48 в объектный файл, содержащий уже непосредственно коды микроконтроллера. При этом транслятор предоставляет такие возможности, как:
автоматическая расстановка адресов строк, возможность задания текстовых меток (для команд типа JMP);
возможность использования макроопределений;
выявление синтаксических ошибок,
использование комментариев.
Объектный файл загружается в имитатор, который позволяет всячески исследовать тестируемую программу с разных сторон, и при необходимости вносить в неё изменения. Основные достоинства имитатора:
возможность запуска программ без использования микроконтроллера на обычном ПК;
хорошая скорость выполнения команд МК;
использование стандартных средств отладки программ: пооператорное выполнение, точки останова, просмотр всех внутренних регистров микроконтроллера и возможность их корректировки — всё это практически невозможно сделать на самом микроконтроллере;
возможность деассемблирования как объектных файлов, так и данных, загруженных из какого-либо ПЗУ;
Существенным недостатком имитатора является то, что он неспособен имитировать сложные внешние устройства (например матричные индикаторы, внешние порты-расширители и т.д.). Для проверки работы микроконтроллера с внешним оборудованием необходимо загружать программу в ОЗУ программатора и работать с реальными внешними устройствами. Ещё один недостаток имитатора заключается в том, что в нем программы работают всё же медленнее, чем в микроконтроллере. Так, на ПК с процессором 133 МГц имитатор выполняет всего лишь 500 команд в секунду, тогда как даже у самого медленного МК48 (тактовая частота 6МГц) эта цифра составляет 400.000 опер/сек.
13. Транслятор с языка asm-48.
Пример исходного текста программы дан в приложении.
Задача транслятора – преобразование исходного текста программы (*.ASM), написанного на языке ASM-48 в объектный модуль (*.OBJ).
Исходный файл набирается в отдельном текстовом редакторе. Лучше всего использовать встроенный редактор в DOS-Навигаторе (это DOS-оболочка). Так как транслятор запускается из командной строки, и весь вывод на экран осуществляется в терминальном режиме, то возможно использовать непосредственный запуск транслятора из текстового редактора. Примером такого редактора служит Multi-Edit. В процессе работы транслятора создаётся LOG-файл.
Файл исходного текста – обычный текстовый файл. Его структура:
<Номер строки> [Команда] <;Комментарий>
Номер строки – это адрес её байта в памяти будущей программы. Если номер строки не задан, то транслятор ставит его автоматически. Программатор может работать только с адресами, не превышающими 2047.
Команда – это любая команда из языка ASM-48. Транслятор поддерживает все команды. Их список дан в приложении.
После команды может находиться комментарий. Он должен начинаться с символа “;”. Весь текст после этого символа и до конца строки транслятором полностью игнорируется.
В поле команды можно использовать текстовые метки, например:
JMP Начало_Прогр.;
MOV A,#Значение;
Метки бывают двух типов: константы и метки плавающего адреса. Первые определяются в начале файла:
#define [Послед. символов] [Значение]
Если где-нибудь в тексте программы транслятору встретиться указанная последовательность символов (до 16), то она заменится своим значением.
При написании подпрограмм программист часто не знает заранее адреса в памяти, где они будут располагаться. Действительно, программа на ассемблере часто содержит большое количество небольших подпрограмм, к которым не предъявляется каких-то особых требований по размещению в памяти. Было бы чрезвычайно обременительно вручную просчитывать количество памяти для каждой процедуры, и потом, на основе этой информации высчитывать адрес начала следующей процедуры. Транслятор позволяет пометить любое место программы метку адреса:
#define [Послед. символов]
После этого при использовании команд типа CALL, JMP можно будет просто написать указанную в метке последовательность символов в качестве адреса. Если же необходимо задать строгое расположение начала процедуры в памяти, но перед первой командой этой процедуры необходимо поставить её адрес.
Если в процессе трансляции встретится какая-либо синтаксическая ошибка, то она появится на экране (и в *.LOG-файле, соответственно), также будет выдан номер строки в текстовом файле. При нахождении ошибки процесс трансляции не останавливается, так что за один раз можно выявить много ошибок. В случае обнаружения ошибок, их необходимо исправить, а затем повторить трансляцию.
Результатом работы транслятора является файл *.OBJ. Его структура:
[Адрес] [Байт];<Комментарий>
Этот файл представляет собой список байтов, которые по соответственный адресам будут записаны в ПЗУ программатора. Этот файл доступен для редактирования обычными редакторами, но делать это очень сложно.
Если возникает необходимость перекодировать такой файл обратно в команды ассемблера, то надо воспользоваться имитатором, который содержит деассемблер.