Программа-отладчик микроконтроллера I8051 К1816ВЕ51

Программа-отладчик микроконтроллера I8051 (К1816ВЕ51)




Введение



Программа-отладчик микроконтроллера I8051 (К1816ВЕ51) предназначена для программирования микроконтроллера на уровне языка ассемблера, компиляции программы в объектный код и тестирования разработанной программы.

В состав программы-отладчика входят:

	редактор языка ассемблера микроконтроллера К1816ВЕ51;

	имитатор микроконтроллера К1816ВЕ51;

	внутрисхемный эмулятор микроконтроллера К1816ВЕ51.

Программа запускается в работу файлом "info8051.bat". Для записи пакета на компьютер необходима инсталляционная дискета, с помощью которой программа инсталлируется на любой компьютер. В случае простого копирования программа-отладчик будет работать, но не в полном объеме (не будут выполняться операции с диском).




1  РЕДАКТОР  ЯЗЫКА  АССЕМБЛЕРА



Редактор позволяет в удобной форме писать программы на языке ассемблера и компилировать текст исходной программы в коды ПЗУ. После компиляции программы машинные коды автоматически записываются в ПЗУ программы-имитатора.

Состояние редактора изображается на экране дисплея в виде двух окон. В верхнем окне отражается текст программы. Нижнее окно предназначено для выдачи служебных сообщений (местоположение курсора, ошибки при компиляции и т.д.). В нижней строке экрана расположено меню редактора.

Перемещение курсора по экрану осуществляется с помощью клавиш движения курсора и, кроме этого, следующими клавишами:

Home	- в начало строки;

End	- в конец строки;

PgUp	- листать вверх;

PgDn	- листать вниз;

Ctrl-Home - в начало файла;

Ctrl-End  - в конец файла;

Сtrl-PgUp - в начало экрана;

Ctrl-PgDn - в конец экрана;

Ctrl-Left - роллинг вверх;

Ctrl-Right- роллинг вниз.

Для редактирования введенного текста используются клавиши:

Del	- удаление символа под курсором;

BackSpace - удаление символа слева от курсора. Если курсор находится в первой позиции строки, то текущая строка будет слита с предыдущей, но только в том случае, если длина результирующей строки не превосходит 128 знаков.

Ins (Вст) - переключение режима «вставка/замещение». При включении режима вставки в служебном окне высвечивается сообщение «ВСТ». В этом режиме при наборе символа в середине строки символы, стоящие справа от курсора сдвигаются на одну позицию вправо. В режиме замещения символ, стоящий над курсором, заменяется на введеный.

F6 	- стирание до конца строки;

F9 	- вставка новой строки. Текст, стоящий ниже строки, в которой находится курсор, смещается на одну строку вниз;

Alt-Y 	- удаление текущей строки;

Alt-S 	- расщепление строки на две по курсору;

Alt-J	- соединение двух строк по курсору;

Alt-Q	- восстановление строки в первоначальном виде, если курсор еще не покинул строку.

Редактор предоставляет возможность работы с блоком текста. Отмеченный блок можно переместить в любое место текста, скопировать или удалить. Для работы с блоком используются клавиши:

Alt-L	- отметка одной строки или целого блока. При отметке одной строки курсор необходимо установить в нужную строку и нажать  комбинацию  «Alt-L».  Для отметки нескольких строк необходимо сначала поместить курсор в первую строку нужного блока и нажать «Alt-L», а затем в последнюю строку и также нажать «Alt-L». Отмеченный блок будет выделен;

Alt-U	- снятие маркировки;

Alt-C	- копирование блока вслед за текущей строкой. Отмеченный блок расположится вслед за строкой, в которой находится курсор, а остальной текст передвинется вниз. Исходный блок останется.

Alt-M	- перенос блока вслед за текущей строкой. Отмеченный блок будет перенесен вслед за строкой, содержащей курсор, а исходный блок будет удален.

Alt-D	- удаление маркированного текста.

Для поиска последовательности символов, используется поиск по образцу. Поиск осуществляется в строках, находящихся после курсора. При введении образца для поиска введенные буквы воспринимаются как прописные и если искомая последовательность содержит строчные буквы, то она не будет найдена. При нахождении первой группы символов, совпадающей с заданным образцом, курсор устанавливается в это место экрана. Для поиска используются клавиши:

Alt-F	- установление образца для поиска. В служебном окне появляется требование установить образец для поиска. Ввод образца должен закончиться нажатием клавиши «ENTER». После ввода образец высвечивается внизу экрана в скобках;

Alt-X	- продолжение поиска по образцу.

Ввод литеры со специальным кодом осуществляется одновременным нажатием клавиши «Alt» и набором шестнадцатеричного кода символа на цифровой клавиатуре. Символ появляется после отпускания клавиши «Alt». Для ввода символа «ESC» используется комбинация «Alt- F1».

Работа с внешними устройствами ведется под управлением клавиш:

F2	- сохранение текущего файла на диске;

F3	- загрузка нового текстового файла;

Alt-W	- сохранение отмеченного блока строк на диске;

Alt-R	- чтение с диска текстового файла. Файл вставляется в текст за текущей строкой;

Alt-P	- вывод на печать отмеченного блока строк. Если блок не отмечен, то печатается весь текст.

Клавиша «F5» осуществляет переход к программной модели микроконтроллера, а клавиша «F7» - к внутрисхемному эмулятору. Клавиша «F10» осуществляет переход в командное меню, которое дублирует указанные выше операции и предоставляет новые возможности.

Основное меню содержит пункты «Файлы», «Ассемблер», «Эмулятор», «Опции» и «Выход».

Подменю «Файлы» содержит пункты:

оглавление	- выход в систему управления файлами;

загруз текст	- загрузка нового текстового файла;

сохран текст	- сохранение текущего файла на диске;

вставить текст - вставка файла в текст за текущей строкой;

сохран маркир  - сохранение отмеченного блока строк на диске;

печать текста  - вывод на печать отмеченного блока строк;

новый текст	- очистка буфера редактора для ввода текста.

При выходе в систему управления файлами функциональные клавиши изменяют свое назначение. Система управления файлами имитирует выход в DOS и функциональные клавиши принимают значение:

F2	- установка обpазца для высветки файлов;

F3	- пpосмотp файла;

F4	- чтение файла для pедактиpования;

F5	- копиpование файла;

F6	- пеpеименованиe файла;

F7	- создание директории;

F8	- удаление файла или директории;

F9	- смена дисковода;

F10	- создание файла;

ENTER  - в зависимости от типа файла выполнится:

директория	- смена директории;

COM, EXE, BAT-файл  - выполнение файла;

файл	- чтение файла;

- ESC	- выход из системы упpавления файлами.

Подменю «Ассемблер» содержит пункты:

ассемблер	- компиляция ассемблерного текста из текущего файла;

распечатка	- вывод листинга программы на печать или в файл на диске;

сохр. двоичн. формат - сохpанение двоичного файла пpогpаммы;

сохр. нex. формат 	- cохpанение файла в HEX-фоpмате.

В подменю «Эмулятор» входят пункты:

модель	- отладка  скомпилированной пpогpаммы на программной модели микроконтроллера;

внутрисх. эмулятор  - отладка программы на внутрисхемном эмуляторе;

дизассемблер кода  - дизассемблирование ПЗУ эмулятора;

дизассемблер данных  - дизассемблирование данных ПЗУ эмулятора.

Подменю «Опции» содержит:

25/43 Строки	- смена числа стpок на экpане  (25 или 43 только для адаптера EGA);

звук вкл/выкл	- Включение/выключение звука.

В подменю «Выход» содержатся пункты:

сохран.текст	- выход с сохранением текущего файла;

не сохранять	- выход без сохранения текущего файла.

Для выхода из редактора ассемблера (как и для выхода из программы-отладчика) используется клавиша «ESC». Она используется также для отмены операции и возврата в редактор. Для указания системы счисления, в которой находится непосредственный операнд в конце операнда ставится буква, которая обозначает систему счисления:

B	- двоичное;

O или Q  - восьмиpичное;

D или ничего	- десятичное;

H    - шестнадцатиpичное ( должно  начинаться обязательно с цифpы).

Опеpатоpы упpавления листингом программы:

EJECT	- пеpеход на новую стpаницу;

LIST/NOLIST	- печатать/нет стpоки исходного текста;

PRINT/NOPRINT	- выводить/нет стpоки листинга;

PAGING/NOPAGING	- разбивать/нет листинг на стpаницы;

PAGELENGTH(n)	- установка макс.числа стpок на стpанице;

PAGEWIDTH(n)	- установка макс.числа символов в стpоке. 


2  ИМИТАТОР  МИКРОКОНТРОЛЛЕРА  I8051



Имитатор микроконтроллера I8051 (К1816ВЕ51) представляет собой математическую модель микроконтроллера I8051 (К1816ВЕ51). Программа имитирует работу микроконтроллера, что позволяет вести отладку программ.

В окно имитатора можно попасть из редактора языка ассемблера. В ходе работы программа отображает содержимое регистров микроконтроллера на экране дисплея и позволяет редактировать их содержимое в ходе программы. Отслеживание программы может вестись в пошаговом или непрерывном режиме. В ходе выполнения программы ПЗУ возможна имитация внешних прерываний или внешних событий. Время, затраченное на выполнение программы (или части программы), подсчитывается в счетчике машинных циклов.

Содержимое составных частей микроконтроллера выводится не экран в виде окон, показанном на рис.1.



Окно регистров микроконтроллера

Окно счетчика команд

Окно дизассемблера

Окно входных сигналов

Окно дампа памяти 1

Окно дампа памяти 2

Окно выбора дампов

Основное меню имитатора

Рис.1 - Отображение содержимого микроконтроллера на экране



В окне состояния регистров микроконтроллера (рис.1) отражено шестнадцатеричное содержимое регистров специальных функций, регистров общего назначения текущего банка РОНов и содержимое ячеек памяти, адрес которых находится в регистрах косвенной адресации.

По желанию пользователь может изменить порядок расположения регистров в окне либо удалить некоторые регистры. Для этого достаточно исправить имя регистра (или заменить его пробелами), а затем нажать клавишу «Enter».

В окне счетчика команд показано текущее содержимое счетчика команд, счетчика машинных циклов и выходных шин микроконтроллера. В отличие от всех других окон, информация этого окна не редактируется.

В окне дизассемблера показаны девять дизассемблированных команд, начиная с команды, адрес которой записан в счетчике команд. Адрес счетчика команд не всегда совпадает с адресом первого байта команды и поэтому в окне дизассемблера может быть отражена совсем другая команда. Окно дизассемблера позволяет редактировать программу, не выходя из имитатора. Для этого курсор устанавливается на нужную команду и вводится новая команда. После нажатия клавиши «Enter» команда транслируется в машинный код, в противном случае – восстанавливается в исходное состояние. При редактировании необходимо учитывать количество байт старой и вводимой команды, так как остальная часть программы не сдвигается вверх или вниз. При редактировании программы в окне непосредственный операнд должен вводиться только в шестнадцатеричном виде, поэтому не требуется ввод символа "#" и буквы, обозначающей систему счисления.

В окне входных сигналов устанавливается значение входных шин микроконтроллера.

В окнах дампа 1 и 2 отражается шестнадцатеричное состояние двух из четырех областей (по одной в каждом окне) памяти. В окне дампа 2 показано содержимое памяти и в текстовом представлении (в кодах ASCII).

Выбор областей памяти для дампов осуществляется в окне выбора дампов. В нем выбирается отдельно для каждого окна область памяти, необходимая для отражения. Клавишами движения курсора «Left» и «Richt» выбирается требуемое окно, а клавишами «RgUp» и «PgDown» одна из четырех областей памяти:

