Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1 / Laboratornaya_rabota_1B (3).docx
Скачиваний:
6
Добавлен:
21.06.2022
Размер:
48.95 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«Московский политехнический университет» (московский политех)

Факультет машиностроения

Кафедра «Автоматика и управление»

Лабораторная работа №1

По дисциплине «Проектирование микропроцессорных систем управления»

Группа

204-251

Бригада

2

Студенты

Антоненко А.С.

Сагитова Л.С.

Сагитова Н.С.

Ширяев В.А.

Преподаватель

Палагута К.А.

Москва 2021 Лабораторная работа №1. Микроконтроллер mc68hc908gp32: регистровая структура, способы адресации, команды пересылки

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

Теоретическое введение

Процессорный модуль CPU08, используемый в микроконтроллерах семейства 68HC08, выполняет набор из 90 команд с использованием 9 способов адресации.

Регистровая модель. Процессорный модуль CPU08 (рис. 1) содержит 8-разрядные аккумулятор A и регистр признаков CCR, 16-разрядные индексный регистр H:X, указатель стека SP и программный счетчик PC.

7 0

A

Аккумулятор A

15 8

7 0

Н

Х

Индексный регистр Н:Х

15 0

РС

Программный счётчик PC

15 0

SP

Указатель стека SP

7

6

5

4

3

2

1

0

V

1

1

H

I

N

Z

C

Регистр признаков CCR

Рис. 1. Регистровая модель процессора CPU08

Регистр CCR содержит значения следующих признаков:

C - признак переноса (принимает значение C=1 при возникновении переноса из старшего разряда результата);

Z - признак нуля (принимает значение Z=1 при нулевом результате);

N - признак знака (равен старшему разряду результата, при обработке чисел со знаком имеет значения N=0 при положительном результате, N=1 при отрицательном результате);

I - маска прерывания (при значении I=0 обработка прерываний разрешается, при I=1 – запрещается);

H - признак переноса между тетрадами (используется при операциях над двоично-десятичными числами).

V – признак переполнения при обработке чисел со знаком (принимает значение V=1, когда результат выходит за границы диапазона чисел +127…-128).

Программный счётчик PC содержит адрес очередной выполняемой команды. Максимальный объем адресуемой памяти для семейства 68HC08/908 составляет 64 Кбайт, при этом модели с меньшим размером памяти используют только часть адресуемого пространства. При запуске и перезапуске микроконтроллера (процедура RESET) в PC автоматически загружается адрес первой команды выполняемой программы (вектор начального запуска) из двух последних ячеек адресуемой памяти с адресами $FFFE-FFFF (старший байт PCh – младший байт PCl).

Указатель стека SP служит для адресации ячейки ОЗУ, являющейся вершиной стека. При запуске микроконтроллера (процедура RESET) в SP автоматически загружается значение $00FF, обеспечивая возможность использования в качестве стека ячеек ОЗУ и регистров, имеющих адреса в диапазоне $0000-FF. При дальнейшей работе процессора в качестве вершины стека может быть использована любая позиция адресуемой памяти в пределах имеющегося в данной модели ОЗУ данных.

Способы адресации. Микроконтроллер выполняет набор операций над операндами, размещёнными в регистрах A, X и памяти. Команды имеют длину от 1 до 3 байтов: первый байт содержит код операции, второй и третий байты обеспечивают адресацию операнда. Для выборки операнда используются следующие способы адресации:

- регистровая (операнд располагается в регистре A или X);

- индексная (адресом операнда служит содержимое регистра H:X);

- индексная со смещением (адрес операнда образуется сложением содержимого регистра H:X и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);

- индексная с пост-инкрементом (используется только в командах MOV и CBEQ - адресом операнда служит содержимое регистра H:X, которое после выполнения команды автоматически увеличивается на 1);

- индексная со смещением и пост-инкрементом (используется только в команде CBEQ - адрес операнда образуется сложением содержимого регистра H:X и 8-разрядного смещения, заданного во втором байте команды, после выполнения команды содержимое регистра H:X автоматически увеличивается на 1);

- индексная по указателю стека со смещением (адрес операнда образуется сложением содержимого регистра SP и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);

- прямая (8- или 16-разрядный адрес операнда задаётся во втором и третьем байте команды);

- непосредственная (8-разрядный операнд задаётся во втором байте команды);

- относительная (используется только в командах ветвления - адрес команды образуется сложением текущего содержимого PC и заданного во втором байте команды 8-разрядного смещения, которое является числом со знаком).

При прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства (см. рис.2), в котором располагаются регистры интерфейсных и периферийных модулей и часть ОЗУ. При индексной адресации смещение является числом без знака. Индексная адресация и прямая адресация с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства, однако при этом необходимо, чтобы значение адреса не превышало $FFFF. При относительной адресации возможен переход к командам, расположенным в пределах 127 позиций ниже или выше очередной команды программы.

В набор команд входят безадресные и одноадресные команды. Регистровая адресация задаётся указанием имени соответствующего регистра A, X в мнемокоде команды, поэтому команды с такой адресацией являются безадресными. В одноадресных командах задаётся адрес используемого операнда или размещения результата. В таблицах после мнемокода этих команд указывается символ (opr), который при записи на языке Ассемблера заменяется символом, определяющим способ адресации:

