Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
6.67 Mб
Скачать

Завдання:

1. Проініціалізувати стек

2. Здійснити стартову настройку таймера лічильника 0

2.1 Регістр порогу порівняння OCR0 рівним 78 (десяткове число)

2.2 Регістр управління таймером-лічильником 0 TCCR0

2.2.1 Біт примусової установка результату порівняння FOC0 = 0b0

2.2.2 Режим Скидання при збігу (CTC): WGM01, WGM00 = 0b10

2.2.3 Вихід OC0 відключений: COM01, COM00 = 0b00

2.2.4 Тимчасово таймер відключений: CS02, CS01, CS00 = 0b000

2.3 Регістр маски переривань скидаємо TIMSK = 0

2.4 Запускаємо таймер лічильник 0 з встановленням подільника частоти 25652: CS02, CS01, CS00 = 0b110

3. Написати підпрограму очистки біту OCF0 у регістрі TIFR53

3.1 Регістри, які будуть використовуватися у підпрограмі попередньо зберегти у стеку, для того, щоб їх використання не вплинуло на виконання всієї програми

3.2 Підготувати маску регістра з встановленим бітом під номером OCF0, всі інші біти мають бути очищеними

3.3 Записати цю підготовлену маску у регістр вводу-виводу TIFR – ця процедура очистить біт OCF0 у регістрі вводу-виводу TIFR.

3.4 Відновити регістри збережені у стеку

3.5 Вийти з підпрограми

4. Реалізувати безперервний цикл, який перевіряє чи лічильник досяг пирогового значення

4.1 Завантажити у регістр загального призначення регістр вводу-виводу TIFR

4.2 У разі, якщо біт під номером OCF0 встановлений, то перейти на підпрограму очистки біту OCF0 у регістрі TIFR

4.3 Перейти на пункт 4.1

5. Хід виконання програми

5.1 Зайти у стимулятор

5.2. Відкрити настройки стимулятора Debug→AVR Simulator 2 Options

5.3 Найти поле Frequency MHz – тактова частота процесора

5.4 Встановити поле Frequency MHz 10.000000 МГц – нову тактову частота процесора

5.5 В такому разі у режимі CTC (поріг порівняння OCR0 рівне 78) і подільнику частоти 256 (CS02, CS01, CS00 = 0b110 регістра TCCR0) 10 МГц/256/78 ≈ 500 Гц (2 мс період встановлення біту OCF0)

5.6 Стати курсором на рядку, де запускається таймер-лічильник 0, (де виконується встановлення CS02, CS01, CS00 = 0b110) і у цьому місця поставити точку зупинки (breakpoint) Debug→Toggle Breakpoint або функціональною кнопкою F9

5.7 Переконатися, що точка зупинки встановлена – збоку рядка буде червоний кружечок

5.8 Аналогічно пунктам 5.6 і 5.7 встановити точку зупинки ум підпрограмі очищення біту OCF0 у регістрі вводу виводу TIFR

5.9 Запустити програму на виконання (не покроково) Debug→Run, або функціональною кнопкою F5

5.10 Програма має зупинитися у першій точці зупинки

5.11 Перейти у вікно Processor (якщо воно не відкрите, то його можна відкрити View→Toolbars→Processor)

5.11 Переконатися, що поле Frequency рівне 10.0000 МГц

5.12 Правою кнопкою мишки клікнути по полю Stop Watch вікна Processor – контекстне меню, яке зображено нижче

5.13 Якщо після числового значення у полі Stop Watch вікна Processor (яке відповідає за час, який пройшов або з моменту запуску програми, або обнулення часу операцією Reset Cycle Counter з контекстного меню, яке було описане вище) стоїть us, то час відображається у мікросекундах, якщо ms – у мілісекундах. Переключення відображення часу з мікросекунд у мілісекунди виконується операцією Show Stopwatch as milliseconds з контекстного меню, яке описане вище, а з мілісекунди у мікросекунди - Show Stopwatch as microseconds

5.14 Обнулити час у полі Stop Watch вікна Processor командою Reset Cycle Counter, описаною вище і переконатися, що час справді рівний 0. При цьому вибір відображення часу у мікросекундах чи мілісекундах можна вибрати на розсуд виконавця лабораторної роботи (студента)

