Методические указания для практических занятий по дисциплине мдк. 02. 01
Скачать 7.37 Mb.
|
5. Выберите 237 Рисунок 4 - Вид программы после создания нового проекта 6. Необходимо подключить файл , расположенный в каталоге ASM30 Suite\Support\dsPIC33F \inc> После подключения необходимых библиотек окно программы будет выглядеть подобно рисунку 5. Рисунок 5 - Вид программы после подключения библиотек и упаковочных файлов процессора Создание файла с исполняемым кодом 1. Выберите меню 2. Запишите его с именем 3. Нажмите правой клавишей по полю с надписью 4. Выберите 5. Необходимо подключить файл File Edit View Project Debugger Programmer Tools Configure Window Help D [£ H & Ъ a S H i f Release v i Q I O # И Ш dlabl.mcw _ 0 D labi.mcp 1 Source Files 1 Header Files CD Object Files 1 Library Files 1 Linker Scripts CD Other Files □ Files Symbols dsPIC33FJ256GP710 oab sab IPO dc n ov I с Я Iab1 - MPLAB IDE v7.60 ГП[п]И File Edit View Project Debugger Programmer Tools Configure Window Help ^ Release | v |u' |ф ^ И dl □ laM.mcw - LDJIS ] 0 CJlabi.mcp I CD Source Files 0 Q Header Files = £ p33FJ256GP710.inc Cj Object Files Q Library Files 0 LU Linker Scripts 1 £ p33FJ256GP710.gld Cj Other Files □ Files *£ Symbols dsPIC33F J256GP710 oab sablPO dcnovzc 238 6. Введите в файл В первой строке подключается заголовочный файл процессора . Во второй, метке <reset> назначается глобальный статус, по этой метке код привязывается к стартовому адресу. Далее директива <.text>, которая определяет следующий за ним текст как исполняемый код. Далее идет ассемблерный код. Заканчивается ассемблерный код директивой <.end>. При правильном выполнении операций вид программы будет соответствовать рисунку 6. .include "p33FJ256GP710.inc" reset: .glob al .text nop reset mov #0, W1 main: mov #100, W2 inc W1, W1 inc W2, W2 add W1, W2, W3 .end goto main Задание для самостоятельного выполнения 1. Создайте новый проект. Процессор - dsPIC33FJ256GP710. 2. Подключите необходимые библиотеки и перепишите программу, приведенную выше. 3. Необходимо подключить отладчик (симулятор), встроенный в среду MPLAB IDE. Выберите в меню 4. Скомпилируйте проект, для этого выберите в меню . Если код написан правильно и ошибок при компиляции нет, то можно открыть окно памяти программ, в котором написанная программа представиться в машинных кодах по жестко прописанным ячейкам памяти. Нажмите в меню 5. Откройте окно Watch, которое предназначено для отображения состояния необходимых переменных в режиме отладки программы. Для этого выберите в меню 26 в окно Watch регистры, которые мы хотим наблюдать в ходе выполнения программы. Для этого в левом окошке найдите WREG1 и нажмите кнопку WREG2, WREG3. Результат представлен на рисунке 7. Рисунок 6 - Создание файла с исполняемым кодом Watch Add SFR АССА v Add Symbol SP [v| Address Symbol... Value Decimal □ □□2 WREG1 Ж 0x0007 7 \ □ 004 WREG2 0x00 6В 107 0006 WREG3 0x0072 114 | Watch 1 Watch 2 Watch 3 Watch 4 Рисунок 7 - Окно Watch 240 6. Далее приступите к отладке кода. Перейдите в окно , причем окна должны так располагаться, чтобы вы могли наблюдать за изменением состояния регистров в окне 7. Для того чтобы программа выполнялась не в пошаговом режиме (для отладки), а в обычном необходимо нажать клавишу Контрольные вопросы 1. На каком языке программирования можно написать код для процессоров, рассматриваемых в работе? 2. Назначение MPLAB SIM. 3. Назначение MPLAD IDE. 4. Объясните процесс компиляции проекта. 5. Назначение окна Watch. 6. Назначение окна Program Mem ory. 7. С помощью какой инструкции осуществляется инкремент содержимого регистра? 8. С помощью какой инструкции осуществляется декремент содержимого регистра? Практическая работа №45. Коммуникационные микроконтроллеры (регистры микропроцессора). Цель работы: изучить основные регистры микропроцессора. Научиться работать с битовыми и логическими инструкциями. Теоретическая часть. Работа микропроцессора, а также его основных блоков (АЦП, таймеры и т.д.) полностью зависят от настроек, которые хранятся в регистрах. Рассмотрим основные регистры микропроцессора. Рабочие регистры В процессоре имеется 16 рабочих регистров (W0 - W15), которые могут использоваться как регистры, содержащие данные или команды, а также как регистры смещения (offset registers). Рабочие регистры 16-ти разрядные. Регистры управления стеком Регистры W14/Frame Pointer, W 15/Stack Pointer, SPLIM управляют работой программного стека. Если стек не используется, то рабочий регистр W14 можно использовать для работы. Аккумуляторы процессора Аккумулятор A (ACCA) и аккумулятор B (ACCB) имеют 40 разрядов. В эти регистры записывается результат выполнения арифметических и сдвигающих операций. Каждый аккумулятор располагается в 3 регистрах памяти: - AccxU (39-42 биты); - AccxH (31-16 биты); - AccxL (15-0 биты). Программный счетчик Программный счетчик (program counter) имеет 23 разряда. Инструкции могут адресовать 4M*24 битной пользовательской программной памяти программным счетчиком. Табличные регистры Регистр TBLPAG, PSVPAG используется при операциях записи данных в память программ. Регистры управления циклом Регистры RCOUNT, DCOUNT, DOSTART, DOEND предназначены для организации циклов в выполняемом коде. 241 Регистр управления ядром процессора Регистр CORCON - настраивает работу процессора (выбор между аккумуляторами, настройка уровня выполнения прерываний). Рисунок 8 - Регистры микропроцессора 242 Регистр состояния В регистре состояния (status register) располагаются битовые поля, характеризующие результат выполнения последней операции: - бит Z - установлен, если результат последней операции нулевой; - бит C - установлен, если в последней операции был заем бита; - бит N - установлен, если результат операции инверсный; - бит OV - установлен, если в последней операции было переполнение. Рассмотрим основные битовые и логические операции. Битовые операции К основным битовым операциям относятся: - установка бита - BSET; - сброс бита - BCLR; - инверсия бита - BTG. Логические операции К основным битовым операциям относятся: - логическая операция <и> - AND; - логическая операция <или> - IOR; - логическая операция <исключающее или> - XOR; - логическая инверсия -COM; - сброс всех битов регистра - CLR; - установка всех битов регистра - SETM. Синтаксис битовых и логических операций подробно рассмотрен в таблицах 4 и 6 приложения 1. Пример программы, реализующий логическую функцию: d = (a and 0xF00F) or (b and c). .include "p33FJ256GP710.inc" ; - Объявление переменных .equ b, 0x802 .equ c, 0x804 .equ d, 0x806 .text .global , _ reset _ reset: ; - Инициализация переменных mo v #0x1111, W1 mo v W1, a mo v #0x2222, W1 mo v W1, b mo v #0x3333, W1 mo v W1, c ; - Реализация логической функции mo v a, W1 mo v #0xF00F, W2 an d W1, W2, W3 mo v b, W1 mo v c, W2 an d W1, W2, W4 ior W3, W4, W1 mo v W1, d no p .end 243 Для объявления констант a, b, с и d служит директива .equ. В данном примере для хранения этих констант выделяется область памяти данных, начиная с ячейки 0800h. Операция nop - пустая операция. Практическая часть 1. Создайте новый проект. Процессор - dsPIC33FJ256GP710. 2. Подключите необходимые библиотеки и перепишите программу, приведенную выше. 3. Необходимо подключить отладчик (симулятор), встроенный в среду MPLAB IDE. Выберете в меню 5. Откройте окно Watch и внесите в него все регистры, которые используются в коде. В пошаговом режиме отладьте код, контролируя изменение регистров в окне Watch. После отладки программы, покажите код и результаты работы программы преподавателю. 6. Создайте схему алгоритма и напишите программу, выполняющую заданную логическую функцию. Переменные a, b, c имеют разрядность 16 бит. 7. Выполнить пункт 5 для второй программы. 4. Создайте схему алгоритма и напишите программу, выполняющую битовые операции. № Варианта Задание Установить Сбросить Инвертировать Регистр Бит Регистр Бит Регистр Бит 1 W1 15 W2 0 W3 3 2 W2 14 W3 2 W4 1 3 W3 13 W4 4 W5 2 4 W4 12 W5 6 W6 5 5 W5 11 W6 8 W7 4 6 W6 10 W7 10 W8 7 7 W7 9 W8 12 W9 6 8 W8 8 W9 14 W0 9 9 W9 7 W0 15 W1 8 10 W0 6 W1 13 W2 10 11 W1 5 W2 11 W3 12 12 W2 4 W3 9 W4 11 244 Контрольные вопросы 1. Назначение рабочих регистров. 2. Как обозначаются рабочие регистры? 3. Назовите регистры, которые управляют работой АЦП, таймером, портом ввода вывода A? 4. Назовите основные битовые инструкции. 5. Назовите основные логические инструкции. 6. Поясните операции: № Варианта Логическая функция 1 d = (a and 0x000F) or (b and 0x00F0) or (c and 0x0F00) 2 d = [not(a and 0x0F00)] or (b and 0x00F0) or (c and 0x000F) 3 d = (a or 0x000F) and (b or 0x00F0) and (c or 0x0F00) 4 d = [not(a)] or (b and 0x00F0) or (c and 0x0F00) 5 d = (a and 0x00F0) or [not(b) and 0xF000] or (c and 0x0F00) 6 d = [not(a) and 0x000F] or [not(b) and 0x00F0] or [not(c) and 0x0F00] 7 d = not[not(a and b) or (c and 0x5A5A)] 8 d = (a and 0xAAAA) or (b and 0x5555) or c 9 d = [not(a and c)] or (b and 0x3333) 10 d = (a and 0x8888) or (b and 0x6666) or (c and 0x1111) 11 d = not(a) or (b and 0xF0F0) or (c and 0x0F0F) 12 d = (a and b) or (c and 0xAAAA) mov #0xA, W1; and W1, W2, W3; ior W4, W5, W6; xor W7, W8, W9; bset W1, #7; bclr W2, #15; btg W3, #1. 245 Wd [Wd] [Wd++] [Wd-- ] [+ + Wd] [--Wd] Операнды: Wb Ws Wd Практическая работа №46. Коммуникационные микроконтроллеры (параметры). Цель работы: изучить и приобрести практические навыки с командами пересылки данных и арифметическими инструкциями. Теоретическая часть. К основным арифметическим операциям относятся. Сложение - ADD; - Вычитание SUB; Умножение - MUL; - Деление - DIV; - Инкремент - INC, INC2; - Декремент - DEC, DEC2. Синтаксис написания арифметических инструкций приведен в таблице 3 приложения 1. Рассмотрим основные инструкции подробно. Инструкция сложения Синтаксис: {label:} ADD{.B} Wb, Ws, [Ws], [Ws++], [Ws--], [+ + Ws], [- -Ws], [W0... W15] [W0... W15] [W0... W15] Операция: Wb +Ws ^ Wd Изменяемые биты регистра состояния: DC, N, OV, Z, C. Пример: ADD.B W5, W6, W7; Складывает W5 и W6, результат записывается в W7, символ «B» задает 8-ми битовый режим сложения. ADD W5, W6, W7; Складывает W5 и W6, результат записывается в W7 (16-ти битный режим). Инструкции умножения Синтаксис: {label:} MUL.SS Wb, Ws, Wnd [Ws] [Ws++] [Ws--] [+ + Ws] [--Ws] Операнды: Wb 6 [W0 ... W15] Ws 6 [W0 ... W15] Wnd 6 [W0, W2, W4 ... W12] Операция: знаковое (Wb) * знаковое (Ws) ^ Wnd: Wnd + 1 Изменяемые биты регистра состояния: нет Пояснение: При умножении Wb и Ws результатом является 32-х битное слово. Результат умножения записывается в Wnd (младшее слово) и Wnd+1 (старшее слово). Пример: MUL.SS W0, W1, W12 Умножение W0 и W1, результат записывается в W12:W13. MUL.SS W2, [--W4], W0 246 - Содержимое регистра W4 уменьшается на единицу. - Умножается число из регистра W2 с числом расположенным в ячейке памяти, адрес которой содержится в регистре W4. - Результат записывается в W0 (младшее слово) и W1 (старшее слово). Инструкция вычитания Синтаксис: {label:} SUB Wb, Ws, Wnd Операция: Wnd=Wb-Ws. Инструкция деления Синтаксис: {label:} DIV Wm, Wn Операция: Wm/Wn ^ W0:W1, то есть Wm делится на Wn, результат записывается в регистровую пару W0:W1. Причем в W0 помещается целая часть, а в W1 - остаток от деления. Следует заметить, что семейство PIC24 не имеет аппаратного делителя как такового. Однако АЛУ семейства имеет аппаратную поддержку деления (инструкция DIV). Использование инструкции DIV в сочетании с инструкцией аппаратного цикла REPEAT позволяет производить итерационную операцию деления за 18 командных тактов. Пример программы, реализующий арифметическую функцию: e = (a + b) * c / d. .include "p33FJ256GP710.inc" .equ a, 0x800 .equ b, 0x802 .equ c, 0x804 .equ d, 0x806 .equ e, 0x808 .text .global _ _reset __ reset: ; - Инициализация переменных mov #-3 , W0 mov W0, a mov #21 , W0 mov W0, b mov #10000, W0 247 Задание для самостоятельного выполнения 1. Создайте новый проект. Процессор - dsPIC33FJ256GP710. 2. Подключите необходимые библиотеки и перепишите программу, приведенную выше. Разберитесь в ее работе. 3. Необходимо подключить отладчик (симулятор), встроенный в среду MPLAB IDE. Выберите в меню 4. Создайте схему алгоритма и скорректируйте код программы, выполняющий заданную арифметическую функцию. Переменные a, b, c, d - знаковые 16-ти разрядные числа. 5. Откройте окно Watch и внесите в него все регистры, которые используются в коде. В пошаговом режиме отладьте код, контролируя изменение регистров в окне Watch. После отладки программы, покажите код и результаты работы программы преподавателю. mov W0, c mov #-37, W0 mov W0, d ; - Реализация арифметической функции mov a, W0 mov H W , .Q add (N W , H W 0 W mov 3 W c mul.ss 0 W 3 W , (N W mov d, W2 repeat #17 div.sd W0, W2 mov e 0 W nop .end 248 Контрольные вопросы 1. Назовите основные арифметические инструкции. 2. Назовите способы адресации, используемые в командах вашей программы. 3. Назовите количество тактов, за которые выполняются арифметические операции. 4. В каких регистрах хранится результат операции деления? 5. Назовите варианты операций умножения. 6. Чем команда ADD отличается от команды ADD.B? 7. Почему в примере перед командой DIV.SD стоит команда repeate #17? Практическая работа №47. Коммуникационные микроконтроллеры (виды). |