АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

AVR АТMEGA 128

Читайте также:
  1. Принципы считывания данных с матричной клавиатуры с помощью микроконтроллера AVR АТMEGA128 в режиме программного опроса.
  2. Принципы функционирования аппаратных таймеров-счетчиков, входящих в состав микроконтроллера AVR АТMEGA 128.
  3. Система прерываний в микроконтроллере AVR АТMEGA 128.

 

 

 

 

 

ПРИЛОЖЕНИЕ 2
ИНСТРУКЦИИ ПРОЦЕССОРОВ AVR

Таблица П.2.1 – Арифметические и логические команды.

Мнемоника Операнды Описание Операция Флаги Циклы
ADD Rd,Rr Суммирование без переноса Rd = Rd + Rr Z,C,N,V,H,S  
ADC Rd,Rr Суммирование с переносом Rd = Rd + Rr + C Z,C,N,V,H,S  
SUB Rd,Rr Вычитание без переноса Rd = Rd - Rr Z,C,N,V,H,S  
SUBI Rd,K8 Вычитание константы Rd = Rd - K8 Z,C,N,V,H,S  
SBC Rd,Rr Вычитание с переносом Rd = Rd - Rr - C Z,C,N,V,H,S  
SBCI Rd,K8 Вычитание константы с переносом Rd = Rd - K8 - C Z,C,N,V,H,S  
AND Rd,Rr Логическое И Rd = Rd · Rr Z,N,V,S  
ANDI Rd,K8 Логическое И с константой Rd = Rd · K8 Z,N,V,S  
OR Rd,Rr Логическое ИЛИ Rd = Rd V Rr Z,N,V,S  
ORI Rd,K8 Логическое ИЛИ с константой Rd = Rd V K8 Z,N,V,S  
EOR Rd,Rr Логическое исключающее ИЛИ Rd = Rd EOR Rr Z,N,V,S  
COM Rd Побитная Инверсия Rd = $FF - Rd Z,C,N,V,S  
NEG Rd Изменение знака (Доп. код) Rd = $00 - Rd Z,C,N,V,H,S  
SBR Rd,K8 Установить бит (биты) в регистре Rd = Rd V K8 Z,C,N,V,S  
CBR Rd,K8 Сбросить бит (биты) в регистре Rd = Rd · ($FF - K8) Z,C,N,V,S  
INC Rd Инкрементировать значение регистра Rd = Rd + 1 Z,N,V,S  
DEC Rd Декрементировать значение регистра Rd = Rd -1 Z,N,V,S  
TST Rd Проверка на ноль либо отрицательность Rd = Rd · Rd Z,C,N,V,S  
CLR Rd Очистить регистр Rd = 0 Z,C,N,V,S  
SER Rd Установить регистр Rd = $FF None  
ADIW Rdl,K6 Сложить константу и слово Rdh:Rdl = Rdh:Rdl + K6 Z,C,N,V,S  
SBIW Rdl,K6 Вычесть константу из слова Rdh:Rdl = Rdh:Rdl - K6 Z,C,N,V,S  
MUL Rd,Rr Умножение чисел без знака R1:R0 = Rd * Rr Z,C  
MULS Rd,Rr Умножение чисел со знаком R1:R0 = Rd * Rr Z,C  
MULSU Rd,Rr Умножение числа со знаком с числом без знака R1:R0 = Rd * Rr Z,C  
FMUL Rd,Rr Умножение дробных чисел без знака R1:R0 = (Rd * Rr) << 1 Z,C  
FMULS Rd,Rr Умножение дробных чисел со знаком R1:R0 = (Rd *Rr) << 1 Z,C  
FMULSU Rd,Rr Умножение дробного числа со знаком с числом без знака R1:R0 = (Rd * Rr) << 1 Z,C  

Таблица П.2.2. – Команды ветвления