5.15 Запустити програму на виконання (не покроково) Debug→Run, або функціональною кнопкою F5

5.16 Програма має зупинитися у підпрограмі очищення біту OCF0 у регістрі вводу виводу TIFR

5.17 Переконатися з допомогою поля Stop Watch вікна Processor, що час, за який встановився біт OCF0 у регістрі вводу виводу TIFR становить ≈2 мс

5.18 Декілька разів продовжувати виконання програми (не покроково) Debug→Run, або функціональною кнопкою F5 – переконатися, що програма заходить у підпрограму очистки OCF0 у регістрі вводу виводу TIFR через ≈2 мс.

Лабораторна робота №10 «Вивчення використання переривань мікроконтролера AVR»

Ціль роботи

  • вивчити принципів роботи переривань AVR мікроконтролера

  • закріпити знання попередніх лабораторних роботах

Програма виконання роботи

- проініціалізувати таймер на фіксацію проміжку часу у 2 мс (період можна змінити) з генерацією переривань, коли таймер-лічильник зафіксує вказаний період

- дозволити роботу переривань

- при написати обробник переривань від таймера

- у симуляторі переконатися, що період між подіями справді становить вказану величину (2 мс по замовчуванню)54

Додатковий теоретичний матеріал необхідний для виконання лабораторної роботи

Переривання (Interruptангл.) – це сигнал, що повідомляє процесор про настання якої-небудь події. При цьому виконання поточної послідовності команд призупиняється і керування передається обробнику переривання, який реагує на подію та обслуговує її, після чого повертає управління в перерваний код.

Залежно від джерела виникнення сигналу переривання поділяються на:

Асинхронні або зовнішні (апаратні) — події, які створені зовнішніми джерелами (наприклад, периферійними пристроями) та можуть відбутися в довільний момент, наприклад, сигнал від таймера;

Синхронні або внутрішні — події в самому процесорі як результат порушення якихось умов при виконанні машинного коду: поділ на нуль або переповнення, звернення до неприпустимих адрес або неприпустимий код операції;

Програмні (частковий випадок внутрішнього переривання) — ініціюються виконанням спеціальної інструкції в коді програми. Програмні переривання, як правило використовуються для звернення до функцій вбудованого програмного забезпечення (firmware), драйверів й операційної системи.

Маскування переривань

Залежно від можливості заборони зовнішні переривання поділяються на:

ті, що можна маскувати — переривання, які можна забороняти установкою відповідних бітів у регістрі маскування переривань

ті, що не можна маскувати (англ. Non maskable interrupt, NMI) — обробляються завжди, незалежно від заборон на інші переривання.

Обробники переривань зазвичай пишуться таким чином, щоб час їх обробки був якомога меншим, оскільки під час їх роботи можуть не оброблятися інші переривання, а якщо їх буде багато (особливо від одного джерела), то вони можуть губитися.

Вектор переривання — закріплений за джерелом переривання номер, який ідентифікує відповідний обробник переривань. Вектори переривань об'єднуються в таблицю векторів переривань, що містить адреси обробників переривань. Розташування таблиці залежить від типу та режиму роботи процесора.

Пріоритет переривань вказує яке переривання відбудеться першим (або чи обробник текучого переривання буде перерваним іншим перериванням) за умови перебування обох (обо більше) у черзі на обробку. зазвичай пріоритет переривань визначається номером і по його порядковому номеру визначається яке переривання є більш чи менш пріоритетним.

Вкладеність переривань – дозвіл більш пріоритетному перериванню переривами обробник переривань менш пріоритетного переривання.

AVR мікроконтролери володіють модулем переривань, який дозволяє мікроконтролеру реагувати на асинхронні зовнішні чи внутрішні події.

Гнучкий модуль переривань містить свої керуючі регістри в просторі вводу-виводу і має додатковий біт загального дозволу роботи системи переривань у регістрі статусу (I-біт). У всіх переривань є свій вектор переривання відповідно до таблиці векторів переривань. Переривання мають пріоритет відповідно до позиції їх вектора. Переривання з меншою адресою переривання мають більш високий пріоритет.

Скидання й обробка переривань

