Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

цимпу / Практика / content / Пособия / Лаб. практикум, часть IV, лаб. работы № 12...20 (ЦиМПУ)_ДФО

.pdf
Скачиваний:
144
Добавлен:
13.02.2016
Размер:
3.83 Mб
Скачать

Методические указания

1 Краткие теоретические сведения

1. 1 Обзор MPLAB ASM30 Ассемблера

Язык Ассемблера – машинно-ориентированный язык низкого уровня с командами, соответствующими командам микроконтроллера.

Условно текст программы на Ассемблере можно разбить на два блока:

блок определений;

блок кода.

В блоке определений указывается модель используемого МК, подключаются заголовочные файлы, объявляются константы и переменные, содержатся иные директивы, определяющие параметры работы Ассемблера и варианты сборки программы. В блоке кода содержатся непосредственно исполняемые микроконтроллером инструкции, сгруппированные в подпрограммы и обработчики событий.

Основу языка Ассемблера составляют директивы и инструкции. Директивы Ассемблера интерпретируются во время выполнения работы Ассемблера и используются для определения секций памяти, инициализации констант, декларирования и определения символов и т.д. Инструкции являются командами микроконтроллера, непосредственно исполняются им во время работы.

1. 2 Общий формат инструкций и директив

Общий формат инструкций и директив Ассемблера следующий:

[метка:] инструкция [операнды] [;комментарии] [метка:] директива [аргументы] [;комментарии]

Таким образом, каждая строка исходного файла может содержать до четырёх информационных полей:

-метка;

-мнемоника команды;

-операнды команды;

-комментарии.

Метки используются для отметки позиции в коде. Во время компоновки, метки определяют адреса в памяти. Метки должны начинаться с первой колонки. За меткой должно следовать двоеточие «:». Метка должна начинаться с символа латинского алфавита или двойного символа подчеркивания «__» и может состоять из цифр и букв латинского алфавита и символа подчеркивания «__».

61

Мнемоники инструкций микроконтроллера, директивы Ассемблера и макрокоманды должны начинаться со второй (и далее) колонки.

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

Любой текст до конца строки после символа «;» трактуется как комментарий. Комментарии могут следовать за операндами, мнемониками и метками и могут начинаться в любой колонке.

1. 3 Директивы Ассемблера

Существует пять основных типов директив:

-директивы контроля – управляют созданием разделов условно компилированного кода;

-директивы данных – управляют разделением памяти и назначением символических имен переменным и константам;

-директивы листинга – определяют формат и состав файла листинга. Эти директивы позволяют указывать заголовки, нумеровать страницы и настраивать другие параметры;

-макро директивы – управляют работой макросов и распределением данных в теле макроса;

-директивы объектного файла – используются только при создании объектного файла.

Основные директивы Ассемблера перечислены ниже.

Директива .list используется для управления процессом сборки программы. В частности, с помощью данной директивы можно указать используемый микроконтроллер, систему счисления по умолчанию, параметры работы со строками и т.д. Пример использования директивы:

.list p=p33fj32mc204.

Директива .include добавляет содержимое указанного файла в исходный файл. Эффект аналогичен копированию полного текста включаемого файла в место расположения директивы. Параметр директивы – подключаемый файл

– может указываться как с полным путем, так и без. Во втором случае поиск файла будет осуществляться в текущей рабочей директории, директории исходного файла и служебных директориях. Пример использования директивы:

.include “p33fj32mc204.inc”.

Директива .global используется для того, чтобы позволить меткам, определённым внутри файла, использоваться в другом файле. Пример использования директивы:

62

.global __reset.

Вданном примере метки сделаны глобальными, чтобы компоновщик мог использовать их как адрес для перехода программы в указанные точки при наступлении соответствующих событий. Метка __reset используется для обозначения начала кода и используется как адрес для перехода из вектора сброса.

Директива .section декларирует секцию памяти. Атрибутами, следующими за директивой, задается расположение секции – например, в памяти RAM либо в программной памяти. Пример использования директивы:

.section .data.

Директива .data используется для информирования Ассемблера, что последующие данные будут помещены в секцию инициализированных данных. Если адрес секции не определен, то он будет назначен автоматически при связи объектных файлов.

Директива .text используется для информирования Ассемблера, что следующий код будет помещён в секцию программной памяти.

