Числовые константы и системы счисления
MPASM поддерживает шестнадцатеричную, десятичную и двоичную системы счисления. Для обозначения числового значения используется символ «#».
Синтаксические правила числовых значений приведены в таблице 18.2.
Таблица 18.2 – Синтаксис числовых значений
Тип | Синтаксис | Пример |
Шестнадцатеричный | 0x< числовое значение > | #0x9F |
Десятичный | <числовое значение> | #123 |
Двоичный | 0b<числовое значение> | #0b11 |
Тренировочный пример составления исходного кода программы
Задача: Вычислить значение выражения (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 | ;Конец исходного файла |
Рисунок 18.18 – Схема алгоритма к тренировочному заданию
ЛАБОРАТОРНАЯ РАБОТА №19
ИССЛЕДОВАНИЕ устройств ввода-вывода дискретных сигналов В МИКРОПРОЦЕССОРНЫХ СИСТЕМАХ НА БАЗЕ
МИКроконтроллера семейства dsPIC33F
Цель работы
1 Изучить структуру и особенности работы портов микроконтроллеров (МК) семейства dsPIC33F.
2 Изучить схему подключения входных и выходных дискретных сигналов к МК dsPIC33F.
3 Изучить особенности программирования ввода-вывода дискретных сигналов на языке программирования C.
4 Создать проект, составить исходный код программы ввода-вывода дискретных сигналов по заданному алгоритму, откомпилировать ее в среде MPLAB IDE 8, записать в память программ МК dsPIC33FJ32MC204 учебного стенда НТЦ-31.000 и выполнить.
5 Исследовать работу дискретных входов и выходов.
Подготовка к выполнению работы
1 Изучить по [1] структуру и особенности работы портов МК dsPIC33FJ32MC204.
2 Изучить по [2] схему подключения входных и выходных дискретных сигналов к МК.
3 Изучить алгоритмы и исходные коды программ на языке программирования С, приведенные в методических указаниях.
4 Подготовить ответы на вопросы для самоконтроля.
Вопросы для самоконтроля
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 Задание №1.Создать проект LR19_1 для учебного стенда НТЦ-31.000, который реализует следующее условие: отображать на светодиоде VD1 состояние тумблера SA1, а на VD2 – состояние SA2. Схема алгоритма и листинг (исходный код) программы к заданию №1 приведены в методических указаниях к данной лабораторной работе.
6.1 Выполнить пункты 2.1…2.7 руководства пользователя MPLAB IDE 8. При этом в пункте 2.4 в качестве инструмента программирования «Active Toolsuite» установите «Microchip C30 Toolsuite», а в качестве языка программирования «Toolsuite Сontents» выберите язык программирования C (MPLAB С30)
(рисунок 19.1), а в пункте 2.5 выбора каталога для сохранения проекта укажите LR19_1.
Рисунок 19.1 – Выбор инструмента и языка программирования
6.2 С помощью пункта меню «File ® Import» (рисунок 19.2) открыть исходный файл к заданию №1. В каталоге файлов исходных кодов программ «Files LR17…LR20» на локальном диске D выбрать «LR19_1.hex».
Рисунок 19.2 – Выбор исходного файла к заданию №1
6.3 С помощью пункта меню «Programmer ® Select Programmer» выбрать программатор PICkit2.
6.4 Запрограммировать МК стенда НТЦ-31.000 созданной программой, используя пункт меню «Programmer ® Program».
Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение - …PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer ® Release From Reset».
6.5 После получения сообщения указанного на рисунке 19.3 МК запрограммирован.
Рисунок 19.3 – Сообщение о результатах прошивки МК программой к заданию 1
6.6 Проверить влияние положения датчиков дискретных сигналов (тумблеры SA1 и SA2) на дискретные светодиодные индикаторы (светодиодные индикаторы VD1 и VD2).
7 Задание №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. Схема алгоритма и листинг (исходный код) программы к заданию №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. Нажмите кнопку «Далее».
Рисунок 19.5 – Выбор каталога для сохранения проекта к заданию № 2
7.3 В открывшемся окне (рисунок 19.6) добавить существующие файлы в проект: «+С:\+Programm Files(x86)\+Microchip\+MPLAB C30\+support\
+dsPIC33F\+gld\+p33FJ32MC204.gld».Нажмите кнопку «Далее».
Рисунок 19.6 – Окно добавления существующих файлов в проект
7.4 В открывшемся окне суммарной информации по проекту убедитесь, что МК и средство программирования выбраны правильно и нажмите кнопку «Готово» (рисунок 19.7).
Рисунок 19.7 – Суммарная информация по проекту
Файл появится в папке «Linker Script» инспектора проекта
(рисунок 19.8).
Рисунок 19.8 – Инспектор проекта
7.5 После создания проекта в него необходимо добавить файл с исходным кодом программы МК. Для этого необходимо воспользоваться пунктом меню «File ® New». В появившемся окне редактора исходных текстов наберите исходный код программы (рисунок 19.9).
Рисунок 19.9 – Редактор исходных текстов программ
7.5 После написания исходного кода программы к заданию №2 с помощью пункта меню «File ® Save As…»откройте окно «Сохранить как» и в строке «Имя файла» задайте название исходного кода программы, как «19_2.c» (рисунок 19.10).
Примечание –Путь к файлу проекта и имя файла не должны содержать кириллических символов и пробелов. Обратите внимание, что в окне сохранения файла исходного текста открывается папка
MPLAB C30\support\dsPIC33F\gld(рисунок 19.10), а файл с исходным текстом необходимо сохранить в папке, в которой сохраняли файл проекта. Сохраните файл исходного кода программы с тем же именем, которое дали проекту, добавив расширение .с (рисунок 19.11).
Рисунок 19.10 – Окно сохранения файла исходного текста программы
Рисунок 19.11 – Сохранение исходного кода программы к заданию №2
7.6 Кликните правой кнопкой мыши в окне редактора исходного кода и выберите пункт «Add To Project»(рисунок 19.12).
Рисунок 19.12 – Добавление исходного файла в проект
После описанных действий инспектор проекта должен иметь вид, показанный на рисунке 19.13.
Рисунок 19.13 - Инспектор проекта
7.7 Выполните компиляцию проекта, используя пункт меню «Project ® Build All». Компилятор выводит отчет о компиляции в окне «Output». В случае успешной компиляции получите сообщение BUILD SUCCEEDED (рисунок 19.14). В случае обнаружения ошибок в исходном коде соответствующие сообщения будут выведены в область уведомлений. В таком случае необходимо исправить ошибки и запустить заново компилирование проекта.
Рисунок 19.14 – Отчет о компиляции
7.8 После успешной компиляции с помощью пункта меню «Programmer ® Select Programmer» выбрать программатор PICkit2.
7.9 Запрограммировать стенд (прошить микроконтроллер) используя пункт меню «Programmer ® Program».
7.10 Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение – … PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer ® Release from Reset» (рисунок 19.15).
7.11 После получения сообщения, указанного на рисунке 19.15, микроконтроллер запрограммирован.
7.12 Проверить влияние положения датчиков дискретных сигналов на дискретные светодиодные индикаторы
8 После проверки преподавателем результатов работы закрыть MPLAB IDE, выключить ПК и учебный стенд.
9 Оформить отчет и сдать зачет.
Рисунок 19.15 – Сообщение о результатах прошивки стенда
Содержание отчета
Отчет должен содержать:
1 Наименование и цель лабораторной работы.
2 Условия, схемы алгоритмов и листинги программ к заданиям №1 и 2
3 Ответы на контрольные вопросы.
Контрольные вопросы
1 Какую дополнительную функцию имеет линия порта RA2. Поясните, как она отключается при настройке этой линии на ввод?
2 Поясните, как настраивается линия порта RA2 МК dsPIC33F на ввод, а линия порта RB15 – на вывод?
3 Укажите команду на языке программирования С, которая настраивает линию порта RB13 на выход.