Розташування виводів мікроконтроллера

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).

 

 

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

 

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: