Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mIKROPROTsESSORY / LABMP_ALL_2013.doc
Скачиваний:
109
Добавлен:
09.04.2015
Размер:
2.25 Mб
Скачать

2.3. Порядок создания и проверки программ в интегрированной системе uVision2 - eb552

Перед ознакомлением с этим разделом необходимо прочитать описание и порядок работы с интегрированной средой Uvision2 (раздел 1) и описание и принцип действия отладочной платы EB552 (параграф 2.1).

Ниже приводится подробная схема отладки программы для ОЭВМ серии MCS-51 с выделением отдельных этапов. Требования, выделенные жирным шрифтом и заключенные в рамку, надо соблюдать неукоснительно, иначе могут возникнуть непредсказуемые результаты.

1. С помощью интегрированной среды Uvision2 создать и при необходимости отладить на симуляторе рабочую программу для ОЭВМ.

Внимание! При написании текста программы и ее компиляции необходимо обязательно соблюдать следующие правила:

а) программа должна начинаться с адреса 8000h. Для этого перед первым исполняемым оператором в тексте ассемблерной программы надо поместить псевдооператор:

ORG 8000H

Кроме того, сегмент CSEG также должен начинаться с этого адреса.

И при конфигурировании проекта в интегрированной среде надо на вкладке "BL51 Locate" при выборе из меню "Project" пункта "Option for Target" надо снять флажок "Use Memory Layout from Target Dialog" и установить "Code Range" в 0х8000.

б) если в программе используются прерывания от внешних источников или таймеров ОЭВМ, то в начале области адресов памяти команд надо зарезервировать точки входа для перехода на подпрограммы обработки прерывания. В табл.4.1 указаны эти адреса точек входа для различных источников.

Таблица 4.1. Адреса точек входа для обработки прерываний

Адрес

Источник прерывания

8003h

Внешнее прерывание INT0

800bh

Прерывание по таймеру 0

8013h

Внешнее прерывание INT1

801bh

Прерывание по таймеру 1

При использовании какого-либо прерывания помещается команда LJMP ADRI, где ADRI - адрес программы обработки данного прерывания в старших адресах памяти. По адресу 9000h помещается команда LJMP ADR0, где ADR0 - адрес продолжения основной программы после адресов входа по прерываниям.

в) если необходимо в процессе выполнения программы проконтролировать состояния регистров ОЭВМ, надо после требуемого оператора в программе ввести оператор:

CALL 23ddh

при этом по достижении этой строки программа будет останавливаться, и на LCD модуль будет выводиться состояние ОЭВМ.

г) доступные адреса внутренней памяти данных ОЭВМ - 08 - 3fh, внешней памяти данных - 0000h - 6fffh. Попытка записи данных не по этим адресам может вызвать непредсказуемые последствия!

д) другая подпрограмма для отображения состояния ОЭВМ, которая выводит на LCD модуль содержимое основных регистров ОЭВМ, имеет адрес 2464h. Она похожа на программу отображения полного состояния ОЭВМ (см. п. в)), но не требует для выхода нажатия кнопок на плате и выводит на LCD модуль только одно состояние (в программе отображения полного состояния ОЭВМ выводилось 2 экрана, которые должны были сопровождаться нажатием кнопки на плате). Эта новая программа в верхней строке выводит текущее содержимое счетчика команд, регистров А и В, а в нижней - 8 чисел, соответствующих содержимому регистров R0-R7. Для выхода из нее не надо нажимать кнопки.

Рис. 2.3. Расположение элементов на плате ЕВ-552

2. Примечание: Проверить, что в меню TOOLS интегрированной среды Uvision2 в самой нижней строке присутствует строка запуска программы обмена с платой EB552.EXE. Если она есть и запускается из среды с помощью выбора этого пункта, то можно не выходить из интегрированной среды Uvision2 для передачи HEX файлов в плату. Тогда процесс передачи см. п. 2.3.1.

В отдельном каталоге в папке \Examples будут сформированы файлы:

  • Name1.m51 - файл распределения памяти при сборке программы. По нему можно проконтролировать правильность установок, сделанных в программе: областей памяти команд, внутренних и внешних данных и т.д.

  • Name.a51 - текст ассемблерной программы (той, что набиралась в редакторе среды).

  • Name.lst – листинг отлаживаемой программы, в которой указаны адреса и коды программы. Name - имя исследуемой программы, данное ей при сохранении в интегрированной среде Uvision2.

  • Name1.hex - коды команд, которые можно загрузить в ОЭВМ, в специальном шестнадцатеричном формате. Name1 – имя проекта, не путать с именем Name, которое присваивается исходному модулю. Эти имена могут быть различными.

3. Включить блок питания платы EB-552 в сеть: при этом должен загореться желтый светодиод на плате и на LCD индикаторе в двух строках выводится приглашение для загрузки HEX файла.

4. Нажать на плате кнопку INT0 для перебора вариантов режимов платы и остановиться на режиме, при котором в нижнюю строку дисплея выводится надпись: "Load HEX to buffer". Затем нажать кнопку Т0 для запуска процедуры загрузки файла *.hex в имитатор ПЗУ платы. Должна появиться надпись "wait" (ожидание) и плата ждет начала передачи.

5. Загрузить из меню TOOLS интегрированной среды программу загрузки файла в отладочную плату (см. п. 2.3.1).

После выбора файла для загрузки начинается передача по последовательному каналу кодов отлаживаемой программы. Через несколько секунд на экране LCD модуля будет выведена надпись:

***LOAD HEX OK***

Это признак того, что файл загружен правильно.

6. Нажать на плате кнопку RES для сброса ОЭВМ в исходное состояние и последовательно нажимая кнопку INT0, добиться, чтобы в нижнюю строку было выведено сообщение:

JMP FROM 8000H

Этим самым плата входит в режим запуска загруженных программ с начального адреса 8000H.

7. Нажать кнопку Т0 и на экране LCD модуля будет выведена информация о состоянии ОЭВМ в точке, где в исследуемой программе была помещена команда вызова пошагового отображения (мнемоника CALL 23ddh).

На верхней строке LCD модуля выводится следующая информация:

  • PCH=XX - старший байт счетчика команд

  • PCL=XX - младший байт счетчика команд

Эти два числа показывают по какому адресу произошел останов исследуемой программы для вывода состояния ОЭВМ. Рекомендуется вести контроль за продвижением процесса отладки по файлу листинга программы (файл с расширением .lst, где указаны адреса и коды).

  • A= XX - байт регистра-аккумулятора

  • PS=XX - содержимое регистра состояния

На второй строке экрана выводится следующая информация:

  • DPH=XX - старший байт регистра-указателя DPTR

  • DPL=XX - младший байт регистра-указателя DPTR

  • SP=XX- байт в регистре указателя стека

  • B=XX - содержимое регистра В

где ХХ - две шестнадцатеричные цифры, представляющие байт.

При повторном нажатии любой из кнопок INT0 или Т0 экран обновляется и на него выводится следующая информация:

  • TH0=XX - старший байт регистровой пары таймера 0

  • TL0=XX - младший байт регистровой пары таймера 0

  • TH1=XX - старший байт регистровой пары таймера 1

  • TL1=XX - младший байт регистровой пары таймера 1

  • 8 чисел в нижней строке LCD модуля представляют содержимое соответственно регистров R0,...,R7.

8. Следующее нажатие кнопки вызывает выполнение исследуемой программы до следующей точки останова и вся процедура вывода повторяется. При достижении конца программы процесс выполнения останавливается и плата не реагирует на нажатие кнопок INT0 или Т0, а только на нажатие кнопки RES для сброса процессора.

9. При необходимости просмотреть содержимое внешней памяти данных с адресов 0000h - 6fffh надо нажать кнопку RES на плате и выбрать кнопкой INT0 режим "View RAM, from 0000" и листать содержимое кнопкой Т0. При необходимости проверить коды программы, записанной по адреса 8000h и выше, надо нажать кнопку RES на плате и выбрать кнопкой INT0 режим "View eROM. from 8000" и листать содержимое кнопкой Т0.

10. При обнаружении ошибки в выполнении исследуемой программы надо в интегрированной среде исправить мнемоники, заново оттранслировать программу и получить новый файл *.hex. Затем повторить пп. 4 - 9.

Соседние файлы в папке mIKROPROTsESSORY