ROM	- внутренняя память программ;

InROM	- внешняя память программ;

SFRAM	- внутренняя память данных;

RAM	- внешняя память данных.

В основном меню программы показано назначение функциональных клавиш для управления работой имитатора.

Для перехода между окнами используются клавиши: 

Tab	- переход к следующему окну; 

Shift+Tab- переход к предыдущему окну; 

Ctrl+Enter - переход к окну дизассемблера.

Перемещение курсора в пределах окна осуществляется клавишами: 

Left	- курсор на одну строку влево;

Right	- курсор на одну строку вправо;

Up	- курсор на одну строку вверх (в окнах дампа роллинг);

Down	- курсор на одну строку вниз (в окнах дампа роллинг);

Home	- курсор в начало окна;

PgUp	- просмотр предыдущей страницы дампа;

PgDn	- просмотр следующей страницы дампа;

Enter	- курсор в начало следующей строки.

Программа ПЗУ может выполняться в пошаговом или непрерывном режиме. В пошаговом режиме каждый раз выполняется очередная команда ПЗУ, после чего обновляется содержимое всех ячеек памяти и регистров. Пошаговый режим реализуется нажатием клавиши F2.

Для запуска программы в непрерывном режиме используется клавиша F3. При работе программы в непрерывном режиме на экране обновляется только информация о текущем цикле процессора и текущем значении РС. Вся остальная информация (дампы, окно регистров, окно дизассемблера) обновляется после останова программы. В непрерывном режиме изменяется назначение клавиш для возможности имитации подачи внешних сигналов:

F4	- подача сигнала Int0 (переходом 1 в 0);

F5	- подача сигнала Int1 (переходом 1 в 0);

F6	- подача сигнала T0 (переходом 1 в 0);

F7	- подача сигнала T1 (переходом 1 в 0);

F8	- подача сигнала сброса;

Esc	- останов программы.

По окончании выполнения программы нажатием клавиши F6 можно просмотреть список последних 16 выполненных команд ПЗУ.

В ходе работы программы возможно задание точек останова, по достижении которых выполняемая программа приостанавливается. Точку останова можно задать по адресу команды либо по содержимому ячейки памяти или регистра специального назначения. Можно задать до 8 точек останова программы, объединенных функцией «ИЛИ».

Вход в режим задания точек останова осуществляется клавишей F4, после чего на экране появляется окно, в котором показаны все действующие точки останова. Если предполагается задание точки останова в виде адреса команды, то необходимо ввести требуемый адрес и нажать пробел для установки точки останова.

Если требуется более сложное условие останова, то после нажатия клавиши «End» курсор перескакивает на пустое место для задания точки останова.

Более сложное условие останова задается в виде:

NAME1  = / <>  XX  &  ...  &  NAMEn  = / <>  XX,

где:   NAMEk - имя одного из регистров области  SFR, регистр Rn или @Ri или выражение [XX] (содержимое внутреннего ОЗУ),  XX - значение байта в шестнадцатеричном представлении;

= / <> - означает, что можно выбрать один из знаков = (равно); или <> (не равно);

&	- символ, соединяющий части условия останова.

Примером условия останова может служить выражение: 

R5=20 & R6=FF;

Условие останова выполняется, если выполняются все его части.

Для отказа от одного из условий останова курсор устанавливается на это место и нажимается пробел, после чего повторным нажатием клавиши пробела условие восстановится при необходимости.

Нажатие клавиши F8 имитирует сброс микроконтроллера и производит все необходимые действия. Клавишей F9 обнуляется счетчик машинных циклов. Меню имитатора (клавиша F10) содержит пункты:

звук вкл/выкл - включение/выключение звука;

загр.текст	- загрузка текстового файла в HEX-формате;

выгр.текст	- cохранение текста программы в HEX-формате.

Выход в редактор ассемблера осуществляется клавишей «ESC».