Директива .equ используется для определения символа и присвоения ему значения. Пример использования директивы:

.equ FCY, #7370000.

Вданном примере символу FCY присваивается литеральное значение 7370000. В таком контексте FCY является константой, которая может использоваться в коде.

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

.list p=p33fj32mc204.

;текст программы

.end

1.4 Числовые константы и системы счисления

MPASM поддерживает шестнадцатеричную, десятичную и двоичную системы счисления. Для обозначения числового значения используется символ

«#».

Синтаксические правила числовых значений приведены в таблице 18.2.

Таблица 18.2 – Синтаксис числовых значений

Тип

Синтаксис

Пример

Шестнадцатеричный

0x< числовое значение >

#0x9F

 

 

 

Десятичный

<числовое значение>

#123

Двоичный

0b<числовое значение>

#0b11

63

2 Тренировочный пример составления исходного кода программы

Задача: Вычислить значение выражения (25 + 13) × (18 – 9), результаты промежуточных вычислений хранить в регистрах. Выделить младшую тетраду результата и поместить её в старшую. Проверить корректность выполнения алгоритма и результаты промежуточных вычислений в симуляторе. Указать результат выполнения алгоритма.

Алгоритм решения задачи представлен на рисунке 18.18. Листинг тренировочной программы:

.include

"P33FJ32MC204.inc"

.global __reset

 

 

__reset:

 

;Метка начала исходного файла

MOV

#25, W0

;W0 = 25

MOV

#13, W1

;W1 = 13

ADD

W0, W1, W2

;W2 = W0 + W1

MOV

#18, W3

;W3 = 18

MOV

#9, W4

;W4 = 9

SUB

W3, W4, W5

;W5 = W3 – W4

MUL.SS

W2, W5, W6

;W6 = W2 × W5

AND

#0x000F, W6

;W6 = W6 ˄ #0x000F, выделение

 

 

;младшей тетрады

SL

W6, #12, W6

;W6 = W6 << 12, сдвиг влево на

 

 

;12 разрядов

.end

 

;Конец исходного файла

Результат выполнения алгоритма – регистр W6 содержит значение 0x6000.

64

Начало

Ввод

W2 = W1 + W2

W5 = W3 – W4

W6 = W2 × W5

W6 = W6 ^ #0x000F

W6 = W6 << 12

Конец

Рисунок 18.18 – Схема алгоритма к тренировочному заданию

ЛАБОРАТОРНАЯ РАБОТА № 19

ИССЛЕДОВАНИЕ УСТРОЙСТВ ВВОДА-ВЫВОДА ДИСКРЕТНЫХ СИГНАЛОВ В МИКРОПРОЦЕССОРНЫХ СИСТЕМАХ НА БАЗЕ МИКРОКОНТРОЛЛЕРА СЕМЕЙСТВА dsPIC33F

Цель работы

1 Изучить структуру и особенности работы портов микроконтроллеров (МК) семейства dsPIC33F.

2 Изучить схему подключения входных и выходных дискретных сигналов к МК dsPIC33F.

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

4 Создать проект, составить исходный код программы ввода-вывода дискретных сигналов по заданному алгоритму, откомпилировать ее в среде MPLAB IDE 8, записать в память программ МК dsPIC33FJ32MC204 учебного стенда НТЦ-31.000 и выполнить.

5 Исследовать работу дискретных входов и выходов.

Подготовка к выполнению работы

1 Изучить по [1] структуру и особенности работы портов МК dsPIC33FJ32MC204.

2 Изучить по [2] схему подключения входных и выходных дискретных сигналов к МК.

65

3 Изучить алгоритмы и исходные коды программ на языке программирования С, приведенные в методических указаниях.

4 Подготовить ответы на вопросы для самоконтроля.

5 Подготовить заготовку отчета (см. содержание отчета).

Вопросы для самоконтроля

1 Дайте определение дискретного сигнала.

2 Приведите пример устройства либо механизма, выходной, сигнал которого является дискретным.

3 Приведите пример устройства либо механизма, управление которым осуществляется дискретным сигналом.

4 Дайте краткое описание структуры линии порта, объединенной с выводами периферийных функций

Приборы, оборудование и документация

1 Персональный компьютер.

2 Учебный стенд НТЦ – 31.000.

3 Методические указания к лабораторной работе.

