Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1659

.pdf
Скачиваний:
14
Добавлен:
07.01.2021
Размер:
1.51 Mб
Скачать

Окно “Board” позволяет изменить рабочие условия на плате STK500. Для изменения доступны следующие параметры: VTARGET, AREF и частота генератора. Выполнять это не рекомендуется, т.к. может привести к выходу микроконтроллера из строя. Узнать информацию о рекомендуемых рабочих условиях можно в документации на интересующий тип микроконтроллера.

Окно управления функциями автоматизации “Auto” применяется при программировании нескольких МК одним и тем же программным кодом. Действия представлены в виде списка в порядке очередности их выполнения (при активизации). Для разрешения выполнения действия его необходимо пометить флажком.

Более подробную информацию о STK500 см. в «Инструкции пользова-

теля STK500».

3.Домашнее задание

1.Ознакомиться с настоящим описанием.

2.Подготовить программу для записи в память МК. Она должна быть записана на каком-либо носителе: дискетке, диске, флешке.

3.Ответить на контрольные вопросы.

4.Порядок выполнения работы

1.Подключить плату STK500, с установленным МК и соединительными проводниками к компьютеру и источнику электропитания.

2.Запустите программу AVR Studio, как описано выше на стр.18.

3.Включите питание на плате STK500. На панели инструментов AVR

Studio нажмите кнопки .

4.В окне Program (см. рис. 12) нажмите кнопку Program. Через несколько секунд память МК запрограммируется.

5.Запустите программу, записанную в микроконтроллер, нажатием

кнопки RESET. Затем нажимайте на кнопки SW0 SW6.

6. Продемонстрируйте работу устройства преподавателю.

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

1.Каково назначение разъемов и комплектующих на плате STK-500?

2.Какая информация индицируется на плате STK 500?

3.Какова последовательность действий на устройстве STK 500 для выполнения следующих операций:

обновление программного обеспечения;

21

выполнение внутрисхемного программирования;

выполнение параллельного программирования.

4.Зачем нужны Lock Bits и Fuses?

5.Куда устанавливается МК ATmega16?

6.Как обеспечивается работа под управлением компьютера?

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

МЕТОДЫ АДРЕСАЦИИ, КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ И УПРАВЛЕНИЯ

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

1. Общие сведения

При создании программы для микроконтроллера на языке Ассемблер разработчик оперирует программно-доступными ресурсами микропроцессорной системы. У микроконтроллера ATmega128 эти ресурсы включают: программно-доступные регистры микроконтроллера, внутреннюю память данных, внешнюю память данных [3].

Каждая команда языка Ассемблер сообщает процессору выполняемую операцию и методы доступа к операндам. Командная строка Ассемблера включает метку (символический адрес), мнемонику (символическое имя) команды, поле операндов, комментарий [1].

Методы адресации представляют собой набор механизмов доступа к операндам. Одни из них просты и поэтому приводят к компактному формату команды и быстрому доступу к операнду, но объем доступных с их помощью ресурсов ограничен. Другие методы адресации позволяют оперировать со всеми имеющимися в системе ресурсами, но команда получается длинной, на ее ввод и выполнение тратится много времени. Набор методов адресации в каждой системе команд является компромиссным сочетанием известных механизмов адресации, выбранных проектировщиками архитектуры исходя из набора решаемых задач.

Заметим, что при двух операндах и приемнике результата имеет место трехадресная команда и каждый адрес формируется с использованием собственного метода адресации. Если адрес операнда или приемника результата не указан в команде, а подразумевается, то имеет место неявная адресация. В программах для микроконтроллера ATmega128 используется прямая, косвенная и относительная адресации. На рис.14 – 25 приведены схемы методов адресации.

22

15

4

0

Регистровый файл

 

 

31

 

 

 

ОР

 

 

d

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

Рис. 14. Регистровая адресация (один регистр общего назначения)

 

 

 

 

 

 

 

 

 

Регистровый файл

15

9

5 4

0

 

 

31

 

 

 

 

ОР

r

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

Рис. 15. Регистровая адресация (два регистра общего назначения)