Мнемоника Опе­ранды Описание Операция Флаги Циклы
RJMP k Относительный переход PC = PC + k +1 None  
IJMP Нет Косвенный переход на (Z) PC = Z None  
EIJMP Нет Расширенный косвенный пере­ход на (Z) STACK = PC+1, PC(15:0) = Z, PC(21:16) = EIND None  
JMP k Переход PC = k None  
RCALL k Относительный вызов подпро­граммы STACK = PC+1, PC = PC+k+1 None 3/4*
ICALL Нет Косвенный вызов (Z) STACK = PC+1, PC = Z None 3/4*
EICALL Нет Расширенный косвенный вы­зов (Z) STACK = PC+1, PC(15:0) = Z, PC(21:16) =EIND None 4*
CALL k Вызов подпрограммы STACK = PC+2, PC = k None 4/5*
RET Нет Возврат из подпрограммы PC = STACK None 4/5*
RETI Нет Возврат из прерывания PC = STACK I 4/5*
CPSE Rd,Rr Сравнить, пропустить если равны if (Rd ==Rr) PC = PC 2 or 3 None 1/2/3
CP Rd,Rr Сравнить Rd -Rr Z,C,N,V,H,S  
CPC Rd,Rr Сравнить с переносом Rd - Rr - C Z,C,N,V,H,S  
CPI Rd,K8 Сравнить с константой Rd - K Z,C,N,V,H,S  
SBRC Rr,b Пропустить если бит в реги­стре очищен if(Rr(b)==0) PC = PC+2 or 3 None 1/2/3
SBRS Rr,b Пропустить если бит в регистре установлен if(Rr(b)==1) PC = PC+2 or 3 None 1/2/3
SBIC P,b Пропустить если бит в порту очищен if(I/O(P,b)==0) PC = PC+ or 3 None 1/2/3
SBIS P,b Пропустить если бит в порту установлен if(I/O(P,b)==1) PC = PC+2 or 3 None 1/2/3
BRBC s,k Перейти если флаг в SREG очищен if(SREG(s)==0) PC = PC+k+1 None 1/2
BRBS s,k Перейти если флаг в SREG установлен if(SREG(s)==1) PC = PC+k+1 None 1/2
BREQ k Перейти если равно if(Z==1) PC = PC + k + 1 None 1/2
BRNE k Перейти если не равно if(Z==0) PC = PC + k + 1 None 1/2
BRCS k Перейти если перенос установлен if(C==1) PC = PC + k + 1 None 1/2
BRCC k Перейти если перенос очищен if(C==0) PC = PC + k + 1 None 1/2
BRSH k Перейти если равно или больше if(C==0) PC = PC + k + 1 None 1/2
BRLO k Перейти если меньше if(C==1) PC = PC + k + 1 None 1/2
BRMI k Перейти если минус if(N==1) PC = PC + k + 1 None 1/2
BRPL k Перейти если плюс if(N==0) PC = PC + k + 1 None 1/2
BRGE k Перейти если больше или равно (со знаком) if(S==0) PC = PC + k + 1 None 1/2
BRLT k Перейти если меньше (со знаком) if(S==1) PC = PC + k + 1 None 1/2
BRHS k Перейти если флаг внутреннего переноса установлен if(H==1) PC = PC + k + 1 None 1/2
BRHC k Перейти если флаг внутреннего переноса очищен if(H==0) PC = PC + k + 1 None 1/2
BRTS k Перейти если флаг T установлен if(T==1) PC = PC + k + 1 None 1/2
BRTC k Перейти если флаг T очищен if(T==0) PC = PC + k + 1 None 1/2
BRVS k Перейти если флаг переполнения установлен if(V==1) PC = PC + k + 1 None 1/2
BRVC k Перейти если флаг переполнения очищен if(V==0) PC = PC + k + 1 None 1/2
BRIE k Перейти если прерывания разрешены if(I==1) PC = PC + k + 1 None 1/2
BRID k Перейти если прерывания запрещены if(I==0) PC = PC + k + 1 None 1/2

* Для операций доступа к данным количество циклов указано при условии доступа к внутренней памяти данных, и не корректно при работе с внешним ОЗУ. Для инструкций CALL, ICALL, EICALL, RCALL, RET и RETI, необходимо добавить три цикла плюс по два цикла для каждого ожидания в контроллерах с PC меньшим 16 бит (128KB памяти программ). Для устройств с памятью программ свыше 128KB, добавьте пять циклов плюс по три цикла на каждое ожидание.

 

 

