Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Система команд микроконтроллеров семейства AVR. Таблица А.1. Арифметические команды Мнемо-ника Операн- ды Описание Операция Флаги К-во циклов ADD Rd




 

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

Мнемо-ника Операн- ды Описание Операция Флаги К-во циклов
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, К 6≤ d ≤32 0≤K≤255 Вычесть непосредст- венное значение с за- мом Rd Rd – K – C Z, C, N, V, H  
SBIW Rd, К dE{24,26,28,30} 0≤К≤6З Вычесть непосредственное значение из слова Rdh:Rdl Rdh:Rdl-K Z, C, N, V  
INC Rd 0≤d≤31 Инкрементировать Rd ßRd + 1 Z, N,V  
DEC Rd 0≤ d ≤31 Декрементировать Rd ß Rd – 1 Z, N,V  
NEG Rd 0≤ d ≤31 Вычисление дополнительного кода Rd ß $00 – Rd Z, C, N, V, H  

 

Таблица А.2. Логические команды

 

Мнемо­ника Операн- ды   Описание Операция Флаги Кол-во цик-лов
AND Rd, Rr 0≤ d ≤31 0≤ r ≤31 Выполнить логическое И между регистрами Rd ß Rd ∙ Rr Z, N, V  
ANDI Rd, К 16< d <31 0< k ≤255 Выполнить логическое И между регистром и константой Rd ß Rd ∙ К Z, N, V  
OR Rd, Rr 0≤ d ≥31 0≤ r ≤31 Выполнить логическое ИЛИ регистрами Rd ß Rd v Rr Z, N, V  
ORI Rd, К 16≤ d ≤31 0≤K≤255 Выполнить логическое ИЛИ между регистром и константой Rd ß Rd v К Z, N, V  
EOR Rd, Rr 0≤ d ≤31 0≤ г ≤31 Выполнить исключающее ИЛИ Rd ß Rd Å Rr Z, N, V  
СОМ Rd 0≤ d ≤31 Выполнить инверсию (НЕ) Rd ß $FF – Rd Z, C, N, V  
Сравнение
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  
TST Rd 0≤ r ≤31 Проверить на ноль или минус Rd ß Rd ∙ Rd Z, N, V  

Таблица А.3. Команды операций с битами

Мнемо­ника Операн-­ ды Описание Операция Флаги Кол-во циклов
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), Rd(0)ß C, n = 0...6 Z,C,N,V  
SWAP Rd 0≤ d ≤31 Поменять тетрады местами Rd(3...0) n 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 0≤ P ≤31 0≤ b ≤7 Установить бит в регистр I/O P,b ß 1 Нет  
CBI P, b 0≤ P ≤31 0≤ b ≤7 Очистить бит в регистре I/O P,b ß 0 Нет  
SBR Rd, К 16≤ d ≤31 0≤K≤255 Установить только нужные биты в регистре Rd ß Rd v К Z, N,V  
CBR Rd, К 16≤ d ≤31 0 ≤K≤255 Очистить только нужные биты в регистре Rd ß Rd ∙ ($FF – К) Z, N, V  
CLR Rd 0≤ d ≤31 Очистить регистр Rd ß Rd Å Rd Z, N, V  
SER Rd 16≤ d ≤31 Установить все биты регистра Rd ß $FF Нет  
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     Установить флаг отрицательного значения Мß 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 Н  

 

Таблица А.4. Команды пересылки данных