15

 

5 0

 

Память I/O

 

 

 

 

3F ($5F)

 

 

ОР

n

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0($20)

Рис. 16. Регистровая адресация (регистры ввода-вывода)

 

 

 

 

ОЗУ данных

31

20 19 16

 

 

$FFFF

 

 

ОР

 

Rr/Rd

 

 

 

 

 

 

 

 

 

 

Младшие 16 бит

 

 

 

$0000

Рис. 17. Прямая адресация данных

23

15

 

 

0

 

ОЗУ данных

 

 

 

 

 

$FFFF

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистр Y или Z

 

 

 

 

 

 

 

 

 

 

 

+

 

 

15

10

6

5

0

 

 

 

 

 

 

 

 

 

 

 

 

OP

n

 

o

 

 

$0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 18. Косвенная адресация данных со смещением

15

0

 

 

ОЗУ данных

 

 

 

$FFFF

 

 

Регистр Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$0000

Рис. 19. Косвенная адресация данных

 

 

 

ОЗУ данных

15

0

 

 

 

$FFFF

 

 

 

Регистр X, Y или Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

-1

$0000

Рис. 20. Косвенная адресация данных с преддекрементом

15

0

ОЗУ данных

 

 

 

 

 

 

 

$FFFF

Регистр X, Y или Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$0000

Рис. 21. Косвенная адресация данных с постинкрементом

24

15

1

0

 

 

 

Память программ

 

 

 

 

$FFFF

 

 

 

 

 

 

 

 

 

 

Регистр Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$0000

 

 

 

 

 

 

 

 

 

 

Рис. 22. Адресация константы в памяти программ в командах LPM и ELPM

31

21

20

16

Память программ

 

 

$FFFF

 

 

 

OP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Младшие 16 бит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 23. Прямая адресация памяти программ в командах JMP и CALL

 

 

 

 

 

 

 

 

Память программ

15

 

0

 

 

 

 

 

 

 

$FFFF

 

 

 

 

 

 

 

 

Регистр Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$0000

 

 

 

 

 

 

 

 

 

Рис. 24. Косвенная адресация памяти программ в командах IJMP и ICALL

 

 

 

 

 

 

 

 

 

Память программ

15

 

 

0

 

 

 

 

 

 

$FFFF

 

 

 

 

 

 

 

 

 

 

 

 

PC

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

15

12

11

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OP

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$0000

 

 

 

 

 

 

 

 

 

 

Рис. 25. Относительная адресация памяти программ в командах RJMP и RCALL

 

 

 

 

 

 

25

 

 

 

Команды передачи данных приведены в табл. 2.

 

 

 

 

 

Таблица 2

 

 

Команды пересылки данных

 

 

 

 

 

 

 

 

 

 

Мне-

Операн-

 

 

 

 

Кол-во

мо-

ды

Описание

Операция

Флаги

 

циклов

ника

 

 

 

 

 

 

1

2

3

4

5

 

6

ELPM

Расширенная загрузка из па-

R0 (Z+RAMPZ)

Нет

 

3

мяти программ в регистр R0

 

 

 

 

Rd,Rr

 

 

Нет

 

1

MOV

0 d 31

Копировать регистр

Rd Rr

 

 

 

 

0 r 31

 

 

 

 

 

 

Rd,K

Загрузить непосредственное

 

Нет

 

1

LDI

16 d 31

Rd K

 

 

 

значение

 

 

 

 

0 k 255

 

 

 

 

 

 

 

 

 

 

LDS

Rd,k

Загрузить из ОЗУ

Rd (k)

Нет

 

3

0 d 31

 

 

 

 

0 k 65535

 

 

 

 

 

LD

Rd,X

Загрузить косвенно

Rd (X)

Нет

 

2

0 d 31

 

 

 

LD

Rd,X+

Загрузить косвенно с постин-

Rd (X),

Нет

 

2

0 d 31

крементом

X X+1

 

 

 

LD

Rd,-X

Загрузить косвенно с пред-

X X - 1,

Нет

 

2

0 d 31

