Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСС_лабораторные.doc
Скачиваний:
80
Добавлен:
07.06.2015
Размер:
4.19 Mб
Скачать
          1. Программа работы и последовательность выполнения

  1. Создайте новый проект. Процессор – dsPIC33FJ256GP710.

  2. Подключите необходимые библиотеки и перепишите программу, приведенную выше.

  3. Необходимо подключить отладчик (симулятор), встроенный в среду MPLABIDE. Выберете в меню <Debugger\SelectTool\MPLABSIM>.

  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

13

W3

3

W4

7

W5

15

14

W4

2

W5

5

W6

14

15

W5

1

W6

3

W7

0

  1. Открыть окно Watchи внести в него все регистры, которые используются в коде. В пошаговом режиме отладить код, контролируя изменение регистров в окнеWatch. После отладки программы, показать код и результаты работы программы преподавателю. Создать блок схему программы.

  2. Реализовать код, выполняющий заданную логическую функцию. Переменные a,b,cимеют разрядность 16 бит.

  3. Выполнить пункт 5 для второй программы.

  4. Подготовить отчет в соответствии с требованиями, изложенными на стр. 3.

№ Варианта

Логическая функция

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) or b] and [c or 0x0F00]

7

d = (a and b) or (c and 0xAAAA)

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 = not[not(a and b) or (c and 0x5A5A)]

13

d = [not(a) and 0x000F] or [not(b) and 0x00F0] or [not(c) and 0x0F00]

14

d = (a and 0x0FF0) or b or not(c)

15

d = [not(a) and not(b)] or c

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

  1. Назначение рабочих регистров, как обозначаются?

  2. Назовите регистры, которые управляют работой АЦП, таймером, портом ввода вывода A?

  3. Назовите основные битовые инструкции.

  4. Назовите основные логические инструкции.

  5. Поясните операции:

  • mov #0xA, W1

  • and W1, W2, W3

  • ior W4, W5, W6

  • xor W7, W8, W9

  • bsetW1, #7

  • bclrW2, #15

  • btgW3, #1

  1. Лабораторная работа №3. Арифметические инструкции.

          1. Цель работы

Изучить и приобрести практические навыки с командами пересылки данных и арифметическими инструкциями.

          1. Содержание работы

К основным арифметическим операциям относятся.

  • Сложение – ADD

  • Вычитание – SUB

  • Умножение – MUL

  • Деление – DIV

  • Инкремент – INC, INC2

  • Декремент – DEC, DEC2

Синтаксис написания арифметических инструкций приведен в приложении А, таблица 2.

    1. 3.1 Инструкция сложения

Синтаксис:

Синтаксис:

{label:}

ADD{.B}

Wb,

Ws,

[Ws],

[Ws++],

[Ws--],

[++Ws],

[--Ws],

Wd

[Wd]

[Wd++]

[Wd--]

[++Wd]

[--Wd]

Операнды: Wb [W0 ... W15]

Ws [W0 ... W15]

Wd [W0 ... W15]

Операция: (Wb) + (Ws)Wd

Изменяемые биты регистра STATUS:DC,N,OV,Z,C

Пример:

ADD.BW5,W6,W7;

Складывает W5 иW6, результат записывается вW7 (8-ми битовый режим).

ADDW5,W6,W7;

Складывает W5 иW6, результат записывается вW7 (16-ти битный режим).

    1. 3.2 Инструкции умножения

          1. Синтаксис:

{label:}

MUL.SS

Wb,

Ws,

Wnd

[Ws]

[Ws++]

[Ws--]

[++Ws]

[--Ws]

Операнды: Wb[W0 …W15]

Ws[W0 …W15]

Wnd[W0,W2,W4 …W12]

Операция: знаковое (Wb) * знаковое (Ws)Wnd:Wnd+ 1

Изменяемые биты регистра STATUS: нет

Пояснение: При умножении WbиWsрезультатом является 32-х битное слово. Результат умножения записывается вWnd(младшее слово) иWnd+1 (старшее слово).

Пример:

MUL.SSW0,W1,W12

Умножение W0 иW1, результат записывается вW12:W13.

MUL.SSW2, [--W4],W0

1. Содержимое регистра W4 уменьшается на единицу.

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

3. Результат записывается в W0 (младшее слово) иW1 (старшее слово).