AVR-мікроконтролери підтримують декілька різних джерел переривань. Всі переривання, а також скидання мають свій індивідуальний вектор в пам'яті програм. Для кожного переривання є власний біт дозволу. Крім того, є можливість загального дозволу роботи переривань за допомогою управління відповідним бітом в регістрі статусу (I-біт).

Найменші адреси в пам'яті програм за замовчуванням визначені як вектора переривань. Менші адреси володіють більш високим рівнем пріоритету.

Після виникнення переривання біт I загального дозволу переривань апаратно скидається і всі переривання забороняються. Користувач може програмно записати лог. 1 в біт I для дозволу вкладених переривань. В цьому випадку всі дозволені переривання можуть перервати поточну процедуру обробки переривань. Біт I автоматично встановлюється після виконання інструкції виходу з переривання RETI.

Є два основних типи переривань. Перший тип переривань активізується подією, яка призводить до встановлення мітки переривань. Для даних переривань програмний лічильник змінюється на відповідний вектор переривання для виконання процедури його обробки і потім апаратно очищає мітку переривання. Мітки переривання також скидаються шляхом запису лог.1 до відповідного розряду. Якщо виникає умова переривання, але дане переривання заборонено, то мітка встановлюється і запам'ятовується до дозволу цього переривання або скидається програмно. Аналогічно, якщо виникає одне і більше умов переривань при скинутій мітці загального дозволу переривань, то відповідна мітка встановлюється і запам'ятовується до відновлення роботи переривань, а потім переривання будуть виконані у відповідності з пріоритетом.

Другий тип переривань активізується відразу після виконання умови переривання. Дані переривання не обов'язково мають мітки переривань. Якщо умова переривання зникає до його дозволу, то даний запит ігнорується.

Після виходу з переривання AVR-мікроконтроллер повертається до виконання основної програми.

Зверніть увагу, що регістр статусу автоматично не запам'ятовується при виклику процедури обробки переривання і не відновлюється при виході з цієї процедури. Дані дії необхідно виконати програмно.

Приклад обробника переривань у Асамблелі з запам’ятовуванням регістру статусу

/*Збереження регістру статусу у стек*/

in r16, SREG

push r16

корисні дії обробника переривань

/*Відновлення регістру статусу із стеку*/

pop r16

out SREG, r16

/*Вихід з обробника переривань і перехід на програму, виконання якої було перерване*/

reti

При виконанні інструкції CLI всі переривання забороняються. Запит на переривання не буде відпрацьований після виконання інструкції CLI, навіть якщо воно виникає одночасно з виконанням команди CLI.

Для дозволу переривань використовується інструкція SEI, а наступна за SEI інструкція буде виконана перед відпрацюванням будь-якого відкладеного переривання.

Час реакції на переривання

Реакція на відпрацювання запиту на переривання триває мінімум 4 машинних цикли. Після закінчення цього часу програма продовжує своє виконання з вектора відповідного переривання. Протягом 4 машинних циклів стан програмного лічильника поміщається в стек. Як правило, за адресою вектора переривань зберігається команда переходу на процедуру обробку переривань, а на даний перехід витрачається ще 3 машинних цикли. Якщо запит на переривання виникає в процесі виконання інструкції, що вимагає більш 1 машинних цикли на виконання, то переривання буде оброблено тільки після виконання цієї інструкції. Якщо переривання виникає під час перебування мікроконтролера в режимі сну (SLEEP MODE), то реакція на переривання збільшиться ще на 4 цикли. Дана затримка пов'язана з часом старту з обраного режиму сну.

Вихід з процедури обробки переривання вимагає 4 машинних цикли. Протягом цього часу двобайтовий програмний лічильник витягується з стека, покажчик стека двічі інкрементується і встановлюється біт I в регістрі статусу SREG.

Таблиця векторів переривань для мікроконтролера ATMEGA128

N вектора

Адреса пам'яті програм

Джерело

Умова виникнення переривання

1

$0000

Скидання (RESET)

Зовнішнє скидання, скидання при подачі живлення, скидання при неприпустимому зниженні живлення, скидання сторожовим таймером і скидання через JTAG-інтерфейс

2

$0002

IINT0

Запит на зовнішнє переривання 0

3

$0004

INT1

Запит на зовнішнє переривання 1

4

$0006

INT2

Запит на зовнішнє переривання 2

5

$0008

INT3

Запит на зовнішнє переривання 3

