
1659
.pdfОкно “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