МК
Изучение кросс-средств разработки ПО для MCS51 (Лабораторная работа)
Цель работы 1. Получение навыков
работы с кросс-средствами разработки программного обеспечения для ОМК MCS51. 2. Ознакомление с системой команд ОМК MCS51. 3. Получение навыков программирования для ОМК MCS51 Общие
сведения
Разработка программного обеспечения с использованием
кросс-средств в общем случае включает следующие этапы: 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
Особенностью ассемблера
ASM51 является необходимость определять адреса, соответствующие мнемоническим
обозначениям регистров специальных функций (РСФ). Задавать адреса РСФ можно
непосредственно в программе или путем включения в программу соответствующих
файлов (MOD52 или MOD812). Далее приведены адреса
РСФ ОМК MCS51. Таблица 2
В результате
ассемблирования создается объектный файл в абсолютном двоичном формате -
<имя_файла>.hex и файл листинга - <имя_файла>.lst,
в котором содержатся указания на ошибки, выявленные в процессе трансляции. После исправления всех
синтаксических ошибок (если таковые имелись) необходимо загрузить полученный
объектный файл в отладчик для пошаговой отладки алгоритма. Используемый в
данном цикле лабораторных работ полноэкранный отладчик ADSIM812 позволяет: 1)
загрузить
для отладки сгенерированные ассемблером объектные файлы; 2)
просмотреть
на экране дизассемблированный текст загруженной программы, включая адреса и
коды команд, содержимое всех регистров ОМК, область памяти программ, резидентной
и внешней памяти данных; 3)
выполнить
загружаемую программу по шагам с просмотром результата после каждого шага и в
непрерывном режиме с остановом по достижении задаваемых пользователем адресов; 4)
внести
изменения в загружаемую программу в мнемонических обозначениях ассемблера, а
также в машинных кодах; 5)
внести
изменения в содержимое регистров, флагов и памяти в командном режиме и в режиме
полноэкранного редактирования; 6)
получить
трассировку программы; 7)
определить
время выполнения загружаемой программы и её частей по встроенному счетчику. Подробное описание
отладчика 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
Порядок
выполнения работы
Подготовить с помощью
кросс-средств программы, составленные в соответствии с предыдущим разделом. С помощью
кросс-отладчика проверить правильность работы этих программ, записав
предварительно исходные данные в заданные разделы памяти, определить время выполнения
программ. Продемонстрировать работу программ преподавателю. Содержание
отчета
Общий алгоритм
подготовки программного обеспечения. Блок-схемы алгоритмов
программ, а также листинги соответствующих программ на ассемблере. Оценки времени
выполнения программ, полученные с помощью отладчика. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||