Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА №18.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
712 Кб
Скачать
☆

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

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

1 Цель работы

  1. Изучить по [1] правила программирования МК dsPIC33F на языке программирования Ассемблер ASM30 и особенности использования языка при разработке программ.

  2. Составить алгоритм и программу обработки для заданного выражения на языке программирования Ассемблер ASM30. Откомпилировать ее в среде MPLAB IDE и исследовать ход работы в симуляторе.

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

  1. Повторить по [2] систему команд и способы адресации МК dsPIC33F.

  2. Изучить по [1] основные положения и конструкции языка программирования Ассемблер ASM30.

  3. Разработать алгоритм и программу в соответствии с вариантом индивидуального задания (см. пункт 5. 6 данных методических указаний).

  4. Изучить порядок работы в среде MPLAB IDE, используя руководство пользователя MPLAB IDE (версия 8.89) и методические указания к данной лабораторной работе.

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

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

    1. Какие способы адресации применяются в МК dsPIC33F? Поясните их сущность.

    2. Укажите выполняемую операцию и способ адресации для следующих команд МК dsPIC33F: mov #20, W0; mov W0, W1; mov #0x4301, W5; mov W0, [W1]; add W2, #6, [W1]; and W0, W1, W2.

    3. Укажите какими директивами языка Ассемблер ASM30 указываются:

- модель используемого МК;

- начало и конец исходного файла кода программы.

    1. Какой символ языка Ассемблер ASM30 обозначает числовое значение?

    2. Укажите синтаксические правила записи числовых значений в двоичной, десятичной и шестнадцатеричной системах счисления.

    3. Что понимают под вершиной стека?

    4. Как можно выделить какую-нибудь тетраду результата?

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

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

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

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

  4. Система команд МК dsPIC33F.

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

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

  1. Проверка выполнения индивидуального домашнего задания.

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

  3. Включить ПК.

  4. Выполнить тренировочное задание на примере программы вычисления значения выражения (25 + 13) × (18 – 9). Результаты промежуточных вычислений хранить в рабочих регистрах. Выделить младшую тетраду результата и поместить ее в старшую. Проверить корректность выполнения алгоритма в симуляторе MPLAB IDE, а также проверить содержимое рабочих регистров МК.

5. 5. 1 Запустите MPLAB IDE. Выберите пункт меню «Project → Project Wizard…» (рисунок 1).

Рисунок 1 – Запуск мастера создания проекта

5. 5. 2 В приветственном окне мастера создания проекта нажмите кнопку «Далее» (рисунок 2).

Рисунок 2 – Окно приветствия мастера создания проекта

5. 5. 3 В окне выбора микроконтроллера установите dsPIC33fj32mc204 (рисунок 3) и нажмите кнопку «Далее».

Рисунок 3 – Выбор микроконтроллера

5. 5. 4 В окне выбора языка программирования установите в качестве инструмента программирования (Active Toolsuite) «Microchip C30 Toolsuite», и выберите язык программирования ASM30 (рисунок 4) и нажмите кнопку «Далее».

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

5. 5. 5 В окне выбора пути к каталогу сохранения файлов проекта выберите «Browse» (рисунок 5).

Рисунок 5 – Выбор каталога для сохранения проекта

5. 5. 6 В открывшемся окне выберите путь: «Мой компьютер/локальный диск D/Work/DSPIC33/TE_011_Ivanov/LR3/». В поле «Имя файла» задайте имя файла: LR3. Нажмите «Сохранить». В открывшемся окне (рисунок 5) в поле «Creat New Project File» конечный пункт должен выглядеть так: «D:\Work\DSPIC33\TE_111_Ivanov\LR3\LR3». Нажмите кнопку «Далее».

5. 5. 7 В открывшемся окне (рисунок 6) добавим существующие файлы в проект: «+C\+Program files (x86)\+Microchip\+MPLAB ASM30 Suite\+bin». В открытой папке выбрать файл «pic30-as.exe» и добавить его, нажав «Add». Нажать кнопку «Далее».

Рисунок 6 – Добавление существующих файлов в проект

5. 5. 8 В открывшемся окне суммарной информации по проекту убедитесь, что МК и средство программирования выбраны правильно и нажмите кнопку «Готово» (рисунок 7).

Рисунок 7 – Суммарная информация по проекту

5. 5. 9 После создания проекта в него необходимо добавить файлы с исходным кодом программы МК. Для этого необходимо воспользоваться пунктом меню «File → New». В открывшемся окне (рисунок 8) наберите листинг программы вычисления значения выражения (25 +13) × (18 – 9), которая приведена в разделе 8 данных методических указаний.

Рисунок 8 – Исходный код тренировочной программы

Примечания

1 Метки (например, «__reset:») должны начинаться с первой колонки с двойного символа подчеркивания «__», мнемоники инструкций (команд) МК должны начинаться со второй (и далее) колонки.

2 Операнды должны быть отделены от мнемоники не менее чем одним символом пробела. Список операндов разделяется запятыми.

5. 5. 10 После написания исходного кода тренировочной программы с помощью пункта меню «File → Save As…» откройте окно «Сохранить как» и в строке «Имя файла» задайте название листинга программы, как: «main.s», где «.s» – формат файла (рисунок 9) и нажмите «Сохранить».

Рисунок 9 – Сохранение исходного кода тренировочной программы

5. 5. 11 В открывшемся окне «LR3.mсw» кликнуть правой кнопкой мыши по кнопке «Source Files» и выбрать пункт «Add Files…» (рисунок 10).

Рисунок 10 – Инспектор проекта

5. 5. 12 В открывшемся окне «Add Files to Project» выбрать сохраненный файл «main.s» и нажать «Открыть» (рисунок 11). Результат открытия показан на рисунке 12.

