
- •Передмова
- •Intel 430lx
- •Intel 430nx
- •Intel 430fx
- •Intel 430hx
- •Intel 430vx
- •Intel 430tx
- •Intel 450gx/kx
- •Intel 440fx
- •Intel 440lx agPset
- •Intel 440ex
- •Intel 440bx agPset
- •Заняття 1. Поняття про систему переривання пеом
- •Принципи організації системи переривання програм
- •Слово стану процесора (програми)
- •Характеристики системи переривання
- •Організація переходу до перериваючої програми та пріоритетне обслуговування запитів переривання
- •Процедура переривання з опитуванням джерел (прапорців) переривання
- •Програмно-керований пріоритет перериваючих програм
- •Методи використання механізму переривань
- •Класи переривань пеом
- •Призначення контролера апаратних переривань пеом
- •Опис основних елементів і8259а
- •Стани програмованого контролера переривань
- •Заняття 5. Керування режимами роботи пкп
- •Void main (void){
- •Int mask;
- •Заняття 6. Керування пріоритетами переривань
- •Install proc near
- •Заняття 8. Особливості практичного використання апаратних та програмних переривань
- •Volatile long ticks;
- •Void main(void) {
- •Void _interrupt _far timer(void) {
- •Int8 proc near cli
- •Int09 proc near
- •Розділ 3. Підсистема таймера та годинника реального часу
- •Заняття 3. Системні засоби програмного доступу до ресурсів таймера
- •Void tm_delay(int ticks) {
- •Void main (void){
- •Void main(void){
- •Заняття 4. Приклади використання функціональних можливостей таймера в прикладних задачах
- •Void main(void){ int Frac; char k;
- •Void tm_sound(int freq, int time) {
- •Void tm_delay(int ticks) {
- •Void tm_sound(int freq, int time){
- •Void main(){
- •Void main() { int I,j; clrscr();
- •Заняття 5. Архітектура та принципи функціонування годинника реального часу
Організація переходу до перериваючої програми та пріоритетне обслуговування запитів переривання
Вектор переривання містить усю необхідну інформацію для переходу до перериваючої програми, в тому числі її початкову адресу. Кожному запиту (рівню) переривання, а в ряді випадків, наприклад, в малих мікро-ЕОМ та мікропроцесорах, кожному периферійному пристрою відповідає свій вектор переривання, здатний ініціювати виконання відповідної перериваючої програми. Вектор переривання звичайно знаходиться в спеціально виділених фіксованих чарунках пам'яті.
Головне місце в процедурі переходу до перериваючої програми займає передача з відповідного регістра (регістрів) процесора в пам'ять (зокрема, в стек) на збереження поточного вектора стану програми, що переривається (щоб можна було повернутись до її виконання), та завантаження в регістр (регістри) процесора вектора переривання перериваючої програми, до якої при цьому переходить керування процесором. Процедура організації переходу до перериваючої програми включає в себе виділення із виставлених запитів такого, який має найбільший пріоритет. Розрізняють абсолютний та відносний пріоритети. Запит, що має абсолютний пріоритет, перериває виконувану програму та ініціює виконання відповідної перериваючої програми. Запит з відносним пріоритетом є першим кандидатом на обслуговування після завершення виконання поточної програми. Якщо найбільш пріоритетний з виставлених запитів переривання не перевищує за рівнем пріоритету виконувану процесором програму, то запит переривання ігнорується або його обслуговування відкладається до завершення виконання поточної програми.
Найпростіший спосіб встановлення пріоритетних відношень між запитами (рівнями) переривання полягає в тому, що пріоритет визначається порядком приєднання ліній сигналів запитів до входів системи переривання. При появі кількох запитів переривання першим сприймається запит, що поступив на вхід з меншим номером. У цьому випадку пріоритет є твердо фіксованим. Змінити пріоритетні відношення можна лише приєднанням ліній сигналів запитів на входах системи переривання або, в більшості систем переривання, шляхом програмної зміни розподілення рівнів між входами.
Процедура переривання з опитуванням джерел (прапорців) переривання
При вказаному способі задання пріоритету між запитами кожному джерелу запитів відповідає розряд (прапорець) в регістрі запитів переривання (регістрі прапорців). При наявності запиту або кількох запитів переривання формується загальний сигнал переривання (ОСП), що ініціює виконувану спеціальною програмою або апаратурою процедуру опитування регістра переривання (прапорців) або просто ліній сигналів переривання найбільшого пріоритету. По суті, ця процедура полягає у визначенні місця розташування крайньої зліва одиниці (крайнього прапорця) в регістрі запитів переривання.
Програмно-керований пріоритет перериваючих програм
Відносний ступінь важливості програм, їх частота повторення, відносний ступінь терміновості в ході обчислювального процесу можуть змінюватись, вимагаючи встановлення нових пріоритетних відношень. Тому в багатьох випадках пріоритет між перериваючими програмами не може бути зафіксований раз і назавжди. Необхідно мати можливість змінювати при необхідності пріоритетні відношення програмним шляхом, іншими словами, пріоритет між перериваючими програмами повинен бути динамічним, тобто програмно керованим.
В ЕОМ широко застосовуються два способи реалізації програмно керованого пріоритету перериваючих програм, в яких використовуються відповідно поріг переривання (в малих та мікро-ЕОМ) та маски переривання (в ЕОМ загального призначення).
Поріг переривання. Цей спосіб дозволяє в ході обчислювального процесу програмним шляхом змінювати рівень пріоритету процесора (а отже, і програми, що опрацьовується в даний момент на процесорі) відносно пріоритетів запитів джерел переривань (в основному периферійних пристроїв), іншими словами, задавати поріг переривання, тобто мінімальний рівень пріоритету запитів, якими дозволяєтсья переривати програму, що виконується процесором.
Поріг переривання задається командою програми, що встановлює в регістрі порогу переривання код порогу переривання. Спеціальна схема виділяє найбільш пріоритетний запит переривання, порівнює його пріоритет з порогом переривання та, якщо він виявляється вищим за поріг, виробляє загальний сигнал переривання, та починається процедура переривання.
Маска переривання — це подвійний код, розряди якого представлені згідно із запитами або класами переривання. Маска завантажується командою програми в регістр маски. Стан 0 в даному розряді регістра маски дозволяє, а стан 1 — забороняє (маскує) переривання поточної програми від відповідного запиту. Таким чином, програма, змінюючи маску в регістрі маски, може встановлювати довільне пріоритетне відношення між програмами без перекомутації ліній, по яких поступають запити переривання. Кожна перериваюча програма може встановлювати свою маску. При формуванні маски одиниці встановлюються в розряди, відповідні до запитів (перериваючих програм) з більш високим, ніж у даної програми пріоритетом.