$addr8 или $addr16 – 8- или 16-разрядное значение адреса в шестнадцатиричной форме при прямой адресации;

X – при индексной адресации;

X+ - при индексной адресации с пост-инкрементом;

d8, X или d16, X – при индексной адресации со смещением (d8, d16 – 8- или 16-разрядное смещение);

d8, X+ - при индексной адресации с пост-инкрементом и смещением (d8 – 8-разрядное смещение);

d8, SP или d16, SP – при индексной адресации по указателю стека со смещением (d8, d16 – 8- или 16-разрядное смещение).

Адресуемый таким образом операнд, выбираемый из ячейки памяти, обозначается символом M. При непосредственной адресации символ (opr) заменяется на #Im - значение операнда Im с префиксом #.

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

Команды пересылки (табл. 1) осуществляют пересылку операндов между регистрами и ячейками памяти. Команды LDA, LDX, производящие загрузку операнда в регистры A, X, используют все способы адресации, кроме относительного и индексного с пост-инкрементом. При записи содержимого регистров A, X в память командами STA, STX не используется также непосредственная адресация. Команда LDHX позволяет записать в индексный регистр H:X двухбайтовый непосредственный операнд #Im, который содержится во втором и третьем байте команды, или загрузить в этот регистр содержимое двух рядом расположенных ячеек памяти. Команда STHX производит запись содержимого H:X в две рядом расположенные ячейки памяти. При обращении к памяти в командах LDHX, STHX задается адрес первой ячейки памяти с помощью 8-разрядной прямой адресации.

Команда MOV обеспечивает пересылку содержимого между двумя ячейками памяти. При этом возможны четыре варианта выполнения команды:

MOV #Im, addr8 - пересылка непосредственного операнда Im в прямо адресуемую ячейку памяти;

MOV addr8-s, addr8-d - пересылка между двумя прямо адресуемыми ячейками памяти: источником (адрес addr8-s) и приёмником (адрес addr8-d);

MOV addr8, X+ - пересылка содержимого прямо адресуемой ячейки в ячейку, адресуемую с помощью регистра H:X, после пересылки производится инкремент содержимого H:X;

MOV X+, addr8 - пересылка содержимого ячейки, адресуемой с помощью регистра H:X, в прямо адресуемую ячейку памяти; после пересылки производится инкремент содержимого H:X.

Во всех вариантах команды MOV используется только 8-рязрядная прямая адресация.

Таблица 1. Команды пересылки.

Мнемокод

Команда

Операция

LDA (opr)

Загрузка A

M  A

LDX (opr)

Загрузка X

M  X

LDHX (opr)

Загрузка H:X

M:M  H:X

STA (opr)

Запись A в память

A  M

STX (opr)

Запись X в память

X  M

STHX (opr)

Пересылка H:X в память

H:X  M:M

MOV (opr),(opr)

Пересылка «память-память»

M1  M2

TAX

Пересылка A в X

A  X

TXA

Пересылка X в A

X  A

TAP

Пересылка A в CCR

A  CCR

TPA

Пересылка CCR в A

CCR  A

TSX

Пересылка SP+1 в H:X

SP+1  H:X

TXS

Пересылка H:X-1 в SP

H:X -1  SP

CLR (opr)

Запись 0 в M

$00  M

CLRA

Запись 0 в A

$00  A

CLRX

Запись 0 в X

$00  X

CLRH

Запись 0 в H

$00  H

NSA

Перестановка тетрад в A

(A7-4) <-> (A3-0)

PSHA

Запись A в стек

A  (SP), SP-1  SP

PSHH

Запись H в стек

H  (SP), SP-1  SP

PSHX

Запись X в стек

X  (SP), SP-1  SP

PULA

Загрузка A из стека

SP+1  SP, (SP) A

PULH

Загрузка H из стека

SP+1  SP, (SP) H

PULX

Загрузка X из стека

SP+1  SP, (SP) X

Команды TAX, TXA выполняют пересылку операндов между регистрами A и X. Команды TAP и TPA позволяют соответственно считать в аккумулятор содержимое регистра признаков CCR для последующего анализа или сохранения и загрузить в этот регистр новое содержимое из аккумулятора.

К этой же группе относятся команды CLRA, CLRX, CLRH, CLR (opr), производящие запись 0 в регистры A, X, H и ячейку памяти. В команде CLR (opr) могут использоваться следующие способы адресации: индексная, индексная по указателю стека с 8-разрядным смещением или прямая с 8-разрядным адресом.

Команда NSA меняет местами старшую (биты A7-4) и младшую (биты A3-0) тетрады содержимого аккумулятора.

Отдельную подгруппу составляют команды сохранения в стеке содержимого регистров A, H, X и загрузки этих регистров из стека. Команды сохранения PSHA, PSHH, PSHX пересылают содержимое соответствующих регистров в ячейку памяти, адресуемую содержимым регистра SP, затем содержимое этого регистра уменьшается на 1, адресуя следующую свободную ячейку стека. Команды загрузки увеличивают на 1 содержимое SP, адресуя верхнюю заполненную ячейку стека, после чего содержимое ячейки загружается в соответствующий регистр.

Общее задание:

Записать по адресу $30 код $7C, по адресу $40 код $D4, по адресу $41 код $3E. Загрузить и выполнить программу.