Справочник к лабораторным работам (1058370), страница 3
Текст из файла (страница 3)
| Операции перемещения данных | ||||
| Мнемоника | Описание | Операция | Изменяемые флаги | Время исполнения (циклов) |
| MOV Rn,Rk | Копировать Rk в Rn | Rn <- Rk | - | 1 |
| MOVW Rn,Rk | Копировать регистровую пару | Rn+1:Rn <- Rk+1:Rk | - | 1 |
| LD Rn, Ri | Загрузить из памяти данных, используя индексный регистр | Rn <- (Ri) | - | 2 |
| LD Rn, Ri+ | Rn <- (Ri), Ri <- Ri + 1 | - | 2 | |
| LD Rn, -Ri | Ri <- Ri - 1, Rn <- (Ri) | - | 2 | |
| LDD Rn, Ri + q | Rn <- (Ri + q) | - | 2 | |
| LDI Rn,K | Загрузить константу в регистр | Rn <- K | - | 1 |
| LDS Rn,K | Загрузить в регистр из памяти данных | Rn <- (K) | - | 2 |
| LPM | Загрузить из памяти программ | R0 <- (Z) | - | 3 |
| LPM Rn, Z | Rn <- (Z) | - | 3 | |
| LPM Rn, Z+ | Rn <- (Z), Z <- Z + 1 | - | 3 | |
| ELPM | R0 <- (RAMPZ:Z) | - | 3 | |
| ELPM Rn, Z | Rn <- (RAMPZ:Z) | - | 3 | |
| ELPM Rn, Z+ | Rn <- (RAMPZ:Z), Z <- Z + 1 | - | 3 | |
| SPM | Загрузить в память программ | (Z) <- R1:R0 | - | 3 |
| STS K,Rn | Загрузить в память данных | (K) <- Rn | - | 2 |
| ST Ri, Rn | Загрузить в память данных, используя индексный регистр | (Ri) <- Rn | - | 2 |
| ST Ri+, Rn | (Ri) <- Rn, Ri <- Ri + 1 | - | 2 | |
| ST -Ri, Rn | Ri <- Ri - 1, (Ri) <- Rn | - | 2 | |
| STD Ri + q, Rn | (Ri + q) <- Rn | - | 2 | |
| IN Rn,I | Прочитать I/O-регистр I в Rn | Rn <- I | - | 1 |
| OUT I,Rn | Записать Rn в I/O-регистр I | I <- Rk | - | 1 |
| PUSH Rn | Сохранить Rn в стеке | STACK <- Rn | - | 2 |
| POP Rn | Восстановить Rn из стека | Rn <- STACK | - | 2 |
| SWAP Rn | Обмен тетрад в регистре | Rn(0...3) <- Rn(4...7), Rn(4...7) <- Rn(0...3) | - | 1 |
| Битовые операции | ||||
| Мнемоника | Описание | Операция | Изменяемые флаги | Время исполнения (циклов) |
| LSL Rn | Логический сдвиг влево | R(n+1) <- R(n), R(0) <- 0, C <- R(7) | S, Z, C, N, V, H | 1 |
| LSR Rn | Логический сдвиг вправо | R(n) <- R(n+1), R(7) <- 0, C <- R(0) | S, Z, C, N, V | 1 |
| ROL Rn | Сдвиг влево через перенос | R(n+1) <- R(n), R(0) <- C, C <- R(7) | S, Z, C, N, V, H | 1 |
| ROR Rn | Сдвиг вправо через перенос | R(n) <- R(n+1), R(7) <- C, C <- R(0) | S, Z, C, N, V | 1 |
| ASR Rn | Арифметический сдвиг вправо | R(n) <- R(n+1), R(7) <- R(7) | Z, C, N, V | 1 |
| BSET b | Установить бит в SREG | SREG(b) <- 1 | SREG(b) | 1 |
| BCLR b | Сбросить бит в SREG | SREG(b) <- 0 | SREG(b) | 1 |
| CLC | Сбросить флаг переноса | C <- 0 | C | 1 |
| SEC | Установить флаг переноса | C <- 1 | C | 1 |
| CLN | Сбросить флаг знака | N <- 0 | N | 1 |
| SEN | Установить флаг знака | N <- 1 | N | 1 |
| CLZ | Сбросить флаг нуля | Z <- 0 | Z | 1 |
| SEZ | Установить флаг нуля | Z <- 1 | Z | 1 |
| CLI | Сбросить флаг разрешения прерываний | I <- 0 | I | 1 |
| SEI | Установить флаг разрешения прерываний | I <- 1 | I | 1 |
| CLS | Сбросить флаг знака | S <- 0 | S | 1 |
| SES | Установить флаг знака | S <- 1 | S | 1 |
| CLV | Сбросить флаг переполнения | V <- 0 | V | 1 |
| SEV | Установить флаг переполнения | V <- 1 | V | 1 |
| CLT | Сбросить флаг T | T <- 0 | T | 1 |
| SET | Установить флаг T | T <- 1 | T | 1 |
| CLH | Сбросить флаг половинного переноса | H <- 0 | H | 1 |
| SEH | Установить флаг половинного переноса | H <- 1 | H | 1 |
| CBI I,b | Сбросить бит в I/O-регистре | I(b) <- 0 | - | 1 |
| SBI I,b | Установить бит в I/O-регистре | I(b) <- 1 | - | 1 |
| BST Rn,b | Загрузить флаг T битом из регистра | I(b) <- 0 | - | 1 |
| BLD Rn,b | Загрузить бит в регистре из флага T | I(b) <- 1 | - | 1 |
Таблица векторов прерываний МК ATmega16
лица векторов прерываний модели ATmega16
| № | Адрес | Источник | Описание |
| 1 | $0002 | INT0 | Внешнее прерывание 0 |
| 2 | $0004 | INT1 | Внешнее прерывание 1 |
| 3 | $0006 | TIMER2 COMP | Совпадение таймера/счетчика Т2 |
| 4 | $0008 | TIMER2 OVF | Переполнение таймера/счетчика Т2 |
| 5 | $000A | TIMER1 CAPT | Захват таймера/счетчика Т1 |
| 6 | $000C | TIMER1 COMPA | Совпадение «А» таймера/счетчика Т1 |
| 7 | $000E | TIMER1 COMPB | Совпадение «В» таймера/счетчика Т1 |
| 8 | $0010 | TIMER1OVF | Переполнение таймера/счетчика Т1 |
| 9 | $0012 | TIMER0OVF | Переполнение таймера/счетчика Т0 |
| 10 | $0014 | SPI, STC | Передача по SPI завершена |
| 11 | $0016 | USART,RXC | USART, прием завершен |
| 12 | $0018 | USART,UDRE | Регистр данных USART пуст |
| 13 | $001A | USART,TXC | USART, передача завершена |
| 14 | $001C | ADC | Преобразование АЦП завершено |
| 15 | $001E | EE_RDY | EEPROM, готово |
| 16 | $0020 | ANA_COMP | Аналоговый компаратор |
| 17 | $0022 | TWI | Прерывание от модуля TWI |
| 18 | $0024 | INT2 | Внешнее прерывание 2 |
| 19 | $0026 | TIMER0 COMP | Совпадение таймера/счетчика Т0 |
| 20 | $0028 | SPM_RDY | Готовность SPM |
Если прерывания в работе микроконтроллера не предусматриваются, то на месте таблицы векторов прерываний может быть размещена часть основной программы.
Управление таймерами
Регистр TIMSK
| Название | Бит | Описание флагов разрешения прерываний |
| OCIE2 | 7 | По событию «Совпадение» таймера-счетчика T2 |
| TOIE2 | 6 | По переполнению таймера-счетчика T2 |
| TICIE1 | 5 | По событию «Захват» таймера-счетчика T1 |
| OCIE1A | 4 | По событию «Совпадение А» таймера-счетчика T1 |
| OCIE1A | 3 | По событию «Совпадение В» таймера-счетчика T1 |
| TOIE1 | 2 | По переполнению таймера-счетчика T1 |
| OCIE0 | 1 | По событию «Совпадение» таймера-счетчика T0 |
| TOIE0 | 0 | По переполнению таймера-счетчика T0 |
Регистр TIFR
| Название | Бит | Описание флагов прерываний |
| OCF2 | 7 | По событию «Совпадение» таймера-счетчика T2 |
| TOV2 | 6 | По переполнению таймера-счетчика T2 |
| ICF1 | 5 | По событию «Захват» таймера-счетчика T1 |
| OCF1A | 4 | По событию «Совпадение А» таймера-счетчика T1 |
| OCF1B | 3 | По событию «Совпадение В» таймера-счетчика T1 |
| TOV1 | 2 | По переполнению таймера-счетчика T1 |
| OCF0 | 1 | По событию «Совпадение» таймера-счетчика T0 |
| TOV0 | 0 | По переполнению таймера-счетчика T0 |