6

$000A

INT4

Запит на зовнішнє переривання 4

7

$000C

INT5

Запит на зовнішнє переривання 5

8

$000E

INT6

Запит на зовнішнє переривання 6

9

$0010

INT7

Запит на зовнішнє переривання 7

10

$0012

TIMER2 COMP

Спрацювання компаратора таймера-лічильника 2

11

$0014

TIMER2 OVF

Переповнення таймера-лічильника 2

12

$0016

Timer1 CAPT

Захоплення фронту таймером-лічильником 1

13

$0018

Timer1 COMPA

Спрацювання компаратора А таймера-лічильника 1

14

$001A

Timer1 COMPB

Спрацювання компаратора В таймера-лічильника 1

15

$001C

Timer1 OVF

Переповнення таймера-лічильника 1

16

$001E

TIMER0 COMP

Спрацювання компаратора таймера-лічильника 0

17

$0020

TIMER0 OVF

Переповнення таймера-лічильника 0

18

$0022

SPI, STC

Завершення послідовної передачі інтерфейсом SPI

19

$0024

USART0, RX

Завершення прийому УСАПП 0

20

$0026

USART0, UDRE

Регістр даних УСАПП0 вільний

21

$0028

USART0, TX

Завершення передачі УСАПП 0

22

$002A

АЦП

Завершення перетворення АЦП

23

$002C

EE READY

Готовність ЕСППЗУ

24

$002E

ANALOG COMP

Аналоговий компаратор

25

$0030

TIMER1 COMPC

Спрацювання компаратора З таймера-лічильника 1

26

$0032

TIMER3 CAPT

Захоплення фронту таймером лічильником 3

27

$0034

TIMER3 COMPA

Спрацювання компаратора А таймера-лічильника 3

28

$0036

TIMER3 COMPB

Спрацювання компаратора В таймера-лічильника 3

29

$0038

TIMER3 COMPC

Спрацювання компаратора З таймера-лічильника 3

30

$003A

TIMER3 OVF

Переповнення таймера лічильника 3

31

$003C

USART1, RX

Завершення прийому УСАПП 1

32

$003E

SART1, UDRE

УСАПП1 вільний

33

$0040

USART1, TX

Завершення передачі УСАПП1

34

$0042

TWI

Двопровідний послідовний інтерфейс

35

$0044

SPM READY

Готовність запису в пам'ять програм

У таблиці 24 показано розташування векторів скидання і переривань в залежності від різних установок BOOTRST і IVSEL. Якщо програма не використовує переривання, то вона може бути розміщена рівномірно, використовуючи комірки з адресами векторів переривань для зберігання програмного коду. Можливий також випадок, коли вектор скидання розташовується в секторі прикладної програми, а вектори переривань - в завантажувальному секторі або навпаки.

Таблиця розміщення векторів скидання і переривань

BOOTRST

IVSEL

Адреса скидання

Початкова адресу векторів переривань

1

0

$0000

$0002

1

1

$0000

Адреса скидання в завантажувальному секторі + $0002

0

0

Адреса скидання в завантажувальному секторі

$ 0002

0

1

Адреса скидання в завантажувальному секторі

Адреса скидання в завантажувальному секторі + $0002

Нижче наведено більшість типових і спільних програмних установок адрес скидання і векторів переривань у ATmega128:

Адреса Інструкція Коментар

jmp RESET; Перехід на обробку скидання

jmp EXT_INT0; Перехід на обробку запиту IRQ0

jmp EXT_INT1; Перехід на обробку запиту IRQ1

jmp EXT_INT2; Перехід на обробку запиту IRQ2

jmp EXT_INT3; Перехід на обробку запиту IRQ3

jmp EXT_INT4; Перехід на обробку запиту IRQ4

jmp EXT_INT5; Перехід на обробку запиту IRQ5

jmp EXT_INT6; Перехід на обробку запиту IRQ6

jmp EXT_INT7; Перехід на обробку запиту IRQ7

jmp TIM2_COMP; Перехід на обробку при виконанні умови порівняння таймера 2

jmp TIM2_OVF; Перехід на обробку при переповненні таймера 2

jmp TIM1_CAPT; Перехід на обробку при захопленні фронту таймером 1