декрементом

Rd (X)

 

 

 

LD

Rd,Y

Загрузить косвенно

Rd (Y),

Нет

 

2

0 d 31

 

 

 

LD

Rd,Y+

Загрузить косвенно с постин-

Rd (Y),

Нет

 

2

 

0 d 31

крементом

Y Y+1

 

 

 

LD

Rd,-Y

Загрузить косвенно с пред-

Y Y - 1,

Нет

 

2

0 d 31

декрементом

Rd (Y)

 

 

 

LDD

Rd,Y+q

Загрузить косвенно со сме-

Rd (Y+q)

Нет

 

2

0 d 31

щением

 

 

 

 

0 q 63

 

 

 

 

 

 

 

 

 

 

LD

Rd,Z

Загрузить косвенно

Rd (Z)

Нет

 

2

0 d 31

 

 

 

LD

Rd,Z+

Загрузить косвенно с постин-

Rd (Z),

Нет

 

2

0 d 31

крементом

Z Z+1

 

 

 

LD

Rd,-Z

Загрузить косвенно с пред-

Z Z - 1,

Нет

 

2

0 d 31

декрементом

Rd (Z)

 

 

 

LDD

Rd,Z+q

Загрузить косвенно со сме-

Rd (Z+q)

Нет

 

2

0 d 31

щением

 

 

 

 

0 q 31

 

 

 

 

 

 

 

 

 

 

STS

k,Rr

Загрузить непосредственно в

 

Нет

 

3

0 r 31

(k) Rr

 

 

 

ОЗУ

 

 

 

 

0 k 65535

 

 

 

 

 

 

 

 

 

 

26

Окончание табл. 2

1

2

3

4

5

6

ST

X,Rr

Записать косвенно

(X) Rr

Нет

2

0 r 31

 

 

ST

X+,Rr

Записать косвенно с постин-

(X) Rr,

Нет

2

0 r 31

крементом

X X + 1

 

 

ST

-X,Rr

Записать косвенно с преддек-

X X - 1,

Нет

2

0 r 31

рементом

(X) Rr

 

 

ST

Y,Rr

Записать косвенно

(Y) Rr

Нет

2

0 r 31

 

 

ST

Y+,Rr

Записать косвенно с постин-

(Y) Rr,

Нет

2

0 r 31

крементом

Y Y + 1

 

ST

-Y,Rr

Записать косвенно с преддек-

Y Y - 1,

Нет

2

0 r 31

рементом

(Y) Rr

 

STD

Y+q,Rr

Записать косвенно со смеще-

(Y+q) Rr

Нет

2

0 r 31

нием

 

 

0 q 63

 

 

 

 

 

 

 

 

ST

Z,Rr

Записать косвенно

(Z) Rr

Нет

2

0 r 31

 

ST

Z+,Rr

Записать косвенно с постин-

(Z) Rr,

Нет

2

0 r 31

крементом

Z Z + 1

 

ST

-Z,Rr

Записать косвенно с преддек-

Z Z - 1,

Нет

2

0 r 31

рементом

(Z) Rr

 

STD

Z+q,Rr

Записать косвенно со смеще-

(Z+q) Rr

Нет

2

0 r 31

нием

 

 

0 q 63

 

 

 

 

 

 

 

 

LPM

 

Загрузить байт из памяти про-

R0 (Z)

Нет

3

 

грамм

 

 

 

 

 

 

IN

Rd,P

Загрузить данные из порта I/O

 

Нет

1

0 d 31

Rd P

 

в регистр

 

 

0 P 63

 

 

 

 

 

 

 

 

OUT

P,Rr

Записать данные из регистра в

 

Нет

1

0 r 31

P Rr

 

порт I/O

 

 

0 P 63

 

 

 

 

 

 

 

 

PUSH

Rr

Сохранить регистр в стеке

STACK Rr

Нет

2

0 r 31

 

POP

Rd

Выгрузить регистр из стека

Rd STACK

Нет

2

0 d 31

 

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

