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

ЛАБОРАТОРНАЯ РАБОТА №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 После создания проекта в него необходимо добавить файлы с исходным кодом программы МК. Для этого необходимо воспользоваться пунктом меню «FileNew». В открывшемся окне (рисунок 8) наберите листинг программы вычисления значения выражения (25 +13) × (18 – 9), которая приведена в разделе 8 данных методических указаний.

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

Примечания

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

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

5. 5. 10 После написания исходного кода тренировочной программы с помощью пункта меню «FileSave 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 После написания исходного кода тренировочной программы для получения файла прошивки МК требуется скомпилировать проект. Для этого необходимо воспользоваться пунктом меню «ProjectBuild All» (рисунок 13).

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

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

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

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

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

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

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

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

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

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

В случае, когда необходимо отображать значение не только специальных регистров, но и любых пользовательских переменных, следует воспользоваться инструментом «Watch». Запуск инструмента осуществляется с помощью пункта меню «ViewWatch». Инструмент подразумевает задание списка необходимых для мониторинга регистров и переменных. Для этого необходимо либо выбрать регистр из предлагаемого списка и нажать кнопку «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 ;Конец кода

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