Главная страница
Навигация по странице:

  • .include "p33FJ256GP710.inc" reset: .glob al .text nop reset mov 0, W1 main: mov

  • Задание для самостоятельного выполнения

  • Практическая работа №45. Коммуникационные микроконтроллеры (регистры микропроцессора). Цель работы

  • Регистр управления ядром процессора

  • Практическая работа №46. Коммуникационные микроконтроллеры (параметры). Цель работы

  • .include "p33FJ256GP710.inc" .equ a, 0x800 .equ b, 0x802 .equ c, 0x804 .equ d

  • Практическая работа №47. Коммуникационные микроконтроллеры (виды).

  • Методические указания для практических занятий по дисциплине мдк. 02. 01


    Скачать 7.37 Mb.
    НазваниеМетодические указания для практических занятий по дисциплине мдк. 02. 01
    Дата09.09.2022
    Размер7.37 Mb.
    Формат файлаpdf
    Имя файлаMetod_Mikroprocessornye-sistemy_PZ_09.02.01_2020.pdf
    ТипМетодические указания
    #669073
    страница29 из 43
    1   ...   25   26   27   28   29   30   31   32   ...   43
    .
    5.
    Выберите .

    237
    Рисунок 4 - Вид программы после создания нового проекта
    6.
    Необходимо подключить файл

    ,

    расположенный
    в
    каталоге
    Files\Microchip\MPLAB
    ASM30
    Suite\Support\dsPIC33F \inc>
    После подключения необходимых библиотек окно программы будет выглядеть подобно рисунку 5.
    Рисунок 5 - Вид программы после подключения библиотек и упаковочных файлов процессора
    Создание файла с исполняемым кодом
    1.
    Выберите меню
    2.
    Запишите его с именем в каталог с программой, т.е. D:\brig1\lab1\lab1
    3.
    Нажмите правой клавишей по полю с надписью .
    4.
    Выберите .
    5.
    Необходимо подключить файл . fi| laM - MPLAB IDE v7.60 |Т|[п]^
    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. Коммуникационные микроконтроллеры (виды).
    1   ...   25   26   27   28   29   30   31   32   ...   43


    написать администратору сайта