Мнемо­ника Операн-­ ды Описание Операция Флаги Кол-во циклов
LPM     0≤k≤65535 Загрузка байта из памяти программ по адресу (Z) в регистр R0 R0ß (Z) Нет  
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 из ОЗУ 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 из ОЗУ 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 из ОЗУ Rd ß (Y + q) Нет  
LD Rd, Z 0≤ d ≤31 Загрузить косвенно в регистр Rd из ОЗУ 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 из ОЗУ Rd ß (Z + q) Нет  
STS k, Rr 0≤ d ≤31 0≤k≤65535 Загрузить непосредственно в ОЗУ (k) ß Rr Нет  
ST X, Rr 0≤ r ≤31 Записать косвенно в ОЗУ из регистр Rr (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 Записать косвенно в ОЗУ из регистр Rr (Y) ß Rr Нет  
ST Y+, Rr 0≤ r ≤31 Записать косвенно с постинкрементом (Y) ß Rr, Y ß Y + 1 Нет  
ST –Y, Rr 0≤ r ≤31 Записать косвенно с преддекрементом Y ß Y – 1, (Y) ß Rr Нет  
STD Y + q, Rr 0≤ r ≤31 0≤ q ≤63 Записать косвенно со смещением в ОЗУ из регистр Rr (Y + q) ß Rr Нет  
ST Z, Rr 0≤ r ≤31 Записать косвенно в ОЗУ из регистр Rr (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 Записать косвенно со смещением в ОЗУ из регистр Rr (Z+q) ß Rr Нет  
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 Rd 0≤ d ≤31 Извлечь регистр из стека Rd ß STACK Нет  

 

Таблица А.5. Команды переходов

Мнемо­ника Операн­ды Описание Операция Флаги Кол-во циклов
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) Нет 1/2/3
SBRC Rr, b 0≤ r ≤31 0≤ b ≤7 Пропустить, если бит в регистре очищен if Rr(b) = 0 then PC ß PC + 2 (or 3) Нет 1/2/3
SBRS Rr, b 0≤ r ≤31 0≤ b ≤7 Пропустить, если бит в регистре установлен If Rr(b) = 1 then PC ß PC + 2 (or 3) Нет 1/2/3
SBIC P, b 0≤ P ≤31 0≤ b ≤7 Пропустить, если бит в регистре I/O очищен if P(b)=0 then PC ß PC + 2 (or 3) Нет 1/2/3
SBIS P, b 0≤ r ≤31 0≤ b ≤7 Пропустить, если бит в регистре I/O установлен If P(b) = 1 then PC ßPC + 2 (or 3) Нет 1/2/3
BRBS s, k 0≤ s ≤7 –64≤k≤+63 Перейти, если бит в регистре статуса установлен if SREG(s) = 1 then PC ß PC + k + 1 Нет 1/2
BRBC s, k 0≤ s ≤7 –64≤k≤+63 Перейти, если бит в регистре статуса очищен if SREG(s) = 0 then PC ß PC + k + 1 Нет 1/2
BREQ k –64≤k≤+63 Перейти, если равно if Rd = Rr (Z=1) then PC ß PC + k + 1 Нет 1/2
BRNE k –64≤k≤+63 Перейти, если не равно if Rd ¹ Rr (Z=0) then PC ß PC + k + 1 Нет 1/2
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 –64≤k≤+63 Перейти, если глобальное прерывание запрещено if I = 0 then PC ß PC + k + 1 Нет 1/2

 

Таблица А.6. Прочие команды

Мне­моника Операнды Описание Операция Флаги К-во ц-ов
NOP   Выполнить холостую команду   Нет  
SLEEP   Установить режим SLEEP   Нет  
WDR   Сбросить сторожевой таймер   Нет  

 

 

ПРИЛОЖЕНИЕ В

 

Таблица регистров

 

Адрес Обознач. Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
$3F ($5F) SREG I T H S V N Z C
$3E ($5E) SPH SP9 SP8
$3D ($5D) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0
$3C ($5C)    
$3B ($5B) GIMSK INT1 INT0
$3A ($5A) GIFR INTF1 INTF0            
$39 ($59) TIMSK OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 TOIE0
$38 ($58) TIFR OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 TOV0
$37 ($57)    
$36 ($56)    
$35 ($55) MCUCR SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
$34 ($54) MCUSR EXTRF PORF
$33 ($53) TCCR0 CS02 CS01 CS00
$32 ($52) TCNT0 Таймер/счетчик0 (8-разрядный)
$31 ($51)    
$30 ($50)    
$2F ($4F) TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 PWM11 PWM10
$2E ($4E) TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10
$2D ($4D) TCNT1H Старший байт регистра счетчика Таймера/ счетчика1
$2С ($4С) TCNT1L Младший байт регистра счетчика Таймера/ счетчика1
$2В ($4В) OCR1AH Старший байт регистра сравнения A выхода Таймера/счетчика1
$2A ($4A) OCR1AL Младший байт регистра сравнения A выхода Таймера/счетчика1
$29 ($49) OCR1BH Старший байт регистра сравнения B выхода Таймера/счетчика1
$28 ($48) OCR1BL Младший байт регистра сравнения B выхода Таймера/счетчика1
$27 ($47) ICR1H Старший байт регистра захвата входа Таймера/счетчика1
$26 ($46) ICR1L Младший байт регистра захвата входа Таймера/счетчика1
$25 ($45) TCCR2 PWM2 COM21 COM20 CTC2 CS22 CS21 CS20
                         

 

$24 ($44) TCNT2 Таймер/счетчик2 (8-разрядный)
$23 ($43) OCR2 Регистр сравнения выхода Таймера/счетчика2
$22 ($42) ASSR AS2 TCN2UB OCR2UB TCR2UB
$21 ($41) WDTCR WDTOE WDE WDP2 WDP1 WDP0
$20 ($40)    
$1F ($3F) EEARH   EEAR9
$1E ($3E) EEARL EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0
$1D ($3D) EEDR Регистр данных EEPROM
$1C ($3C) EECR EERIE EEMWE EEWE EERE
$1B ($3B) PORTA PORTA7 PORTA6 PORTA5 PORTA4 PORTA3 PORTA2 PORTA1 PORTA0
$1A ($3A) DDRA DDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA0
$19 ($39) PINA PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0
$18 ($38) PORTB PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
$17 ($37) DDRB DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0
$16 ($36) PINB PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
$15 ($35) PORTC PORTC7 PORTC6 PORTC5 PORTC4 PORTC3 PORTC2 PORTC1 PORTC0
$14 ($34) DDRC DDC7 DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0
$13 ($33) PINC PINC7 PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0
$12 ($32) PORTD PORTD7 PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0
$11 ($31) DDRD DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0
$10 ($30) PIND PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0
$0F ($2F) SPDR Регистр данных SPI
$0E ($2E) SPSR SPIF WCOL
$0D ($2D) SPCR SPIE SPE DORD MSTR CROL CPHA SPR1 SPR0
$0C ($2C) UDR Регистр данных UART
$0B ($2B) USR RXC TXC UDRE FE OR
$0A ($2A) UCR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8
$09 ($29) UBRR Регистр управления скоростью UART
$08 ($28) ACSR ACD ACO ACI ACIE ACIC ACIS1 ACIS0
$07 ($27) ADMUX MUX2 MUX1 MUX0
$06 ($26) ADCSR ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0
$05 ($25) ADCH ADC9 ADC8
$04 ($24) ADCL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0
$03 ($20)    
$02 ($22)    
$01 ($21)    
$00 ($20)    
                                         

 




Поделиться с друзьями:


Дата добавления: 2014-11-18; Просмотров: 488; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.