Рисунок 11 – Открытие исходного кода тренировочной программы

Рисунок 12 – Инспектор результата открытия исходного файла проекта

5. 5. 13 После написания исходного кода тренировочной программы для получения файла прошивки МК требуется скомпилировать проект. Для этого необходимо воспользоваться пунктом меню «Project → Build All» (рисунок 13).

Рисунок 13 – Компилирование проекта

В случае обнаружения ошибок в исходном коде соответствующие сообщения будут выведены в область уведомлений. В таком случае необходимо исправить ошибки и запустить заново компилирование проекта. В успешном случае в область уведомлений будет выведено сообщение «BUILD SUCCEEDED» (рисунок 14).

Рисунок 14 – Результат компилирования проекта

5. 5. 14 Интегрированная среда MPLAB IDE имеет в своем составе встроенный симулятор, который позволяет отлаживать программу еще до программирования МК. Во время симуляции существует возможность просматривать состояние всех регистров МК, локальных переменных программы, а так же имитировать входные сигналы.

Для того чтобы воспользоваться симулятором, необходимо после компиляции проекта с помощью пункта меню «Debugger → Select Tool» выбрать симулятор MPLAB SIM (рисунок 15).

Рисунок 15 – Выбор симулятора MPLAB SIM

Пошаговое исполнение программы в симуляторе осуществляется двумя командами: «Debugger → Step Into» и «Debugger → Step Over». Однократный вызов команд приводит к выполнению одной (текущей) строки исходного кода. Отличие в командах заключается в том, что первая команда выполняет вызываемые функции так же построчно, а при запуске второй – вызываемая функция выполняется полностью за один вызов команды.

Во время выполнения программы симулятор MPLAB SIM позволяет отображать значения регистров и объявленных переменных. Для вывода окна регистров следует воспользоваться пунктом меню «View → Special Function Registers» (рисунок 16).

Рисунок 16 – Окно регистров микроконтроллера

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

В случае, когда необходимо отображать значение не только специальных регистров, но и любых пользовательских переменных, следует воспользоваться инструментом «Watch». Запуск инструмента осуществляется с помощью пункта меню «View → Watch». Инструмент подразумевает задание списка необходимых для мониторинга регистров и переменных. Для этого необходимо либо выбрать регистр из предлагаемого списка и нажать кнопку «Add SFR», либо ввести название переменной или регистра в столбце «Symbol Name» (рисунок 17).

Рисунок 17 – Окно инструмента «Watch»

5. 6 Выполнить индивидуальное задание согласно заданному варианту (номер варианта соответствует номеру рабочего места).

5. 6. 1 Составить алгоритм и программу на языке программирования Ассемблер ASM30, скомпилировать ее и проверить корректность выполнения алгоритма в симуляторе MPLAB SIM, а также проверить содержимое использованных рабочих регистров МК.

Вариант 1. Загрузить в регистр число 15. Сложить его с 25 и результат поместить на вершину стека. Поместить по адресу 20h внутренней памяти данных младшую десятичную цифру результата, а по адресу 21h – старшую.

Вариант 2. Найти разницу чисел 4836 и 2454. Младший байт результата поделить на 2. Поместить по адресу 30h внутренней памяти данных младшую десятичную цифру результата, а по адресу 32h – старшую.

Вариант 3. Найти адрес ячейки памяти данных путем перемножения двух чисел 0Сh и 0Eh. В эту ячейку записать результат логической операции «исключающее или» между текущим содержимым регистра W0 и числа 09h.

Вариант 4. Найти частное чисел 236 и 59. Результат умножить на 8 используя операции сдвига. По вычисленному таким образом адресу ячейки внутренней памяти данных размесить результат двойного декремента полученного числа.

Вариант 5. Загрузить регистр W7 числом 023h. Найти сумму W7 + 32. В ячейку внутренней памяти данных, расположенную по вычисленному таким образом адресу, загрузить число десятичных единиц результата сложения.

Вариант 6. Вычислить значение выражения (81 + 64) × (112 - 25) OR 10011010b, сохраняя промежуточные результаты в стеке.

Вариант 7. Найти разницу чисел 4801 и 209. Число десятичных единиц старшего байта результата поместить в старшую тетраду порта RA. Младшую тетраду оставить без изменений.

5. 6. 2 Создать проект LR3_X, где «Х» – номер варианта. Для этого выполнить указания пунктов 5. 5. 1 … 5. 5. 14.

6 Ответить на вопросы зачетного теста.

7 После проверки преподавателем результатов работы закрыть MPLAB IDE и выключить ПК.

8 Оформить отчет и сдать зачет.

6 Содержание отчета

6. 1 Наименование, номер и цель работы.

6. 2 Условия тренировочного и индивидуального заданий и результаты их выполнения.

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

6. 4 Ответы на контрольные вопросы.

7 Контрольные вопросы

  1. Сколько команд (инструкций) включает в себя система команд МК dsPIC33F?

  2. На какие группы разделены команды МК?

  3. Из каких блоков состоит программа на языке программирования Ассемблер ASM30?

  4. Укажите синтаксис директив и инструкций.

  5. Какой символ использует для обозначения числового значения?

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

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

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

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

Условно текст программы на Ассемблере можно разбить на два блока, каждый из которых делится на следующие секции:

Блок определений:

- секция подключаемых файлов;

- секция определения битов конфигурации;

- секция определения констант;

- секция определения макросов;

- секция объявления переменных.

Блок кода:

- обработчик прерываний;

- основной цикл программы;

- подпрограммы.

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

Пример исходного файла на языке Ассемблер:

.list p=p33FJ32MC204

.include "p33FJ32MC204.inc"

.global __reset ;Метка начала кода

__reset:

main:

nop

goto main

service:

nop

nop

retfie

.end ;Конец кода

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