Команды ELPM и LPM выполняют загрузку памяти программ. Команда MOV копирует содержимое одного регистра общего назначения в другой. Команда LDI загружает регистр общего назначения непосредственно константой (только R16 – R32), а команды LD выполняют загрузку регист-

27

ра из ячейки ОЗУ при косвенной адресации, используя в качестве источника адреса регистры X, Y, Z, а также варианты с постинкрементом и преддекрементом источника. Команда LDD выполняет эту же операцию при помощи косвенной адресации со смещением. Команда LDS загружает в регистр общего назначения содержимое прямо адресуемой ячейки памяти данных.

Команда ST выполняет обратную операцию относительно LD – заносит в косвенно адресуемую ячейку памяти данных содержимое регистра общего назначения, используя также варианты с постинкрементом и преддекрементом адреса. Команда STD выполняет эту же операцию при помощи косвенной адресации со смещением, а команда STS прямо адресует ячейку ОЗУ.

Команда IN заносит содержимое регистра ввода-вывода в регистр общего назначения, а команда OUT выполняет обратную операцию.

Команда PUSH сохраняет содержимое регистра в стеке, а команда POP выполняет обратную операцию. При выполнении этих команд кроме программного счетчика изменяется и значение указателя стека SP.

Команды передачи управления (переходов) приведены в табл. 3.

 

 

Команды переходов

 

Таблица 3

 

 

 

 

 

 

 

 

 

 

 

 

Мне-

 

 

 

 

 

Кол-во

мо-

Операнды

Описание

Операция

Флаги

 

 

циклов

ника

 

 

 

 

 

 

1

2

3

4

5

 

6

RJMP

k

Перейти относительно

PC PC + k + 1

Нет

 

2

-2K k 2K

 

LJMP

 

Перейти косвенно

PC Z

Нет

 

2

JMP

k

Перейти

PC k

Нет

 

3

0 k 4M

 

 

 

 

 

 

 

RCALL

K

Вызвать подпрограмму от-

PC PC + k + 1

Нет

 

3

-2K k 2K

носительно

 

ICALL

Вызвать подпрограмму кос-

PC Z

Нет

 

3

 

венно

 

 

 

 

 

 

 

CALL

K

Выполнить длинный вызов

PC k

Нет

 

4

0 k 64K

подпрограммы

 

RET

Вернуться из подпрограммы

PC STACK

Нет

 

4

RETI

Вернуться из прерывания

PC STACK

1

 

4

CPSE

Rd,Rr

Сравнить и пропустить, если

if Rd=Rr then

Нет

 

1/2/3

0 d 31,

равно

PC PC + 2 (or 3)

 

 

0 r 31

 

 

 

 

 

SBRC

Rr,b

Пропустить, если бит в ре-

if Rr(b)=0 then

Нет

 

1/2/3

0 r 31

 

гистре очищен

PC PC + 2 (or 3)

 

 

0 b 7

 

 

 

 

 

28

Продолжение табл. 3

1

2

3

4

5

6

 

Rr,b

Пропустить, если бит в ре-

if Rr(b)=1 then

 

 

SBRS

0 r 31

Нет

1/2/3

гистре установлен

PC PC + 2 (or 3)

 

0 b 7

 

 

 

 

 

P,b

Пропустить, если бит в ре-

if I/OP(b)=0 then

 

 

SBIC

0 P 31

Нет

1/2/3

гистре I/O очищен

PC PC + 2 (or 3)

 

0 b 7

 

 

 

 

 

P,b

Пропустить, если бит в ре-

if I/OP(b)=1 then

 

 

SBIS

0 r 31

Нет

1/2/3

гистре I/O установлен

PC PC + 2 (or 3)

 

0 b 7

 

 

 

 

 

s,k

Перейти, если бит в регист-

if SREG(s)=1 then

 

 

BRBS

0 s 7

Нет

1/2

 

-64 k +63

ре статуса установлен

PC PC + k + 1

 

 

 

 

 

 

 

BRBC

s,k

Перейти, если бит в регист-

if SREG(s)=0 then

Нет

1/2

0 s 7

 

-64 k +63

