Реферат Курсовая Конспект
Постановка задачи - раздел Высокие технологии, Описание и характерные особенности микроконтроллеров ATmega8535 Занести Числа В Память: A = N+100; B = ...
|
Занести числа в память:
a = N+100;
b = ;
c = N+60;
d = N+125.
N – номер варианта по списку группы или выданный преподавателем.
Произвести операции над числами a,b,c,d следующие задания:
Содержание отчета
Отчет по лабораторной работе должен содержать номер, название, цель лабораторной работы, задание на лабораторную работу, текст программы на языке ассемблера.
Литература
1. Балакина Е.П., Воробьёва Л.Н., Гречишников В.А. Интегрирование программных модулей ассемблера в среде DELPHI. Методические указания к лабораторным работам по дисциплине «Машино-Ориентированные Языки». – М.: МИИТ, 2009. –56 с.
2. Хусаинов Р.З., Садов В.Б. Программирование микроконтроллеров ATmega8535: методические указания к выполнению лабораторных работ.– Челябинск, 2009.– 123с.
3. http://www.gaw.ru/html.cgi/txt/doc/micros/avr/asm/start.htm
Содержание
Введение | ||
1. | Описание и характерные особенности микроконтроллеров ATmega8535 | |
1.1 | Устройства ввода/вывода ATmega8535 | |
1.2 | Архитектура микроконтроллеров ATmega8535 | |
1.3 | Система команд микроконтроллеров | |
1.3.1 | Команды пересылки данных | |
1.3.2 | Арифметические команды | |
1.3.3 | Команды умножения | |
1.3.4 | Команды сравнения | |
1.3.5 | Логические команды | |
1.3.6 | Команды сдвигов и операции с битами | |
1.3.7 | Команды безусловного перехода | |
1.3.8 | Команды обращения к процедурам | |
1.3.9 | Команды условного перехода | |
2. | Создание программ на языке Ассемблера | |
3. | Порядок выполнения лабораторных работ | |
Лабораторная работа №1 | ||
Лабораторная работа №2 | ||
Лабораторная работа №3 | ||
Литература | ||
Приложение 1 |
Приложение 1
Таблица 9. Арифметические и логические команды
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
ADD | Rd,Rr 0≤d≤31, 0≤r≤31 | Сложить без переноса | Rd ¬Rd + Rr | Z, C, N, V, H | |
ADC | Rd.Rr 0≤d≤31, 0≤r≤31 | Сложить с переносом | Rd ¬ Rd + Rr+ С | Z, C, N, V, H | |
ADIW | Rd,K dE{24,26,28,30} 0≤K≤63 | Сложить непосредственное значение со словом | Rdh:Rdl¬Rdh:Rdl+ К | Z, C, N, V | |
SUB | Rd,Rr 0≤d≤31, 0≤r≤31 | Вычесть без заема | Rd ¬ Rd – Rr | Z, C, N, V, H | |
SUBI | Rd, К 16≤d≤31 0≤K≤255 | Вычесть непосредственное значение | Rd ¬ Rd – К | Z, C, N, V, H | |
SBC | Rd, Rr 0≤d≤31, 0≤r≤31 | Вычесть с заемом | RdßRd-Rr-C | Z, C, N, V, H | |
SBCI | Rd, К 16≤d≤32, 0≤K≤255 | Вычесть непосредственное значение с заемом | RdßRd-K-C | Z, C, N, V, H | |
SBIW | Rd, К dE{24,26,28,30} О≤К≤бЗ | Вычесть непосредственное значение из слова | Rdh:RdlßRdh:Rdl-K | Z, C, N, V | |
AND | Rd, Rr 0≤d≤31, 0≤r≤31 | Выполнить логическое AND | Rd ß Rd • Rr | Z, N, V | |
ANDI | Rd, К 16<d<31 0<k≤255 | Выполнить логическое AND | Rd ß Rd • К | Z, N, V | |
OR | Rd, Rr 0≤d≥31, 0≤r≤31 | Выполнить логическое OR | Rd ßRd v Rr | Z, N, V | |
ORI | Rd, К 16≤d≤31, 0≤K≤255 | Выполнить логическое OR с непосредственным значением | Rd ßRd v К | Z, N, V | |
EOR | Rd, Rr 0≤d≤31, 0≤г≤31 | Выполнить исключающее OR | Rd ßRd Rr | Z, N, V | |
СОМ | Rd 0≤d≤31 | Выполнить дополнение до единицы | RdßSFF-Rd | Z, C, N, V | |
NEG | Rd 0≤d≤31 | Выполнить дополнение до двух | Rd ß S00 - Rd | Z, C, N, V, H | |
SBR | Rd, К 16≤d≤31, 0≤K≤255 | Установить биты в регистре | Rd ß Rd v К | Z, N,V | |
CBR | Rd, К 16≤d≤31 O≤K≤255 | Очистить биты в регистре | Rd ßRd • (SFF - К) | Z, N, V | |
INC | Rd 0≤d≤31 | Инкрементировать | Rd ßRd + 1 | Z, N,V | |
DEC | Rd 0≤d≤31 | Декрементировать | Rd ß Rd - 1 | Z, N,V | |
TST | Rd 0≤r≤31 | Проверить на ноль или минус | RdßRd.Rd | Z, N, V | |
CLR | Rd 0≤d≤31 | Очистить регистр | Rd ß Rd Å Rd | Z, N, V | |
SER | Rd 16≤d≤31 | Установить все биты регистра | Rd ßSFF | нет | |
MUL | Rd,Rr 0≤d≤31, 0≤r≤31 | Беззнаковое умножение целых чисел | R1:R0 ß Rd*Rr | Z,C | |
MULS | Rd,Rr 16≤d≤31, 16≤r≤31 | Умножение целых чисел с учётом знака | R1:R0 ß Rd*Rr | Z,C | |
MULSU | Rd,Rr 16≤d≤23, 16≤r≤23 | Целочисленное умножение числа со знаком на число без знака | R1:R0 ß Rd*Rr | Z,C | |
FMUL | Rd,Rr 16≤d≤23, 16≤r≤23 | Беззнаковое умножение дробных чисел | R1:R0 ß (Rd*Rr)<<1 | Z,C | |
FMULS | Rd,Rr 16≤d≤23, 16≤r≤23 | Умножение дробных чисел с учётом знака | R1:R0 ß (Rd*Rr)<<1 | Z,C | |
FMULSU | Rd,Rr 16≤d≤23, 16≤r≤23 | Умножение дробного числа со знаком на дробное число без знака | R1:R0 ß (Rd*Rr)<<1 | Z,C | |
CP | Rd, Rr 0≤d≤31, 0≤r≤31 | Сравнить | Rd-Rr | Z, C, N, V, H | |
CPC | Rd, Rr 0≤d≤31, 0≤r≤31 | Сравнить с учетом переноса | Rd-Rr-C | Z, C, N, V, H | |
CPI | Rd, К 16≤d≤31, 0≤K≤255 | Сравнить с константой | Rd-K | Z, C, N, V, H |
Таблица 10. Команды сдвигов и операций с битами
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
LSL | Rd 0≤d≤31 | Логически сдвинуть влево | Rd(n+1)ß Rd(n), Rd(0)ß0, Cß Rd(7) | Z,C,N,V,H | |
LSR | Rd 0≤d≤31 | Логически сдвинуть вправо | Rd(n)ß Rd(n+1), Rd(7) ß 0, C ß Rd(0) | Z,C,N,V | |
ROL | Rd 0≤d≤31 | Сдвинуть влево через перенос | Rd(0) ß C, Rd(n+1) ß Rd(n), C ß Rd(7) | Z,C,N,V,H | |
ROR | Rd 0≤d≤31 | Сдвинуть вправо через перенос | Rd(7) ß C, Rd(n)ß Rd(n+1), C ß Rd(0) | Z,C,N,V | |
ASR | Rd 0≤d≤31 | Арифметически сдвинуть вправо | Rd(n) ß Rd(n+1), n=0...6, Rd(0) ß C | Z,C,N,V | |
SWAP | Rd 0≤d≤31 | Поменять нибблы местами | Rd(3...0) <–> Rd(7...4) | Нет | |
BSET | s 0≤s≤7 | Установить флаг | SREG(s) ß 1 | SREG(s) | |
BCLR | s 0≤s≤7 | Очистить флаг | SREG(s) ß 0 | SREG(s) | |
SBI | P,b O≤P≤31, 0≤b≤7 | Установить бит в регистр I/O | l/0(P,b) ß 1 | Нет | |
CBI | P,b 0≤P≤31, 0≤b≤7 | Очистить бит в регистре I/O | l/0(P,b) ß 0 | Нет | |
BST | Rd,b 0≤d≤31, 0≤b≤7 | Переписать бит из регистра во флаг Т | Т ß Rd(b) | Т | 1 |
BLD | Rd,b 0≤d≤31, 0≤b≤7 | Загрузить Т флаг в бит регистра | Rd(b) ß Т | Нет | |
SEC | Установить флаг переноса | С ß 1 | С | ||
CLC | Очистить флаг переноса | С ß 0 | С | ||
SEN | Установить флаг отрицательного значения | N ß 1 | N | ||
CLN | Очистить флаг отрицательного значения | N ß 0 | N | ||
SEZ | Установить флаг нулевого значения | Z ß 1 | Z | ||
CLZ | Очистить флаг нулевого значения | Z ß 0 | Z | ||
SEI | Установить флаг глобального прерывания | I ß 1 | I | ||
CLI | Очистить флаг глобального прерывания | I ß 0 | I | ||
SES | Установить флаг знака | S ß 1 | S | ||
CLS | Очистить флаг знака | S ß 0 | S | ||
SEV | Установить флаг переполнения | V ß 1 | V | ||
CLV | Очистить флаг переполнения | V ß 0 | V | ||
SET | Установить флаг Т | T ß 1 | T | ||
CLT | Очистить флаг Т | Т ß 0 | T | ||
SEH | Установить флаг полу переноса | Н ß 1 | Н | ||
CLH | Очистить флаг полу переноса | Н ß 0 | Н | ||
NOP | Выполнить холостую команду | Нет | |||
SLEEP | Установить режим SLEEP | Нет | |||
WDR | Сбросить сторожевой таймер | Нет |
Таблица 11. Команды пересылки данных
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
ELPM | Расширенная загрузка из памяти программ в регистр RO | R0ß (Z+RAMPZ) | Нет | ||
MOV | Rd,Rr 0≤d≤31, 0≤r≤31 | Копировать регистр | RdßRr | Нет | |
LDI | Rd,k 16≤d≤31,0≤k≤255 | Загрузить непосредственное значение | RdßK | Нет | |
LDS | Rd,k 0≤d≤31 0≤k≤65535 | Загрузить из ОЗУ | Rdß(k) | Нет | |
LD | Rd,X 0≤d≤31 | Загрузить косвенно | Rd ß (X) | Нет | |
LD | Rd,X+ 0≤d≤31 | Загрузить косвенно с постинкрементом | Rd ß (X), XßX+1 | Нет | |
LD | Rd,X- 0≤d≤31 | Загрузить косвенно с преддекрементом | XßX-1, Rd ß (X) | Нет | |
LD | Rd,Y 0≤d≤31 | Загрузить косвенно | Rdß(Y), | Нет | |
LD | Rd,Y+ 0≤d≤31 | Загрузить косвенно с постинкрементом | Rdß(Y), YßY+1 | Нет | |
LD | Rd,Y 0≤d≤31 | Загрузить косвенно с преддекрементом | YßY-1, Rd ß (Y) | Нет | |
LDD | Rd,Y+q 0≤d≤31, 0≤q≤63 | Загрузить косвенно со смещением | Rdß(Y+q) | Нет | |
LD | Rd,Z 0≤d≤31 | Загрузить косвенно | Rd ß (Z) | Нет | |
LD | Rd,Z+ 0≤d≤31 | Загрузить косвенно с постинкрементом | Rd ß (Z), ZßZ+1 | Нет | |
LD | Rd,-Z 0≤d≤31 | Загрузить косвенно с преддекрементом | ZßZ-1, Rdß(Z) | Нет | |
LDD | Rd,Z+q 0≤d≤31, 0≤q≤31 | Загрузить косвенно со смещением | Rd ß (Z+q) | Нет | |
STS | k,Rr 0≤d≤31, 0≤k≤65535 | Загрузить непосредственно в ОЗУ | (k) ßRr | Нет | |
ST | X,Rr 0≤r≤31 | Записать косвенно | (X) ß Rr | Нет | |
ST | X+,Rr 0≤r≤31 | Записать косвенно с постинкрементом | (X) ßRr, XßX+ 1 | Нет | |
ST | -X,Rr 0≤r≤31 | Записать косвенно с преддекрементом | XßX-1, (X) ßRr | Нет | |
ST | Y,Rr 0≤r≤31 | Записать косвенно | (Y) ßRr | Нет | |
ST | Y+,Rr 0≤r≤31 | Записать косвенно с постинкрементом | (Y) ß Rr, YßY+ 1 | Нет | |
STD | Y+q,Rr 0≤r≤31, 0≤q≤63 | Записать косвенно со смещением | (Y+q)ßRr | Нет | |
ST | Z,Rr 0≤r≤31 | Записать косвенно | (Z) ßRr | Нет | |
ST | Z+,Rr 0≤r≤31 | Записать косвенно с постинкрементом | (Z) ß Rr, ZßZ+ 1 | Нет | |
ST | -Z,Rr 0≤r≤31 | Записать косвенно с преддекрементом | ZßZ-1, (Z) ß Rr | Нет | |
STD | Z+q,Rr 0≤r≤31, 0≤q≤63 | Записать косвенно со смещением | (Z+q)ßRr | Нет | |
LPM | Загрузить байт из памяти программ | R0 ß (Z) | Нет | ||
IN | Rd,P 0≤d≤31, 0≤P≤63 | Загрузить данные из порта I/O в регистр | RdßP | Нет | |
OUT | P,Rr 0≤r≤31, 0≤P≤63 | Записать данные из регистра в порт I/O | PßRr | Нет | |
PUSH | Rr 0≤r≤31 | Сохранить регистр в стеке | STACK ßRr | Нет | |
POP | Rr 0≤r≤31 | Загрузить в регистр из стека | Rr ß STACK | Нет |
Таблица 12. Команды переходов
Мнемоника | Операнды | Описание | Операция | Флаги | Кол-во циклов |
RJMP | k -2K<k<2K | Перейти относительно | PC ßPC + k + 1 | Нет | |
LJMP | Перейти косвенно | PCßZ | Нет | ||
JMP | k 0<k<4M | Перейти | PCßk | Нет | |
RCALL | k -2K≤k≤2K | Вызвать подпрограмму относительно | PC ß PC + k + 1 | Нет | |
ICALL | Вызвать подпрограмму косвенно | PCßZ | Нет | ||
CALL | k 0≤k≤64K | Выполнить длинный вызов подпрограммы | PCßk | Нет | |
RET | Вернуться из подпрограммы | PC ß STACK | Нет | ||
RETI | Вернуться из прерывания | PC ß STACK | I | ||
CPSE | Rd,Rr 0≤d≤31, 0≤r≤31 | Сравнить и пропустить, если равно | If Rd=Rr then PC ß PC + 2 (or 3) | Нет | ½/3 |
SBRC | Rr,b 0≤r≤31, 0≤b≤7 | Пропустить, если бит в регистре очищен | if Rr(b)=0 then PC ß PC + 2 (or 3) | Нет | ½/3 |
SBRS | Rr,b 0≤r≤31, 0≤b≤7 | Пропустить, если бит в регистре установлен | If Rr(b)=1 then PC ßPC + 2 (or 3) | Нет | ½/3 |
SBIC | P,b 0≤P≤31, 0≤b≤7 | Пропустить, если бит в регистре I/O очищен | if l/O P(b)=0 then PC ß PC + 2 (or 3) | Нет | ½/3 |
SBIS | P,b 0≤r≤31, 0≤b≤7 | Пропустить, если бит в регистре I/O установлен | If l/O P(b)=1 then PC ßPC + 2 (or 3) | Нет | ½/3 |
BRBS | s,k 0≤s≤7, -64≤k≤+63 | Перейти, если бит в регистре статуса установлен | if SREG(s)=1 then PC ß PC + k + 1 | Нет | ½ |
BRBC | s,k 0≤s≤7, -64≤k≤+63 | Перейти, если бит в регистре статуса очищен | if SREG(s)=0 then PC ß PC + k + 1 | Нет | ½ |
BREQ | k -64≤k≤+63 | Перейти, если равно | if Rd=Rr (Z=1) then PC ß PC + k + 1 | Нет | ½ |
BRNE | k -64≤k≤+63 | Перейти, если не равно | if Rd¹Rr(Z=0) then PC<ßPC+ k+ 1 | Нет | ½ |
BRCS | k -64£k£+63 | Перейти, если флаг переноса установлен | if C=1 then PC ß PC + k + 1 | Нет | 1/2 |
BRCC | k -64≤k≤+63 | Перейти, если флаг переноса очищен | if C=0 then PC ß PC + k + 1 | Нет | 1/2 |
BRSH | K -64≤k≤+63 | Перейти, если равно или больше (без знака) | if Rd<Rr(C=0) then PCßPC+ k+ 1 | Нет | 1/2 |
BRLO | k -64≤k≤+63 | Перейти, если меньше (без знака) | if Rd<Rr (C=1) then PC ßPC + k + 1 | Нет | 1/2 |
BRMI | k -64≤k≤+63 | Перейти, если минус | if N=1 then PC ß PC + k + 1 | Нет | 1/2 |
BRPL | k -64≤k≤+63 | Перейти, если плюс | if N=0 then PC ß PC + k + 1 | Нет | 1/2 |
BRGE | k -64≤k≤+63 | Перейти, если больше или равно (с учетом знака) | if Rd>Rr (NÅV=0) then PC ß PC + k + 1 | Нет | 1/2 |
BRLT | k -64≤k≤+63 | Перейти, если меньше чем (со знаком) | if Rd<Rr (NÅV=1)then PC ßPC + k+ 1 | Нет | 1/2 |
BRHS | K -64≤k≤+63 | Перейти, если флаг полупереноса установлен | if H=1 then PC ß PC + k + 1 | Нет | 1/2 |
BRHC | k -64≤k≤+63 | Перейти, если флаг полупереноса очищен | if H=0 then PC ß PC + k + 1 | Нет | 1/2 |
BRTS | k -64≤k≤+63 | Перейти, если флаг Т установлен | if T=1 then PC ß PC + k + 1 | Нет | 1/2 |
BRTC | k -64≤k≤+63 | Перейти, если флаг Т очищен | if T=0 then PC ß pc + k + 1 | Нет | 1/2 |
BRVS | k -64≤k≤+63 | Перейти, если флаг переполнения установлен | if V=1 then PC ß PC + k + 1 | Нет | 1/2 |
BRVC | k -64≤k≤+63 | Перейти, если флаг переполнения очищен | if V=0 then PC ß PC + k + 1 | Нет | 1/2 |
BRIE | k -64≤k≤+63 | Перейти, если глобальное прерывание разрешено | if I=1 then PC ß PC + k + 1 | Нет | 1/2 |
BRID | k -64k£k£+63 | Перейти, если глобальное прерывание запрещено | if I=0 then PC ß PC + k + 1 | Нет | 1/2 |
[1] См приложение
– Конец работы –
Эта тема принадлежит разделу:
Любые устройства в том числе и устройства связи радиоавтоматики или аудиовизуальной аппаратуры требуют присутствия в своем составе устройства... Одним распростран нными в настоящее время являются микроконтроллеры фирмы... Описание и характерные особенности микроконтроллеров ATmega...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Постановка задачи
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов