
- •Методические указания и задания по лабораторному практикуму по курсу «Микропроцессоры» Учебное пособие Москва 2013
- •Лабораторная работа №1. "Исследование возможностей интегрированной среды для создания программ для микроконтроллеров"
- •1. Краткое описание интегрированной среды
- •1.1. Окно интегрированной среды
- •1.2. Использование отладчика (симулятора) для ассемблерных модулей
- •1.3. Порядок создания программ на Ассемблере с помощью интегрированной среды
- •1.4. Порядок отладки программ на Ассемблере с помощью интегрированной среды
- •1.5. Дополнительные операторы языка Ассемблера для использования интегрированной среды
- •1.6. Задание для домашней подготовки
- •1.7. Лабораторное занятие
- •1.8. Отчет по работе
- •Лабораторная работа №2. "Исследование арифметических и логических операций над двоичными и шестнадцатеричными числами применительно к реализации в микроконтроллерах"
- •1. Логические и арифметические операции
- •2.6. Задание для домашней подготовки
- •1.7. Лабораторное занятие
- •Лабораторная работа №3. "Исследование возможностей интегрированной среды для создания программ для оэвм семейства mcs51"
- •1.6. Задание для домашней подготовки
- •1.7. Лабораторное занятие
- •1.8. Содержание отчета
- •1.9. Задания для самопроверки
- •Лабораторная работа №4 Исследование программно-аппаратного комплекса для отладки программ для оэвм семейства mcs-51
- •4.1. Макетно-отладочная плата ев-552
- •2.3. Порядок создания и проверки программ в интегрированной системе uVision2 - eb552
- •2.3.1. Использование программы ев552.Exe для загрузки нех файлов в плату
- •8. Передача отлаживаемого файла в плату ев552
- •2.4. Задание для домашней подготовки
- •2.5. Лабораторное занятие
- •2.5.1. Основы работы с массивами чисел
- •2.5.2. Отладка программы в интегрированной среде
- •2.6. Результаты отчета
- •2.7. Контрольные вопросы
- •Лабораторная работа № 5 Исследование таймеров-счетчиков и системы прерывания оэвм
- •3.1. Основные теоретические сведения
- •3.1.1. Использование таймера для осуществления программной задержки
- •3.1.2. Система прерываний оэвм
- •3.1.3. Управление работой таймеров
- •Xseg at 0000h
- •3.1.4. Работа таймера в режиме счетчика событий
- •Xseg at 0000h
- •3.2. Задание для домашней подготовки
- •3.3. Лабораторное задание
- •3.3.1. Исследование работы таймеров
- •3.4. Содержимое отчета
- •Список рекомендованной литературы
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.