- •Содержание
- •Отладчик/симулятор WinSim51
- •Начало работы
- •Лабораторная работа №1
- •Форма представления данных в микропроцессорных системах
- •1.2. Методы адресации, команды пересылки и арифметических операций
- •1.3. Логические операции
- •Логическое «не», логическое отрицание, инверсия, «х».
- •2.1. Общие сведения
- •Лабораторная работа № 2
- •2.2. Порядок выполнения работы
- •Лабораторная работа № 3
- •3.1. Общие сведения
- •Регистры-указатели
- •Команда выгрузки из стека: pop ad
- •Команда загрузки стека: push ad
- •2.2. Порядок выполнения работы
- •Список литературы
Отладчик/симулятор WinSim51
Отладчик исходных текстов используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод - вывод и таймеры.
Начало работы
Запуск интегрированной среды ProView32 осуществляется через меню Пуск(Windows):Пуск ->Программы -> Franklin Software -> ProView32.
Далее необходимо создать новый файл. Для этого в разделе меню File выбираем пункт New, в появившемся окне выбираем Assembler Files (см. рис.1).
Рис. 1. Выбор типа программы
Новый файл необходимо сохранить на диск (File->Save as…), присвоив ему имя, состоящее из латинских букв и цифр, длина имени не должна превышать 8 символов, расширение файла - asm. Пример имени «Lab1.asm». Теперь можно приступать к написанию программы для микроконтроллера на языке Ассемблер.
Рассмотрим простейшую программу (Задание1 этих методических указаний). После того как текст программы набран и сохранен приступаем к компиляции программы - переводу текста в машинный код, предназначенный для загрузки в память программ микроконтроллера.
Для компиляции программы необходимо выбрать пункт меню Project -> Build all. ProView отображает окно, показывая текущее состояние процесса. Когда процесс компиляции закончится, в окне сообщений (Message) (рис.3) отображается сообщение завершения. Если были обнаружены какие-нибудь ошибки, о них сообщается здесь же.
Рис. 3. Окно сообщений Message
Если программа не содержит ошибок, которые отображаются в окне то можно запускать отладчик (меню Debug -> Start). При первом запуске отладчика появится окно (см. рис. 4), в котором необходимо указать тип микроконтроллера (Microcontroller: 80c51), а также тактовую частоту (Frequency) в мегагерцах.
Рис. 4. Выбор типа контроллера и тактовой частоты
Запустив отладчик, мы видим несколько окон (см. рис. 5):
окно с текстом программы;
окно кода Code , в котором каждой инструкции на ассемблере соответствует её машинный код;
окно основных регистров Main Registers, в котором отображено текущее состояние каждого из регистров;
В строке состояния показано время, за которое микроконтроллер выполнил команды программы с момента старта до курсора.
Xdata – внешняя память (ОЗУ) данных;
Data –внутренняя память данных (внутреннее ОЗУ);
Sfr – область регистров специальных функций (РСФ);
Bit – область прямо адресуемых битов.
В наших заданиях необходимо вводить тестовые числа в ячейки памяти ОЗУ(внутренней памяти данных) для проверки правильности работы написанных программ. Для этого выбираем пункт меню View->Data dump-> Data view (рис.6). В окне Data view отображается содержимое ячеек ОЗУ, которое группируется по 8 ячеек в строке с указанием адреса первой ячейки в группе (адрес указан слева с двоеточием).
Рис. 5 Экран режима Debug
Для проверки задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) необходимо загрузить тестовые числа в ячейки с адресами 20H и 21H (например, в (20H) загрузим 05H , а в (21H) загрузим С4H (см. рис.6)). При вводе данных в ячейки не забываем нажимать кнопку ENTER на клавиатуре.
Рис. 6 Окно отображения содержимого ячеек ОЗУ Data view
Для удобства работы оптимизируем содержимое экрана: окно кода Code для работы в нашем курсе работ нам не нужно, поэтому его можно свернуть в трей, далее подгоним размеры окна с программой так, чтобы были видны команды и хватило места для окон Data view и Main Registers(см. рис.7).
Перед запуском
программы необходимо нажать кнопку
Animate
,
затем нажать кнопку сброса Reset
и запустить программу кнопкой Run
.
Так как по условию задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) результат запоминается в ячейке с адресом 22H, то смотрим содержимое этой ячейки после выполнения программы в окне Data view. На рис.7 в этом окне результат равен 34Н.
Рис.7 Окно Debug после выполнения программы
Для проверки этого результата вызываем калькулятор Windows через меню Пуск(Windows): Пуск ->Программы -> Стандартные -> Калькулятор. Переводим его в инженерный режим(рис. 8). Переводим в режим работы в шестнадцатеричной системе счисления (переключатель Hex) и ограничиваем размер чисел одним байтом (переключатель 1байт).
Рис.8 Окно калькулятора Windows
Программу проверяем в соответствии с заданием с соблюдением приоритетов. По условию задания 1 : [(20H)*10H – (21H)/07H] → ( 22H) первыми по приоритету необходимо выполнить умножение и деление, а затем вычитание. Выполним эти дейтвия с тестовыми данными и запишем подробно результаты промежуточных вычислений:
05Н*10Н=50Н
С4Н:07Н=1СН
50Н-1СН=34Н
Как видим, результат расчетов совпал с результатом в окне Data view, что говорит о правильности программы.
Если результат не
совпадает, то необходимо выяснить
причину ошибки. Отладку программы в
этом случае удобно производить в
пошаговом режиме (кнопка Step
into
или F7).
Если вы используете пошаговый режим,
то при каждом нажатии кнопки F7
будет выполняться только одна инструкция
на языке ассемблера. При этом в открытых
вами окнах с регистрами и содержимым
памяти будет обновляться информация в
соответствии с ходом выполняемой
программы. Сравнивая результаты
выполнения шага по содержимому в окне
Main
Registers
с результатами
промежуточных вычислений
выявляем ошибки в вашей программе.
Если во время отладки программы выяснилось, что алгоритм необходимо скорректировать, то следует прервать процесс отладки, выбрав пункт меню Debug->Terminate. После внесения необходимых изменений программу необходимо повторно откомпилировать (пункт меню Project -> Build all) и повторить процесс отладки.
Если ваша программа
достаточно большая и требуется отладить
только некоторые её фрагменты, то обычно
используют точки останова (Breakpoint),
которые устанавливают в начале
интересующего фрагмента программы. При
этом переход к точке останова производится
нажатием кнопки GO
(Ctrl-F9).
Переход может занять от нескольких
секунд до нескольких минут, однако он
будет быстрее, чем в режиме пошаговой
отладки.