Таблица П.2.3 – Команды пересылки данных

Мнемоника Операнды Описание Операция Флаги Циклы
MOV Rd,Rr Скопировать регистр Rd = Rr  
MOVW Rd,Rr Скопировать пару регистров Rd+1:Rd = Rr+1:Rr, r,d even  
LDI Rd,K8 Загрузить константу Rd = K  
LDS Rd,k Прямая загрузка Rd = (k) 2*
LD Rd,X Косвенная загрузка Rd = (X) 2*
LD Rd,X+ Косвенная загрузка с пост-инкрементом Rd = (X), X=X+1 2*
LD Rd,-X Косвенная загрузка с пре-декрементом X=X-1, Rd = (X) 2*
LD Rd,Y Косвенная загрузка Rd = (Y) 2*
LD Rd,Y+ Косвенная загрузка с пост-инкрементом Rd = (Y), Y=Y+1 2*
LD Rd,-Y Косвенная загрузка с пре-декрементом Y=Y-1, Rd = (Y) 2*
LDD Rd,Y+q Косвенная загрузка с замещением Rd = (Y+q) 2*
LD Rd,Z Косвенная загрузка Rd = (Z) 2*
LD Rd,Z+ Косвенная загрузка с пост-инкрементом Rd = (Z), Z=Z+1 2*
LD Rd,-Z Косвенная загрузка с пре-декрементом Z=Z-1, Rd = (Z) 2*
LDD Rd,Z+q Косвенная загрузка с замещением Rd = (Z+q) 2*
STS k,Rr Прямое сохранение (k) = Rr 2*
ST X,Rr Косвенное сохранение (X) = Rr 2*
ST X+,Rr Косвенное сохранение с пост-инкрементом (X) = Rr, X=X+1 2*
ST -X,Rr Косвенное сохранение с пре-декрементом X=X-1, (X)=Rr 2*
ST Y,Rr Косвенное сохранение (Y) = Rr 2*
ST Y+,Rr Косвенное сохранение с пост-инкрементом (Y) = Rr, Y=Y+1  
ST -Y,Rr Косвенное сохранение с пре-декрементом Y=Y-1, (Y) = Rr  
ST Y+q,Rr Косвенное сохранение с замещением (Y+q) = Rr  
ST Z,Rr Косвенное сохранение (Z) = Rr  
ST Z+,Rr Косвенное сохранение с пост-инкрементом (Z) = Rr, Z=Z+1  
ST -Z,Rr Косвенное сохранение с пре-декрементом Z=Z-1, (Z) = Rr  
ST Z+q,Rr Косвенное сохранение с замещением (Z+q) = Rr  
LPM Нет Загрузка из программной памяти R0 = (Z)  
LPM Rd,Z Загрузка из программной памяти Rd = (Z)  
LPM Rd,Z+ Загрузка из программной памяти с пост-инкрементом Rd = (Z), Z=Z+1  
ELPM Нет Расширенная загрузка из памяти программ R0 = (RAMPZ:Z)  
ELPM Rd,Z Расширенная загрузка из памяти программ Rd = (RAMPZ:Z)  
ELPM Rd,Z+ Расширенная загрузка из программной памяти с пост-инкрементом Rd = (RAMPZ:Z), Z = Z+1  
SPM Нет Сохранение в программной памяти (Z) = R1:R0 -
ESPM Нет Расширенное сохранение в памяти программ (RAMPZ:Z) = R1:R0 -
IN Rd,P Чтение порта Rd = P  
OUT P,Rr Запись в порт P = Rr  
PUSH Rr Занесение регистра в стек STACK = Rr  
POP Rd Извлечение регистра из стека Rd = STACK  

* Для операций доступа к данным количество циклов указано при условии доступа к внутренней памяти данных, и не корректно при работе с внешним ОЗУ. Для инструкций LD, ST, LDD, STD, LDS, STS, PUSH и POP, необходимо добавить один цикл.

