Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Автоматизация тех. процессов и микропр. техника...doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

2.5. Організація та функціонування стекової пам’яті та переривань

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

Більшість МП дозволяють організувати в ОЗП для цього спеціальну область пам'яті - стек (stack). На відзнаку від іншої області ОЗП з довільним доступом, в стек дані записуються лише послідовно, причому байт, що записаний останнім, витягається першим. Для організації стека звичайно використовується спеціальний регістр – указник стека SP. Звичайно спочатку

програми встановлюють адресу (ADR) початку стека командою LXI SP, ADR (як правило, в області старших адрес). При запису чергового байта в стек (запис здійснюється в комірку, адреса якої вказана в SP) зміст SP автоматично зменшується на 1 (стек «зростає» уверх). У разі звертання до стека на читання зміст SP автоматично збільшується на 1, після чого здійснюється читання байта з відповідної комірки. Слід відзначити, що розглянутий МП (КР580) здійснює зі стеком тільки двобайтні операції. При цьому звернення до стека здійснюються в наступних випадках:

а) запис/витяг вмісту регістрових пар командами PUSH R16 і POP R16 відповідно;

б) при переході до підпрограми (рис.2.4) і поверненні з неї – автоматичне

збереження і відновлення адреси команди основної програми, наступної за командою виклику підпрограми;

в) при обробці переривань – також збереження адреси повертання.

Організація переривань. Практично будь-яка МПС включає в себе ряд зовнішніх пристроїв, що періодично вимагають обміну інформацією з МП або іншими вузлами (клавіатура, давачі, виконавчі органи керування технологічним об'єктом і т.п.). Процес обміну можна організувати наступним чином:

- періодичним опитуванням всіх приладів з аналізом їхнього стану і при виявленні необхідності обміну – здійснити перехід до відповідної підпрограми обміну;

- при необхідності обміну зовнішній пристрій видає сигнал запиту МП: отримавши запит, МП переходить до виконання підпрограми обміну.

Очевидно, що реалізація першого способу призводить до непродуктивних витрат часу на опитування зовнішніх приладів (серед яких можуть бути прилади, що працюють поволі, або такі, що рідко вимагають обміну) і істотно обмежує завдяки цьому продуктивність МПС в цілому. При реалізації другого способу МП «відволікається» для обміну з зовнішнім пристроєм тільки в той момент, коли це справді необхідно. Такий режим обміну і називається перериванням. Для його здійснення МП (КР580) має, як вказувалося вище, вхід INT – запит на переривання, і вихід INTE – підтвердження переривання. Обмін з використанням переривань організується наступним чином:

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

2. Отримавши запит, мікропроцесор виконує наступні операції:

а) завершує виконання поточної команди;

б) автоматично записує адресу наступної команди у стек;

в) видає імпульс на вихід INTE про підтвердження переривання, тобто про готовність до процесу обміну.

3. Отримавши сигнал INTE від МП, зовнішній пристрій повинен видати на ШД код команди переходу до підпрограми обміну – так названий, вектор переривань.

4. МП зчитує цю команду і переходить до виконання підпрограми обміну.

Зі сказаного витікає, що реакція МП на переривання еквівалентна подачі команди CALL в довільному місці програми. Підпрограма обміну, як і будь-яка інша, повинна завершуватися командою RET, і у відповідності з п. 2,б здійсниться повернення в основну програму в те місце, звідки її виконання було перерване.

Як видно з опису п. 3, зовнішній пристрій повинен виконувати достатньо складні функції для реалізації обміну за перериванням. Тобто це спеціальна електронна схема (звичайно спеціальна ВІС – програмований контролер переривань). Цей контролер при ініціалізації МПС програмується - йому повідомляються адреси відповідних підпрограм обміну, пріоритет (черга) обслуговування різноманітних приладів і ін.

У МК є деякі особливості в організації переривань.

Переривання в МК типу PIC16F87x можуть бути реалізовані від 14 джерел, включаючи:

- зовнішнє переривання з виводу RB0/INT;

- переривання при переповненні лічильника/таймера TMR;

- переривання по закінченні запису даних в EEPROM;

- переривання при зміні сигналів на певних виводах паралельних портів.

Усі переривання мають один і той же вектор/адресу – 0004Н. Однак у керуючому регістрі переривань INTCON фіксується джерело запиту переривання встановленням відповідних бітів в 1. При цьому підпрограма обробки переривань повинна перевірити ці біти і сформувати перехід до обробки кожного переривання (виклик відповідної підпрограми). Будь-яке переривання може бути замасковане індивідуально або загальним бітом.

Біт загального дозволу/заборони переривання GIE (біт 7 у регістрі INTCON) дозволяє (GIE =1) всі індивідуально незамасковані переривання або забороняє їх (якщо GIE =0). Кожне переривання окремо може бути додатково дозволено/заборонено встановленням відповідного біта в регістрі INTCON в 0 або 1. Біт GIE обнулюється при скиданні МП. При виникненні переривання, біт GIE обнулюється, щоб заборонити подальші переривання, адреса повернення заноситься у стек, а у програмний лічильник завантажується адреса 0004h.

Підпрограма обробки переривань обов’язково повинна завершуватися командою повернення з переривання RETFIE, що здійснює повернення до основної програми і встановлює біт GIE=1, щоб знову дозволити переривання.