ре статуса очищен

PC PC + k + 1

 

 

 

 

 

 

 

BREQ

k

Перейти, если равно

if Rd=Rr(Z=1) then

Нет

1/2

-64 k +63

PC PC + k + 1

BRNE

k

Перейти, если не равно

if Rd Rr(Z=0) then

Нет

1/2

-64 k +63

PC PC + k + 1

BRCS

k

Перейти, если флаг переноса

if С=1 then

Нет

1/2

-64 k +63

установлен

PC PC + k + 1

BRCC

k

Перейти, если флаг переноса

if С=0 then

Нет

1/2

-64 k +63

очищен

PC PC + k + 1

BRSH

k

Перейти, если равно или

if Rd Rr (C=0) then

Нет

1/2

-64 k +63

больше (без знака)

PC PC + k + 1

BRLO

k

Перейти, если меньше

if Rd<Rr (C=1) then

Нет

1/2

-64 k +63

(без знака)

PC PC + k + 1

BRMI

k

Перейти, если минус

if N=1 then

Нет

1/2

-64 k +63

PC PC + k + 1

BRPL

k

Перейти, если плюс

if N=0 then

Нет

1/2

-64 k +63

PC PC + k + 1

BRGE

k

Перейти, если больше или

if Rd Rr (N V=0)

Нет

1/2

-64 k +63

равно (с учетом знака)

then

 

 

PC PC + k + 1

 

 

 

 

 

 

 

BRLT

k

Перейти, если меньше, чем

if Rd<Rr (N V=1)

Нет

1/2

-64 k +63

(со знаком)

then

 

 

PC PC + k + 1

 

 

 

 

 

 

 

BRHS

k

Перейти, если флаг полупе-

if H=1 then

Нет

1/2

-64 k +63

реноса установлен

PC PC + k + 1

BRHC

k

Перейти, если флаг полупе-

if H=0 then

Нет

1/2

-64 k +63

реноса очищен

PC PC + k + 1

BRTS

k

Перейти, если флаг T

if T=1 then

Нет

1/2

-64 k +63

установлен

PC PC + k + 1

29

Окончание табл. 3

1

2

3

4

5

6

BRTC

k

Перейти, если флаг T очи-

if T=0 then

Нет

1/2

-64 k +63

щен

PC PC + k + 1

BRVS

k

Перейти, если флаг пере-

if V=1 then

Нет

1/2

-64 k +63

полнения установлен

PC PC + k + 1

BRVC

k

Перейти, если флаг пере-

if V=0 then

Нет

1/2

-64 k +63

полнения очищен

PC PC + k + 1

BRIE

k

Перейти, если глобальное

if I=1 then

Нет

1/2

 

-64 k +63

прерывание разрешено

PC PC + k + 1

 

 

BRID

k

Перейти, если глобальное

if I=0 then

Нет

1/2

 

-64 k +63

прерывание запрещено

PC PC + k + 1

 

 

Из табл. 2 и 3 видно, что команды пересылки данных и команды переходов значения флагов регистра SREG не изменяют.

2.Домашнее задание

1.Изучить описание структуры микроконтроллера ATmega128 и интегрированной системы его программирования на языке Ассемблер AVRStudio.

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

3.Порядок выполнения работы

1. Запустить на персональном компьютере интегрированную систему программирования AVRStudio. Командой Project New Project создать новый проект Lesson1. С использованием редактора текста создать демонстрационную программу:

.device ATmega128

.include "m128def.inc"

;***** Инициализация указателя стека **********************

ldi R20,$FF ; загрузка промежуточного регистра R20 младшим ; байтом адреса начала стека

out SPL,R20 ; загрузка младшего байта указателя стека

ldi R20,$10 ; загрузка промежуточного регистра R20 старшим ; байтом адреса начала стека

out SPH,R20 ; загрузка старшего байта указателя стека

;***** Выполнение команд пересылок **************************

ldi R20,$57 ; загрузка регистра R20 константой

ldi R30,$00 ;загрузка регистровой пары Z (R30,R31) с адресом $0100

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]