Таблица П.2.4 – Команды для работы с битами.

Мнемоника Операнды Описание Операция Флаги Циклы
LSL Rd Логический сдвиг влево Rd(n+1)=Rd(n), Rd(0)=0, C=Rd(7) Z,C,N,V,H,S  
LSR Rd Логический сдвиг вправо Rd(n)=Rd(n+1), Rd(7)=0, C=Rd(0) Z,C,N,V,S  
ROL Rd Циклический сдвиг влево через C Rd(0)=C, Rd(n+1)=Rd(n), C=Rd(7) Z,C,N,V,H,S  
ROR Rd Циклический сдвиг вправо через C Rd(7)=C, Rd(n)=Rd(n+1), C=Rd(0) Z,C,N,V,S  
ASR Rd Арифметический сдвиг вправо Rd(n)=Rd(n+1), n=0,...,6 Z,C,N,V,S  
SWAP Rd Перестановка тетрад Rd(3..0) = Rd(7..4), Rd(7..4) = Rd(3..0) None  
BSET s Установка флага SREG(s) = 1 SREG(s)  
BCLR s Очистка флага SREG(s) = 0 SREG(s)  
SBI P,b Установить бит в порту I/O(P,b) = 1 None  
CBI P,b Очистить бит в порту I/O(P,b) = 0 None  
BST Rr,b Сохранить бит из регистра в T T = Rr(b) T  
BLD Rd,b Загрузить бит из T в регистр Rd(b) = T None  
SEC Нет Установить флаг переноса C =1 C  
CLC Нет Очистить флаг переноса C = 0 C  
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  
CLN Нет Очистить флаг числа со знаком S = 0 S  
SEV Нет Установить флаг переполнения V = 1 V  
CLV Нет Очистить флаг переполнения V = 0 V  
SET Нет Установить флаг T T = 1 T  
CLT Нет Очистить флаг T T = 0 T  
SEH Нет Установить флаг внутреннего переноса H = 1 H  
CLH Нет Очистить флаг внутреннего переноса H = 0 H  
NOP Нет Нет операции Нет None  
SLEEP Нет Спать (уменьшить энергопотребление) Смотрите описание инструкции None  
WDR Нет Сброс сторожевого таймера Смотрите описание инструкции None  

 

 

В языке Assembler нет различия в регистре символов.

Операнды могут быть следующих видов:

§Rd: Результирующий (и исходный) регистр в регистровом файле;

§Rr: Исходный регистр в регистровом файле;

§b: Константа (3 бита), или константное выражение;

§s: Константа (3 бита), или константное выражение;

§P: Константа (5-6 бит), или константное выражение;

§K6; Константа (6 бит), или константное выражение;

§K8: Константа (8 бит), или константное выражение;

§k: Константа (размер зависит от инструкции), или константное выражение;

§q: Константа (6 бит), или константное выражение;

§Rdl: R24, R26, R28, R30. Для инструкций ADIW и SBIW;

§ X,Y,Z: Регистры косвенной адресации (X=R27:R26, Y=R29:R28, Z=R31:R30).

 

Навчальне видання

 

МЕТОДИЧНІ ВКАЗІВКИ

до лабораторних робіт з дисципліни «Методи математичної фізики в біології і медицині»

для студентів всіх форм навчання для всіх спеціальностей

 

 

Упорядники: АВРУНІН Олег Григорович

КРУК Олег Ярославович

СЕМЕНЕЦЬ Валерій Васильович

 

Відповідальний випусковий А.І.Бих

 

Редактор

 

План 2005 поз.

 

 

Підп.до друку 00.00.00. Формат 60х84 1/16. Спосіб друку – ризографія

Умов. друк. арк. Облік вид. арк. Тираж прим.

Зам. № Ціна договірна

 

ХНУРЕ Україна. 61166, Харків, просп. Леніна, 14

 

Надруковано в учбово-виробничому

видавничо-поліграфічному центрі ХНУРЕ

61166, Харків, просп. Леніна, 14

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.012 сек.)