4 MPLAB IDE 8. Руководство пользователя.

Порядок выполнения работы

1 Проверка подготовки учащихся к занятию по вопросам для самоконтроля в виде фронтального или программированного опроса и инструктаж по технике безопасности.

2 Произвести внешний осмотр учебного стенда и персонального компьютера (ПК) и убедиться визуально в отсутствии каких-либо повреждений и дефектов.

3 Подключить стенд к сети. Включить тумблер «Сеть» на задней панели стенда. 4 С помощью кабеля USB AM-BM через гнездо «USB» на задней панели стенда

подключить стенд к USB – порту ПК.

5 Включить ПК и запустить MPLAB IDE 8.

6 Задание № 19.1. Создать проект LR19_1 для учебного стенда НТЦ-31.000, который реализует следующее условие: отображать на светодиоде VD1 состояние тумблера SA1, а на VD2 – состояние SA2. Схема алгоритма и листинг (исходный код) программы к заданию № 19.1 приведены в методических указаниях к данной лабораторной работе.

6.1 Выполнить пункты 2.1…2.7 руководства пользователя MPLAB IDE 8. При этом в пункте 2.4 в качестве инструмента программирования «Active Toolsuite» установите «Microchip C30 Toolsuite», а в качестве языка программирования «Toolsuite Сontents» выберите язык программирования C (MPLAB С30)

66

(рисунок 19.1), а в пункте 2.5 выбора каталога для сохранения проекта укажите

LR19_1.

Рисунок 19.1 – Выбор инструмента и языка программирования

6.2 С помощью пункта меню «File Import» (рисунок 19.2) открыть исходный файл к заданию № 19.1. В каталоге файлов исходных кодов программ «Files LR17…LR20» на локальном диске D выбрать «LR19_1.hex».

Рисунок 19.2 – Выбор исходного файла к заданию № 19.1

67

6.3С помощью пункта меню «Programmer Select Programmer»

выбрать программатор PICkit2.

6.4Запрограммировать МК стенда НТЦ-31.000 созданной программой,

используя пункт меню «Programmer Program».

Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение - …PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer Release From Reset».

6.5 После получения сообщения указанного на рисунке 19.3 МК запрограммирован.

Рисунок 19.3 – Сообщение о результатах прошивки МК программой к заданию № 19.1

6.6 Проверить влияние положения датчиков дискретных сигналов (тумблеры SA1 и SA2) на дискретные светодиодные индикаторы (светодиодные индикаторы VD1 и VD2).

7 Задание № 19.2. Создать проект для учебного стенда НТЦ-31.000, который реализует следующее условие: если SA1 = 1 и SA2 = 0 то VD1 = 0 и VD2 = 0, если SA1 = 0 и SA2 = 1, то VD1=1, VD2 = 1, если SA1 = SA2, то

VD1=0, VD2 = 1. Схема алгоритма и листинг (исходный код) программы к

68

заданию № 19.2 приведены в методических указаниях к данной лабораторной работе.

7.1Выполнить пункты 2.1…2.4 руководства пользователя MPLAB IDE 8. При этом в пункте 2.4 в качестве инструмента программирования установите «Microchip C30 Toolsuite» и выберите язык программирования С.

7.2В окне выбора пути к каталогу сохранения файлов проекта выберите «Browse…». В открывшемся окне (рисунок 19.4) выберите путь: «Мой компьютер\Локальный диск D\Lan\DSPIC33\TE111\Ivanov\LR19_2\».

Рисунок 19.4 – Окно выбора пути к каталогу сохранения файла

Примечание – Фамилию учащегося, набранную буквами английского алфавита, выбрать из списка своей учебной группы и создать папку для лабораторной работы LR19_2 и нажать кнопку «Сохранить». Окно выбора пути к каталогу будет иметь вид, показанный на рисунке 19.5. Нажмите кнопку «Далее».

69

Рисунок 19.5 – Выбор каталога для сохранения проекта к заданию № 19.2

7.3 В открывшемся окне (рисунок 19.6) добавить существующие файлы в проект: «+С:\+ProgrammFiles(x86)\+Microchip\+MPLABC30\+support\ +dsPIC33F\+gld\+p33FJ32MC204.gld». Нажмите кнопку «Далее».

Рисунок 19.6 – Окно добавления существующих файлов в проект

70