PSN 3000 рублей Playstation Network
PSN 3000 рублей Playstation Network


Разблокировка Мегафон М100-1
Разблокировка Мегафон М100-1


iTunes Gift Card (РОССИЯ) - 600 руб
iTunes Gift Card (РОССИЯ) - 600 руб


В начало

Лабораторная работа

Изучение кросс-средств разработки ПО для 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

Директива

Комментарий

ORG

Задает начальный адрес объектного кода для следующей за директивой программы.

Например:  ORG 100H;

 

EQU

Присваивает символическому имени абсолютное значение.

Например:  SUM EQU 48H;

 

DB

Обеспечивает занесение в память программ байтовой константы или цепочки байтовых констант.

Например:  DB 0BH,77H;

 

DW

Обеспечивает занесение в память программ одной или нескольких двухбайтовых констант.

Например:  DW 3504H,10FFH,65ECH;

 

END

Указывает конец программы.

 

Более подробное описание ASM51 приведено в документации (файл asm51.pdf)

Особенностью ассемблера ASM51 является необходимость определять адреса, соответствующие мнемоническим обозначениям регистров специальных функций (РСФ). Задавать адреса РСФ можно непосредственно в программе или путем включения в программу соответствующих файлов (MOD52 или MOD812).

В табл. 1.2 приведены адреса РСФ ОМК MCS51.

 

Таблица 2

Мнемоническое
обозначение

Название регистра

Адрес

   *  ACC

Аккумулятор

0E0h

   *  B

Регистр-расширитель аккумулятора

0F0h

   *  PSW

Cлово состояния программы

0D0h

      SP

Регистр указатель стека

81h

      DPTR

Регистр указатель данных (DPH)

                         (DPL)

83h

82h

   *  P0

Порт 0

80h

 

 

Таблица 2 (Продолжение)

Мнемоническое обозначение

Название регистра

Адрес

   *  P1

Порт 1

90h

   *  P2

Порт 2

0A0h

   *  P3

Порт 3

0B0h

   *  IP

Регистр приоритетов

0B8h

   *  IE

Регистр маски прерываний

0A8h

      TMOD

Регистр режима таймера/счетчика

89h

   *  TCON

Регистр управления/статуса таймера

88h

      TH0

Таймер 0(старший байт)

8Ch

      TL0

Таймер 0(младший байт)

8Ah

      TH1

Таймер 1(старший байт)

8Dh

      TL1

Таймер 1(младший байт)

8Bh

   *  SCON

Регистр управления приемопередатчиком

98h

      SBUF

Буфер приемопередатчика

99h

      PCON

Регистр управления мощностью

87h

 

В результате ассемблирования создается объектный файл в абсолютном двоичном формате - <имя_файла>.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.      Оценки времени выполнения программ, полученные с помощью отладчика.