DScope51 - программный отладчик, который моделирует аппаратные средства микроконтроллеров семейств MCS 51, MCS 251 и 80C166 и может выполнять все машинные команды. Для запуска программы необходимо запускать файл Dsw51.exe. Моделирование интегрированных периферийных устройств осуществлено посредством загружаемых драйверов. Это делает программу dScope51, способной к полному моделированию интегрированных аппаратных средств различных типов микроконтроллеров указанных серий. Соответствующий драйвер существует для каждого поддерживаемого типа микроконтроллера. dScope51 состоит из нескольких пользовательских окон (см. рис. 2.1) с настраиваемой
Окно dScope (см. Рис. 2.2) является родительским окном для всех остальных окон программы dScope51, т.е. при его закрытии закрываются все окна программы dScope51.
Окно отладки (см. Рис. 2.3) предназначено для отображения исходного текста загруженной программы.
Окно Command (см. Рис. 2.4) содержит командную строку которая предназначена для ввода команд.
Окно регистров (см. Рис. 2.5) отображает текущие значения регистров микроконтроллера.
Окно просмотра (см. Рис. 2.6) предназначено для того чтобы показывать значения переменных определенных пользователем в программе,
Окно Memory (см. Рис. 2.7) используется для того, чтобы отображать определенный диапазон памяти в виде байтовых ячеек записанных в шестнадцатеричном коде.
Окно просмотра символов (см. Рис 2.8) предназначено для просмотра доступных символов (регистров, регистров спецфункций и т.п.), которые могут применяться пользователем для отладки программы. Набор символов зависит от типа микроконтроллера.
Окно просмотра стека (см. Рис. 2.9) предназначено для показа текущей вложенности вызванных подпрограмм.
Пункт меню | Описание |
Load object file... | Загрузить объектный файл |
Load CPU driver... | Загрузить драйвер микроконтроллера |
Exit | Выход из программы |
Пункт меню | Описание |
Toolbar | Показать/Скрыть панель управления |
Status Bar | Показать/Скрыть строку состояния |
Register window | Показать/Скрыть окно регистров |
Debug window | Показать/Скрыть окно отладки |
Command window | Показать/Скрыть окно команд |
Watch window | Показать/Скрыть окно просмотра |
Memory window | Показать/Скрыть окно отображения памяти |
Symbol window | Показать/Скрыть окно отображения символов |
Call-Stack | Показать/Скрыть окно отображения стека |
Пункт меню | Описание |
Colors and fonts... | Установки цветов и настройки шрифтов для любого окна программы dScope51 |
Update Memory window | Разрешение/Запрещение периодического обновления окна Memory |
Update Watch window | Разрешение/Запрещение периодического обновления окна Watch |
MCS 51 Registers | Конфигурирует окно отображения регистров. Отображается набор регистров характерный для микроконтроллеров серии MCS-51 |
MCS 251 Registers | Конфигурирует окно отображения регистров. Отображается набор регистров характерный для микроконтроллеров серии MCS-251 |
Breakpoints... | Активизирует диалоговое окно Breakpoint. Подробнее смотрите в главе Диалоговые окна |
Watchpoints... | Активизирует диалоговое окно Watchpoint. Подробнее смотрите в главе Диалоговые окна |
Memory map... | Активизирует диалоговое окно Memory. Подробнее смотрите в главе Диалоговые окна |
Setup Performance Analyzer... | Активизирует диалоговое окно Performance Analyzer Setup. Подробнее смотрите в главе Диалоговые окна |
Reset | Сброс драйвера текущего микроконтроллера. Аналогичен аппаратному сбросу реального микроконроллера |
Пункт меню | Описание |
Index | Вызов справки |
Using Help | Вывод инструкции по использованию справки |
About | Информация о версии программы и фирме изготовителе |
При выборе определенного типа микроконтроллера (см. следующую главу), появляется еще один пункт меню, которого нет при начальной загрузке программы dScope51. Это пункт меню Peripherals (периферийное оборудование). Пункты этого меню вызывают различные диалоговые окна для настройки периферийных устройств микроконтроллера, таких как таймеры, порты, система прерываний и т.п.
Панель управления содержит перечень кнопок, которые дублируют команды меню View. Исключением является поле со списком (второй элемент панели инструментов), в котором хранятся доступные на текущий момент драйвера различных типов микроконтроллеров. В следующей таблице представлены пояснения к каждой кнопке панели управления.
Изображение кнопки | Описание кнопки |
Открывает диалоговое окно Load Object File (загрузить обьектный файл) | |
Показать/Скрыть окно команд | |
Показать/Скрыть окно отладки | |
Показать/Скрыть окно регистров | |
Показать/Скрыть окно просмотра | |
Показать/Скрыть окно отображения памяти | |
Показать/Скрыть окно отображения символов | |
Показать/Скрыть окно отображения стека | |
Сброс драйвера микроконтроллера | |
Показать информацию о программе |
Окно отладки является наиболее часто используемым окном, так как именно в нем отображается загруженная программа и ползователь может провести ее проверку и отладку. Окно содержит меню, панель управления, строку состояния и панель диалоговых кнопок. Панель управления и панель диалоговых кнопок дублируют наиболее часто используемые команды меню. Строка состояния разделена на три области. Первая область отображает справочную информацию о выбранном пункте меню, вторая область показывает режим отображения текста программы и третья область отображает текущее состояние программы пользователя: запуск или останов.
Пункт меню | Описание |
View High level | |
View Mixed | |
View Assembly | |
View Trace Records | |
Select source module | |
Inline assemble | Отобразить окно встроенного ассемблера |
Find... | Вывести на экран диалоговое окно поиска текста в программе |
Show Dialogbar | Показать/Скрыть панель диологовых кнопок |
Show Statusbar | Показать/Скрыть строку состояния |
Show Toolbar | Показать/Скрыть панель управления |
Record trace | Разешить/Запретить запись трассировки |
Set log start line | |
Perform File log |
Остальные пункты меню представлены в таблице 2.7.
Пункт меню | Описание |
Go! | Начать выполнение программы пользователя со значения текущего программного счетчика |
GoTilCurs! | Начать выполнение программы пользователя со значения текущего программного счетчика. Программа прерывает свое выполнение в точке останова. Точка останова устанавливается двойным нажатием левой кнопки мыши на нужной строке. |
StepOut! | Начать выполнение программы со значения текущего счетчика и остановить программу когда текущая функция завершиться и вернет в программу вычисленные параметры. |
StepInto! | Программа выполняет одну инструкцию с заходом в подпрограммы |
StepOver! | Программа выполняет одну инструкцию не заходя в подпрограммы |
Stop! | Остановить выполнение программы |
Изображение кнопки | Описание кнопки |
Начать выполнение программы пользователя со значения текущего программного счетчика | |
Начать выполнение программы пользователя со значения текущего программного счетчика. Программа прерывает свое выполнение в точке останова. Точка останова устанавливается двойным нажатием левой кнопки мыши на нужной строке. | |
Программа выполняет одну инструкцию с заходом в подпрограммы | |
Программа выполняет одну инструкцию не заходя в подпрограммы | |
Начать выполнение программы со значения текущего счетчика и остановить программу когда текущая функция завершиться и вернет в программу вычисленные параметры. | |
Остановить выполнение программы | |
Просмотреть запись трассировки | |
Вывести на экран диалоговое окно поиска текста в программе |
Окно регистров применяется для отображения значений регистров микроконтроллера, дополнительной информации о количестве циклов выполненных до текущей команды, и о времени выполнения инструкций, вычисленного в зависимости от установленного значения частоты кристалла микроконтроллера. Набор регистров отображаемый в окне зависит от семейства микроконтроллеров. Соответствующий набор автоматически выбирается при загрузке драйвера микроконтроллера, но может быть в любое время изменен путем выбора в меню Setup главного окна соответствующего пункта. Первые четыре строки окна (см. Рис. 2.5) отображают регистры R0-R15, где регистр R11 является регистром-аккумулятором A. Следующие четыре линии отображают шестнадцатиразрядные регистры WR16-WR30. Следует помнить, что регистры WR0-WR14 накладываются на байтовые регистры R0-R15. Например, значения байтовых регистров R0=0x1Ah и R1=0x22h могут быть представлены одним регистром слова WR0=0x1A22h. Далее в окне отображения регистров отображены указатель данных DPTR и указатель стека SP. PSW и PSW1 - это регистры статуса микроконтроллера. В строке $ отображается текущее значение программного счетчика, в строке Sts - количество выполненных циклов, а в строке Sec - общее время выполнения команд. Для драйвера 80251s частота равна 16 МГц. Значение регистра можно изменить, используя окно команд. Для этого необходимо ввести в окне команд соответствующие выражения, как показано в примерах приведенных ниже:
Окно отображения памяти используется для того, чтобы
отображать определенный диапазон памяти в виде байтовых ячеек
записанных в шестнадцатеричном коде. Адресный интервал который будет отображен
в окне задается командой D. Эта команда должна быть введена в окне команд
(смотрите далее) как показано в приведенных ниже примерах:
Окно команд применяется для ввода команд программы dScope51. Результаты
выполнения многих команд также отображаются в этом окне. Хотя большинство команд
могут быть выполнены при помощи различных диологовых окон, окно команд поддерживает
выполнение всего набора команд программы dScope51.
Окно команд имеет два буфера истории - один для хранения и отображения команд, а
второй для хранения и вывода команд в командной строке. Буфер хранения командной
строки может хранить до 64 введенных строк. Любая выполненная команда может быть
извлечена из буфера и выполнена повторно. Перемещение по буферу истории команд
реализуется с помощью клавиатурных клавиш Cursor-Down и Cursor-Up,
при этом следует помнить, что ключ ScrollLock должен быть неактивным. Перемещение
по буферу истории выполненных команд и их результатов осуществляется с помощью
кнопок PgDown, PgUp, Cursor-Up (при включенном ScrollLock) и
Cursor-Down (при включенном ScrollLock).
В окне команд также присутствует строка состояния, которая состоит из четырех
частей (панелей).
В первой части отображается вспомогательная информация о синтаксисе команд.
Во второй части отображается надпись TAB если пользователь имеет возможность
нажимая клавишу TAB просматривать в первой части строки статуса доступные
команды или их возможный синтаксис. Третья панель отображает режим редактирования
командной строки. Если отображается выражение Ins, то это режим вставки,
а если OVR, то режим замены. Четвертая часть строки статуса показывает
состояние режима ScrollLock.Если отображается выражение SCRL, то
режим включен, если ничего не отображается, то режим выключен.
При наборе команд происходит динамическое отображение справки в строке состояния
для упрощения ввода команд.
При наборе первых букв команды в строке состояния отображаются возможные команды,
которые начинаются с этих букв. Например, если набрать в командной строке символ
E, то в первой части строки состояния будут отображены команды начинающиеся
с этой буквы: EVALuate и Exit. Теперь если донабрать в командной
строке букву v, то останется единственный вариант - команда EVALuate.
Но вводить эту команду до конца не обязательно. Достаточно нажать клавишу
Пробел и команда автоматически отобразится в командной строке. Когда команда
введена, в строке состояния отображается информация о возможном синтаксисе команды.
С помощью командной строки можно назначить наиболее часто используемые команды
клавишам F1-F12. Для этого используется команда Set.
Пример:
В данном разделе будут описаны стандартные методы работы с программой dScope51. В качестве отлаживаемой программы будем использовать программу скомпилированную в разделе Пример реализации задания. Первое что нужно сделать после запуска программы - это установить тип микроконтроллера. Для этого на панели управления главного окна в раскрывающемся списке выбираем библиотеку описывающую нужный нам тип микроконтроллера. Для выполнения данного курса лабораторных работ выбираем библиотеку 80251s.dll. Это библиотека содержит описание микроконтроллеров 80251SA, SB, SQ, SP. После этого в меню Peripherals =>System Conf. необходимо выбрать режим работы микроконтроллера: исходный или бинарный. Режим работы должен совпадать с режимом в котором компилировался файл. Для нашего случая выбираем Source Mode (исходный режим). На панели управления окна отладки в раскрывающемся списке режимов отображения текста программы, выбираем режим ASM. Теперь можно открыть нашу программу нажав на панели управления главного окна на значок - Open (Открыть), или используя пункт меню File=>Load Object File.... Загружать необходимо файл с расширением *.hex. Теперь можно просмотреть последовательность выполнения инструкций программы используя пошаговую отладку т.е. нажимая на панели управления окна отладки кнопку - StepInto или нажимая комбинацию клавиш Alt + S. В окне просмотра регистров можно наблюдать изменения значения регистров используемых в программе. Открыв окно просмотра стека можно увидеть как при вызове процедуры (команда ACALL 0xFF0005), в стек записываются 16 разрядов адреса следующей команды, а по команде RET происходит очистка стека с возвратом к следующей после вызова команде. Если требуется изменить какую-нибудь команду программы, то необходимо открыть окно встроенного ассемблера выбрав пункт меню Commands=>Inline assemble.... Например, изменим первую строчку программы mov R2,#0x05 на mov R2,#0x04. Для этого в поле disassemble выполним двойное нажатие левой кнопки мыши на нужной строке, и увидим, что данная команда появилась в поле Enter MCS-251 inctruction:. Проведем редактирование команды в этом поле, нажмем кнопку Assemble и закроем окно встроенного ассемблера.