|
В начало
Лабораторная
работа
Изучение
кросс-средств разработки ПО для MCS51
Цель
работы: 1.
Получение навыков работы с кросс-средствами разработки программного обеспечения
для ОМК MCS51. 2. Ознакомление
с системой команд ОМК MCS51. 3. Получение
навыков программирования для ОМК MCS51 Общие сведения
Разработка программного
обеспечения с использованием кросс-средств в общем случае включает следующие
этапы: 1.Подготовка программы на
входном языке с использованием текстового редактора. 2.Трансляция
программы в объектный код. 3.Отладка
программы с помощью программного отладчика (симулятора). 4.Загрузка
объектного кода в память микроконтроллера. 5.Проверка
правильности работы программы при выполнении ее непосредственно
микроконтроллером. В
данном цикле лабораторных работ выполняются пп.
1,2,3. Для
подготовки исходного текста программы на входном языке, может использоваться
любой редактор, формирующий текстовый файл в коде ASCII. В настоящем цикле
лабораторных работ в целях глубокого изучения архитектуры ОМК в качестве входного
языка используется язык ассемблера. Использование редактора для ввода и
редактирования исходного текста программы на языке ассемблера не имеет никаких
особенностей и поэтому не рассматривается. Для
трансляции исходного текста программы в объектный код в данном цикле лабораторных
работ используется ассемблер ASM51. На этапе трансляции выявляются и должны
быть исправлены синтаксические ошибки в исходном тексте. При разработке
достаточно сложных многомодульных программ используется также редактор связей
(линкер), который позволяет включать в исполняемую программу независимо
разработанные и библиотечные модули. В настоящем цикле лабораторных работ
редактор связей не используется. Отладчик
позволяет моделировать (эмулировать) работу ОМК в режимах покомандного, пофрагментного исполнения программы, останова по условию,
инициирования прерывания и позволяет промоделировать практически все возможные
варианты работы программы и тем самым убедиться в ее работоспособности, либо
выявить и исправить семантические ошибки в программе. Язык
ассемблера ASM51 имеет стандартный формат операторов ассемблера ОМК MCS51: [<метка>:]
<операция> [<операнд(ы)>]
[;<комментарий>]. Здесь и
далее в квадратных скобках указываются необязательные элементы синтаксических
конструкций. Поле
метки содержит символическое имя ячейки памяти, в которой хранится отмеченная
команда или операнд. Метка представляет собой символьную комбинацию, начинающуюся
с буквы и содержащую не более 13 символов. Метка должна отделяться от поля
операнда двоеточием. Ассемблер ТASM различает шрифт,
используемый при наборе метки, то есть "LABEL" и "label" будут интерпретированы как различные метки. В
поле операции записывается мнемоническое обозначение команды ОМК, например MOV
- пересылка, ADD - сложение и т. д. В
поле операндов задаются участвующие в операции операнды. Операторы ассемблера
могут иметь ни одного, один или два операнда. В последнем случае операнды
разделяются запятой. Операнд может быть задан своим адресом (прямым или
косвенным) или непосредственным значением. Прямой адрес может быть задан
числом, мнемоническим обозначением или символическим именем. Например: MOV
R0,128 - используется мнемоническое обозначение регистра R0 и числовое значение
адреса ячейки в памяти данных; ADD
A,SUM - используется мнемоническое обозначение аккумулятора и символическое
обозначение адреса операнда в памяти данных. Признаком
косвенной адресации служит префикс @. Например, команда MOV @R0,A пересылает
содержимое аккумулятора в ячейку резидентной памяти данных (РПД), адресуемую
содержимым регистра R0 (косвенная адресация РПД осуществляется с использованием
регистров R0 и R1 текущего банка, а внешней памяти данных (ВПД) - с
использованием регистра-указателя данных DPTR). Непосредственный
операнд представляется числом или символическим именем с обязательным префиксом
#. Например, MOV R6,#15 или ADDC A,#OP1. Задаваемые числами адреса и
непосредственные значения должны содержать суффикс указания системы счисления:
B - двоичная, O - восьмеричная, D - десятичная и Н - шестнадцатеричная. Число
без суффикса по умолчанию считается десятичным. Если шестнадцатеричная
константа начинается с буквы, ей должен предшествовать нуль, например: 0A4H,
0D7H. Для
задания начального адреса размещения в памяти и конца программы, присвоения
символьным идентификаторам действительных значений, инициализации констант и
т.п. используются директивы (псевдокоманды) ассемблера, основные из которых представлены
в табл. 1. Таблица
1
Более
подробное описание ASM51
приведено в документации (файл asm51.pdf) Особенностью
ассемблера ASM51 является необходимость определять адреса, соответствующие
мнемоническим обозначениям регистров специальных функций (РСФ). Задавать адреса
РСФ можно непосредственно в программе или путем включения в программу
соответствующих файлов (MOD52 или MOD812). В
табл. 1.2 приведены адреса РСФ ОМК MCS51. Таблица
2
Таблица
2 (Продолжение)
В
результате ассемблирования создается объектный файл в абсолютном двоичном
формате - <имя_файла>.hex и файл листинга - <имя_файла>.lst, в котором содержатся указания на ошибки, выявленные в
процессе трансляции. После
исправления всех синтаксических ошибок (если таковые имелись) необходимо
загрузить полученный объектный файл в отладчик для пошаговой отладки алгоритма.
Используемый в данном цикле лабораторных работ полноэкранный отладчик ADSIM812 позволяет: ·
загрузить для отладки сгенерированные
ассемблером объектные файлы; ·
просмотреть на экране дизассемблированный текст
загруженной программы, включая адреса и коды команд, содержимое всех регистров
ОМК, область памяти программ, резидентной и внешней памяти данных; ·
выполнить загружаемую программу по шагам с
просмотром результата после каждого шага и в непрерывном режиме с остановом по
достижении задаваемых пользователем адресов; ·
внести изменения в загружаемую программу в
мнемонических обозначениях ассемблера, а также в машинных кодах; ·
внести изменения в содержимое регистров, флагов
и памяти в командном режиме и в режиме полноэкранного редактирования; ·
получить трассировку программы; ·
определить время выполнения загружаемой
программы и её частей по встроенному счетчику. Подробное
описание отладчика ADSIM812
содержится в документации (файл Aduc812.pdf). Предварительная подготовка к работе
1.
Повторить последовательность и назначение этапов подготовки программного
обеспечения с использованием кросс-средств. Повторить синтаксис директив
ассемблера ASM51, команды и режимы адресации OMK MCS51. 2.
Подготовить программу на языке ассемблера, выполняющую пересылку массива
констант (8 чисел) из внешней памяти программ (ВПП) в резидентную память данных
(РПД) по адресам 20h - 27h. В программе необходимо предусмотреть
инициализацию указанной области ВПП константами с помощью директивы DB. Считывание
данных из ВПП в цикле реализуется парой команд: MOV A,#0 MOVC A,@A+DPTR При
этом двухбайтовый регистр-указатель DPTR в начале программы должен быть инициализирован
командой MOV DPTR,#addr (addr -
адрес первой константы), а затем инкрементироваться при каждом проходе цикла
(INC DPTR). Пересылку значений в ячейки РПД целесообразно выполнять в цикле
командой MOV @R1,A. Предварительно регистр R1 должен инициализироваться
константой 20h (MOV R1,#20h), а затем инкрементироваться при каждом проходе цикла
(INC R1). Кроме
того, для подсчета числа пересылок необходим счетчик цикла (например, регистр
R0). Для организации цикла удобно использовать команду DJNZ R0, M1 , которая декрементирует
содержимое R0 и в случае его неравенства нулю передает управление на метку M1
(начало цикла). 3.Подготовить
программу, копирующую в ячейки РПД с адресами 18h-1Dh(регистровый банк 3)
содержимое следующих регистров специальных функций в указанной
последовательности: DPH, DPL,TH0, TL0, TH1, TL1. Для выполнения пересылок использовать
команду MOV @R0,ad, где ad - адрес источника, который
необходимо определить по таблице 1.2. Регистр R0, используемый для косвенной
адресации загружаемых ячеек РПД должен относится к первому регистровому банку. 4.Подготовить
программу для обработки измерительной информации. Исходные данные хранятся во
внешней памяти данных в виде массива (10 чисел). Необходимо найти среднее
значение Xср,
сравнить его с уставками - двумя константами Qmax и Qmin, хранящимися
также во внешней памяти данных. По результатам сравнения сформировать признак p и вывести его на линии порта P1: Xср >= Qmax, p=11; Qmax > Xср > Qmin, p=10; Xср <= Qmin, p=00; Порядок выполнения работы
1.
Подготовить с помощью кросс-средств программы, составленные в соответствии с предыдущим
разделом. 2.
С помощью кросс-отладчика
проверить правильность работы этих программ, записав предварительно исходные
данные в заданные разделы памяти, определить время выполнения программ.
Продемонстрировать работу программ преподавателю. Содержание отчета
1.
Общий алгоритм подготовки программного
обеспечения. 2.
Блок-схемы алгоритмов программ, а также листинги
соответствующих программ на ассемблере. 3.
Оценки времени выполнения программ, полученные с
помощью отладчика. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||