jmp TIM1_COMPA; Перехід на обробку при спрацьовуванні компаратора А таймера 1

jmp TIM1_COMPB; Перехід на обробку при спрацьовуванні компаратора В таймера 1

jmp TIM1_OVF; Перехід на обробку при переповненні таймера 1

jmp TIM0_COMP; Перехід на обробку при виконання умови порівняння таймера 0

jmp TIM0_OVF; Перехід на обробку при переповненні таймера 0

jmp SPI_STC; Перехід на обробку при завершенні передачі SPI

jmp USART0_RXC; Перехід на обробку при завершенні прийому УСАПП0

jmp USART0_DRE; Перехід на обробку при звільненні регістра даних UDR УСАПП0

jmp USART0_TXC; Перехід на обробку при завершенні передачі УСАПП0

jmp ADC; Перехід на обробку при завершенні перетворення АЦП

jmp EE_RDY; Перехід на обробку при готовності ЕСППЗУ

jmp ANA_COMP; Перехід на обробку при спрацьовуванні аналогового компаратора

jmp TIM1_COMPC; Перехід на обробку при спрацьовуванні компаратора З таймера 1

jmp TIM3_CAPT; Перехід на обробку при захопленні фронту таймером 3

jmp TIM3_COMPA; Перехід на обробку при спрацьовуванні компаратора А таймера 3

jmp TIM3_COMPB; Перехід на обробку при спрацьовуванні компаратора В таймера 3

jmp TIM3_COMPC; Перехід на обробку при спрацьовуванні компаратора З таймера 3

jmp TIM3_OVF; Перехід на обробку при переповненні таймера 3

jmp USART1_RXC; Перехід на обробку по завершенні прийому УСАПП1

jmp USART1_DRE; Перехід на обробку при звільненні регістра даних UDR УСАПП1

jmp USART1_TXC; Перехід на обробку при завершенні передачі УСАПП1

jmp TWI; Перехід на обробку переривання по двопровідному послідовному інтерфейсу

jmp SPM_RDY; Перехід на обробку переривання при готовності виконання команди SPM

;

RESET:

ldir16, high (RAMEND); Початок основної програми

out SPH, r16; Установка покажчика стека в кінці ОЗУ

ldi r16, low (RAMEND)

out SPL, r16

sei; Дозвіл переривань

... ... ... ...

(!) Це може бути вам корисно

У випадку, коли використовуються тільки деякі переривання, але прийьому перехід на обробник переривань треба встановити у свій вектор переривань (наперед визначену комірку), то зручно використати такий шаблон:

/**********************************************************************************/

jmp RESET; Перехід на обробку скидання

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp TIM0_COMP; Перехід на обробку при виконання умови порівняння таймера 0

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

jmp NO_INT

;

RESET:

ldir16, high (RAMEND); Початок основної програми

out SPH, r16; Установка покажчика стека в кінці ОЗУ

ldi r16, low (RAMEND)

out SPL, r16

sei; Дозвіл переривань

... ... ... ...

CONTINUE:

... ... ... ...

jmp CONTINUE

/*Обробник неіснуючого переривання*/

NO_INT: reti

/*Обробник переривання від таймеру-лічильнику 0 при досягненні умови порівняння*/

TIM0_COMP:

in r16, SREG

push r16

корисні дії обробника переривань

/*Відновлення регістру статусу із стеку*/

pop r16

out SREG, r16

/*Вихід з обробника переривань і перехід на програму, виконання якої було перерване*/

reti

... ... ... ...

/**********************************************************************************/

Загальний регістр управління перериваннями задає розміщення таблиці векторів переривань.

Регістр управління микроконтроллером - MCUCR

Розряд

7

6

5

4

3

2

1

0

SRE

SRW10

SE

SM1

SM0

SM2

IVSEL

IVCE

MCUCR

Читання/запис

Чт/Зп.

Чт/Зп.

Чт/Зп.

Чт/Зп.

Чт/Зп.

Чт/Зп.

Чт/Зп.

Чт/Зп.

Вих. значення

0

0

0

0

0

0

0

0

Розряд 1 - IVSEL: Вибір вектора переривання

Якщо біт скинутий IVSEL (= 0), то вектори переривань розміщуються на початку флеш-пам'яті. Якщо даний біт встановлений (= 1), то вектори переривань переміщуються в початок завантажувального сектора флеш-пам'яті. Фактична адреса початку завантажувального сектора визначається значенням конфігураційних біт BOOTSZ. Щоб уникнути несанкціонованих змін таблиці векторів переривань необхідно виконати спеціальну послідовність запису при зміні біта IVSEL:

  1. Записати лог. 1 в біт дозволу зміни вектора переривання (IVCE).

  2. Протягом чотирьох машинних циклів записати бажане значення в IVSEL, при цьому записуючи лог.0 в IVCE.

Переривання будуть автоматично відключені при виконанні такої послідовності. Переривання відключаються під час установки IVCE і залишаться відключеними до переходу до інструкції наступного за інструкцією записи в IVSEL. Якщо IVSEL не записаний, то переривання буде знаходитися у відключеному стані 4 такти синхронізації. Стан біта I в регістрі статусу не зачіпається при автоматичному відключенні переривань.

Наприклад: Якщо вектори переривань поміщаються в завантажувальний сектор і біт захисту завантажувального сектора BLB02 запрограмований, то переривання будуть відключені при виконанні програми з секторі прикладної програми. Якщо вектори переривань розміщені в прикладному секторі і біт захисту BLB12 запрограмований, то переривання стають відключеними при виконанні програми в завантажувальному секторі.

Розряд 0 - IVCE: Дозвіл зміни вектора переривання

В біт IVCE повинно бути записано лог. 1, щоб дозволити зміну біта IVSEL. IVCE скидається апаратно через чотири машинних циклу після запису лог. 1 в IVSEL. Установка біта IVCE призведе до відключення переривань, що описано при розгляді біта IVSEL вище.

Опис деяких мнемонік інструкцій, які використовуються у цій лабораторній роботі і не були описані у описах до попередніх лабораторних робіт

JMP – «Перехід»

Інструкція здійснює перехід у межах 4 МЕГА слів простору пам’яті програм..

PC ← k

Синтаксис

Операнди

Лічильник команд

Стек

JMP k

-0 ≤ k ≤ 4М

PC ← k

Без змін

Вплив на регістри статусу:

I

T

H

S

V

N

Z

C

-

-

-

-

-

-

-

-

Наприклад:

jmp OK

OK: nop

RETI – «Вихід з переривання»

Інструкція здійснює вихід з поривання. Адреса повернення вигружається зі стеку і біт Глобальний дозвіл переривань (I-біт) встановлюється.

Зверніть увагу на те, що регістр статусу автоматично не записується при вході в обробник переривань і не відновлюється при виході з переривання. Ці операції треба виконати програмно. Вказівник на стек використовує преінкрементації під час виконання інструкції RETI

PC(15:0) ← STACK

Синтаксис

Операнди

Лічильник команд

Стек

RETI

Нема

PC(15:0) ← STACK

SP ← SP + 2

Вплив на регістри статусу:

I

T

H

S

V

N

Z

C

1

-

-

-

-

-

-

-

Біт I:

Встановлюється завжди.

Наприклад:

exit_int:

pop r16

out SREG r16

reti

CLI – «Скидання біту глобального дозволу переривань»

Інструкція здійснює очистку біту Глобального дозволу переривань (I-біт) у регістру статусу (SREG). Генерація всіх переривань буде забороненою. Переривання не будуть генеруватися після цієї інструкції навіть якщо умова їх генерації виникне одночасно з виконанням цієї інструкції.

I ← 0

Синтаксис

Операнди

Стек

CLI

Нема

SP ← SP + 1

Вплив на регістри статусу:

I

T

H

S

V

N

Z

C

0

-

-

-

-

-

-

-

Біт I:

Очищається завжди.

Наприклад:

cli

SEI – «Встановлення біту глобального дозволу переривань»

Інструкція здійснює встановлення біту Глобального дозволу переривань (I-біт) у регістру статусу (SREG). Наступна інструкція після цієї інструкції буде виконана перед будь-якими перериваннями які очікують на обробку

I ← 1

Синтаксис

Операнди

Стек

SEI

Нема

SP ← SP + 1

Вплив на регістри статусу:

I

T

H

S

V

N

Z

C

1

-

-

-

-

-

-

-

Біт I:

Встановлюється завжди.

Наприклад:

sei