
- •Передмова
- •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. Архітектура та принципи функціонування годинника реального часу
Стани програмованого контролера переривань
ПКП може знаходитись у двох станах: настройки або обслуговування запитів на переривання. У стані настройки здійснюється ініціалізація та встановлення режимів роботи контролера шляхом його програмування як пристрою вводу/ виводу за допомогою чотирьох керуючих слів ініціалізації ICW1—ICW4, а в стані обслуговування контролер приймає операційні керуючі слова 0CW1—OCW3, що визначають алгоритм обслуговування запитів на переривання в заданому режимі ініціалізації. Передавання слів ініціалізації та операційних слів у відповідні регістри мікросхем І8259А здійснюється за допомогою команд байтового виводу OUT мікропроцесора і80х86. Стан програмно доступних регістрів І8259А зчитується за допомогою команд IN.
Для обміну кодами між мікропроцесором та ПКП в обчислювальній системі зарезервовано чотири порти вводу/ виводу: порти 20h (парний) та 21h (непарний) для ведучого та A0h, A1h для веденого. Через ці порти можуть бути передані 4 слова ініціалізації ICW1—ICW4, що задають режим роботи ПКП та 3 операційні керуючі слова (слова робочих наказів) 0CW1-0CW3.
Призначення та формати керуючих слів ініціалізації ПКП
Керуючі слова ініціалізації є константами, що задають: конфігурацію ПКП, порядок ініціалізації, базовий номер вектора переривання для входу IRQ0, наявність або відсутність каскадування, режими обслуговування. Ініціалізація ведучого та веденого контролерів здійснюється індивідуально.
ICW1 — керуюче слово ініціалізації. Біт З (LHN), що дорівнює 1 задає запуск запитів рівнем, тобто відповідний тригер регістра IRR встановлюється на 1 рівнем потенціалу на своєму вході; якщо ж LTIN=1, то відповідний тригер регістра IRR встановлюється на 1 фронтом вхідного сигналу. Біт 2 (ADI) використовується тільки в ПЕОМ на базі МПК 18080/8085. Біт 1 (SNCL) вказує на наявність у системі одного контролера (якщо дорівнює 1) або каскаду з кількох контролерів (якщо дорівнює 0). Біт 0 (ІС4) визначає: буде чи не буде в процесі ініціалізації виводитись керуюче слово ICW4. Якщо цей біт дорівнює 1, то ICW4 необхідно формувати. Якщо ICW4 не виводиться (ІС4=0), то це слово автоматично набуває нульового значення в усіх розрядах. Слово ICW1 передається за парними адресами. Формат слова ініціалізації ICW1 показано на рис. 2.3.
Керуюче слово ICW2 задає номер вектора переривання для переривань рівня 0 (наприклад, 08h для IBM PC, в яких по рівню 0 відбувається переривання від таймера). Так як вектори апаратних переривань розміщуються підряд один за одним, вивід в ICW2 значення 08h не тільки задає восьмий вектор для таймера, але і дев'ятий для переривань рівня 1 і т. п. Формат керуючого слова наведено на рис. 2.4.
ICW3 ведучого вказує, до яких входів IRQ0-IRQ7 підключені ведені контролери. При цьому відповідні біти встановлюються на 1. Інші біти дорівнюють 0. Приклад: нехай система переривань має два ведені контролери, ввімкнені до входів IRQ2 та IRQ4 ведучого, тоді ICW3 ведучого ПКП повинен мати формат (див. рис. 2.5).
ICW3 веденого ПКП у трьох молодших розрядах містить номер рівня ведучого, до якого він увімкнений. Наприклад, для веденого контролера, що працює на рівні 2, ICW3 має формат (див. рис. 2.6)
Керуюче слово Ініціалізації ICW4 має формат (див рис. 2.7)
Призначення та формати операційних слів ПКП
У заданому режимі ініціалізації користувач може:
маскувати та розмасковувати апаратні переривання;
змінювати пріоритети рівнів;
видавати команду завершення обробки апаратного переривання;
встановлювати/скидати режим спеціальної маски;
переводити ПКП у режим опитування та зчитування стану регістрів ISR та IRR.
Для здійснення вказаних дій необхідно за відповідними адресами записати одне з трьох слів робочих наказів 0CW1-0CW3.
0CW1 визначає стан розрядів у регістрі маски IMR та використовується для встановлення та скидання масок переривання (IRQ0-IRQ7). Формат слова наведено на рис. 2.8.
Значення бітів М0-М7, що дорівнюють одиницям, означає, що переривання відповідного рівня маскується та не буде оброблятись контролером. Дозвіл джерела переривання може бути здійсненим установкою відповідного розряду на 0. 0CW1 видається за адресою 21h (для ведучого) або A1h для веденого контролерів.
OCW2 призначено для виводу команди завершення обробки апаратного переривання ЕОІ, циклічного зсуву та явної зміни пріоритетів рівнів. Залежно від сполучення значення розрядів встановлюються відповідні режими та команди. Розряди 0CW2 мають такі призначення:
L0-L2 — використовують для вказання номера рівня переривання.
ЕОІ використовується для команд закінчення переривання (в неавтоматичному режимі). Якщо ЕОІ=1, то при виконанні команди АЕОІ (автоматичне завершення переривання) буде враховуватися стан розрядів SL та R. Якщо ЕОІ=0, то команда АЕОІ виконуватись не буде.
SL — використовується для дозволу та заборони розрядів L0-L2. Якщо SL=1, то операція відноситься до рівня, вказаного в розрядах L0-L2. Якщо SL=O, то розряди L0-L2 заборонені.
R — використовується для керування всіма процедурами ротації пріоритетів. Якщо R=l, то форма ротації визначається станом розрядів SL та ЕОІ. Якщо R=0, то ротації не буде. Значення бітів у форматі команди наведено на рис. 2.10.
0CW3 — це слово наказів, дозволяє встановити та відмінити режим спеціальної маски, перевести контролер у режим опитування та прочитати вміст IRR та ISR.
Призначення бітів та формат команди наведено на рис. 2.9. Після виконання команд читання регістра ISR та IRR вміст регістрів зчитується за адресою 20h або AOh. Для отримання вмісту регістра IMR необхідно виконати читання портів за адресами 21h або Alh.
Вправа
Сформувати керуючі слова ініціалізації та слова робочих наказів для всіх допустимих режимів функціонування ПКП.
Приклад конкретного завдання та його розв'язання
Нехай контролер переривань складається з двох каскадно ввімкнених мікросхем І8259А. Для підключення веденої мікросхеми використовується вхід IRQ2 ведучої та запуск запитів переривання здійснюється фронтом вхідних сигналів від контролерів зовнішніх пристроїв. Номер вектора переривання з найбільшим пріоритетом дорівнює 08h.
Контролер повинен працювати в режимі автоматичного завершення обробки переривання без спеціального вкладення, режим буфера не використовується. Маскуються переривання рівнів IRQ6, IRQ13. Необхідно передбачити циклічний зсув рівнів пріоритетів зі звичайним кінцем переривання, а дно пріоритетного кільця встановити за запитом, який вже обслужили.
Розв'язання
Для ведучого контролера:
ICW1=00010001b; ICW2=00001000b; ICW3=00000100b;
ICW4=00000010b; OCW1=10111111b; OCW2=10100000b.
Для веденого контролера:
ICW1=00010001b; ICW2=00001000b; ICW3=00000010b;
ICW4=00000010b; OCW1=11011111b; OCW2=10100000b.
Питання для самоконтролю знань
В яких станах може знаходитись ПКП?
Які адреси зарезервовані для програмування ПКП?
Що собою являють слова ініціалізації І8259?
Призначення та формат слів ініціалізації ICW1-ICW4.
Яка послідовність дій при ініціалізації ПКП?
Які функції може реалізувати користувач у заданому режимі роботи ПКП?
Призначення робочих «наказів» 0CW1-0CW3.
Яке слово робочих наказів використовується для маскування переривань? Вкажіть його формат.
Резюме
ПКП може знаходитись у двох станах: настройки або обслуговування запитів на переривання. Керуючі слова ініціалізації є константами, що задають конфігурацію ПКП, порядок ініціалізації, базовий номер вектора переривання для входу IRQ0, наявність або відсутність каскадування, режими обслуговування. Ініціалізація ведучого та веденого контролерів здійснюється індивідуально.
Передавання слів ініціалізації та операційних слів у відповідні регістри мікросхем І8259А здійснюється за допомогою команд байтового виводу OUT мікропроцесора і80х86. Стан програмно доступних регістрів І8259А зчитується за допомогою команд IN.
Для обміну кодами між мікропроцесором та ПКП в обчислювальній системі зарезервовано чотири порти вводу/виводу: порти 20h (парний) та 21h (непарний) для ведучого та - AOh, Alh для веденого. Через ці порти можна передати 4 слова ініціалізації ICW1-ICW4, що задають режим роботи ПКП та 3 операційні керуючі слова (слова робочих наказів) 0CW1-0CW3.
У заданому режимі ініціалізації користувач може:
маскувати та розмасковувати апаратні переривання;
змінювати пріоритети рівнів;
видавати команду завершення обробки апаратного переривання;
встановлювати/скидати режим спеціальної маски;
переводити ПКП у режим опитування та зчитування стану регістрів ISR та IRR.
Ваш наступний крок
Засвоївши поняття ініціалізації ПКП та керування ним у заданому режимі ініціалізації, вивчивши призначення та формати керуючих слів ініціалізації ICW - Initialization Control Word та операційних слів OCW - Operation Control Word, а також навчившись формувати структури керуючих слів ініціалізації та операційних слів, Ви підготувались до практичного засвоєння методики ініціалізації ПКП. Далі Ви дізнаєтесь, що ці питання мають важливе значення з точки зору практичного засвоєння процедур керування системою переривання.
Заняття 4. Підготовка ПКП до роботи
Тема заняття
Ініціалізація системи переривання ПЕОМ.
Мета заняття
Засвоїти терміни, що належать до поняття ініціалізації.
Вивчити алгоритми ініціалізації системи переривання ПЕОМ для веденого та ведучого контролерів.
Навчитись складати схеми ініціалізації ПКП.
Навчитись складати програмні модулі ініціалізації ПКП.
Ініціалізація системи переривання ПЕОМ
До початку нормальної роботи кожний контролер І8295А в системі повинен бути ініціалізовании за допомогою командних слів ініціалізації (ICW), що містять від двох до чотирьох байтів. ICW використовуються для встановлення необхідних умов та режимів роботи І8259А. Процедура ініціалізації контролера виконується тільки у вказаній послідовності, так як вона нерозривно зв'язана з апаратурою.
Якщо в системі кілька контролерів, то спочатку ініціалізується MASTER (ведучий), далі SLAVE (ведений).
Ініціалізація ПКП починається з моменту виводу за адресою 20h керуючого слова ICW1. Слова ініціалізації повинні йти одне за одним ICW1, ICW2, ICW3, ICW4. У процесі ініціалізації контролер послідовно приймає керуючі слова ICW1-ICW4. При наявності в системі одного контролера ICW3 не виводиться. Наявність ICW4 визначається вмістом слова ICW1. У порт з парною адресою ( 20h, AOh) виводиться слово ICW1. Порт з непарною адресою (21h, Alh) використовується для виводу ICW2, ICW3, ICW4. Після ініціалізації ПКП готовий до роботи в заданому режимі. Для зміни режимів роботи, що задаються при ініціалізації, вимагається ініціалізувати його знову.
Алгоритми ініціалізації системи переривання ПЕОМ
При ініціалізації ПКП виконуються такі дії, в тому числі й апаратні:
згідно з ICW1 встановлюється логіка послідовності ініціалізації таким чином, щоб забезпечувався прийом ICW, вказаних в ICW1;
скидаються регістри ISR та IMR;
скидається режим спеціального маскування (SMM);
скидається тригер ротації в автоматичному режимі ЕОІ;
схема читання/запису настроюється на читання IRR в обох контролерах;
встановлюється фіксований пріоритет (вищий у IRQ0, нижчий у IRQ7);
встановлюється режим розпізнавання запитів на переривання по фронту;
встановлюється робота підсистеми в каскадному режимі (об'єднання по входу IRQ2 MASTER);
присвоюються коди векторів, відповідні до рівнів переривань.
Схема алгоритму ініціалізації ПКП наведена на рис. 2.11.
Типова програма ініціалізації контролерів переривання має вигляд:
Для MASTER
MOV AL, 11h Ввід ICW1: режим запуску по фронту ІЛТМ=0,
OUT 20h,AL каскадний режим SNLG=0, IC4=1 - наявність
JMP $+2 у ланцюзі ініціалізації команди ICW4, D4=l
JMP $+2 вказує, що виконується команда ICW1
JMP $+2 Часова затримка
MOV AL,08h ICW2, встановлює базову адресу векторів
OUT 21h,AL переривань у діапазоні 08h - OFh
JMP $+2
JMP $+2 Часова затримка
JMP $+2
MOV AL,04h ICW3, вказує, що SLAVE підключений до
OUT21h,AL IRQ2
JMP $+2
JMP $+2 Часова затримка
JMP $+2
MOV AL,01h ICW4, встановлений режим роботи системи
OUT 21h,AL (може бути при необхідності заданий спеці -
JMP $+2 альний повновкладений режим SFNM)
JMP $+2 Часова затримка
JMP $+2
MOVAL, 00h Скидання регістра масок
OUT 21h,AL
Для SLAVE
MOV AL, 15h Ввід ICW1: режим запуску по рівню LTIM=1,
OUT AOh,AL каскадний режим SNLG=0, IC4=1 - наявність у ланцюгу ініціалізації команди ICW4, D4=l
вказує, що виконується команда ICW1
JMP $+2
JMP $+2 Часова затримка JMP $+2
MOV AL,70h ICW2, встановлює базову адресу векторів
OUT Alh,AL переривань у діапазоні 70h-7Fh
JMP $+2
JMP $+2 Часова затримка
JMP $+2
MOV AL,70h ICW2, встановлює базову адресу векторів
OUT Alh,AL переривань у діапазоні 7Oh-7Fh
JMP $+2
JMP $+2 Часова затримка
JMP $+2
MOV AL,02h ICW3, вказує, що SLAVE підключений до IRQ2
OUT Alh,AL
JMP $+2;
JMP $+2; Часова затримка
JMP $+2;
MOV AL,01h CW4, встановлений режим роботи системи
OUT Alh,AL (може бути при необхідності заданий спеціальний повновкладений режим SFNM)
JMP $+2;
JMP $+2; Часова затримка
JMP $+2;
MOV AL, 00h Скидання регістра масок
OUT Alh,AL
Зазначимо, що коли після ініціалізації потрібно здійснити які-небудь програмні зміни в ICW, то необхідно перепрограмувати всю послідовність ICW, а не тільки окреме змінюване слово.
Вправа
Скласти схему ініціалізації ПКП та програмний модуль передавання слів ініціалізації і робочих команд при таких вихідних даних.
Нехай контролер переривань складається з двох каскадно ввімкнених мікросхем І8259А. Для підключення веденого використовується вхід IRQ2 ведучого, і запуск запитів переривання здійснюється рівнем вхідних сигналів від контролерів зовнішніх пристроїв. Номер вектора переривання з найбільшим пріоритетом дорівнює 08h. Контролер повинен працювати в режимі автоматичного завершення обробки переривання без спеціального вкладення, режим буфера не використовується. Маскуються переривання рівнів IRQ6, IRQ13. Необхідно передбачити циклічний зсув рівнів пріоритетів зі звичайним кінцем переривання, а дно пріоритетного кільця встановлювати за запитом, який вже обслужили.
Питання для самоконтролю знань
1. В якій послідовності вводяться слова ініціалізації ПКП?
В якій послідовності здійснюють ініціалізацію каскадно ввімкнених ПКП?
Які дії необхідно здійснити для пере ініціалізації ПКП?
Напишіть програмний модуль ініціалізації ведучого ПКП.
Напишіть програмний модуль ініціалізації веденого ПКП.
Перелічіть основні функції, в тому числі й апаратні, які виконуються при ініціалізації.
Нарисуйте схему алгоритму ініціалізації ПКП.
Чи може система переривань мати кілька ведених контролерів?
Вкажіть послідовність ініціалізації у випадку, якщо є два ведені контролери переривань.
Резюме
До початку нормальної роботи кожний контролер І8295А в системі повинен бути ініціалізований за допомогою командних слів ініціалізації (ICW). Якщо в системі кілька контролерів, то спочатку ініціалізується MASTER (ведучий), далі SLAVE (ведений).
Ініціалізація ПКП починається з моменту виводу за адресою 20h керуючого слова ICW1. Слова ініціалізації повинні йти одне за одним ICW1, ICW2, ICW3, ICW4.
Після ініціалізації ПКП готовий до роботи в заданому режимі. Для зміни режимів роботи, що задаються при ініціалізації, вимагається переініціалізувати його знову.
Ваш наступний крок
Засвоївши методику побудови алгоритмів ініціалізації системи переривання ПЕОМ для веденого та ведучого контролерів та навчившись складати схеми та модулі програм ініціалізації ПКП, Ви підготувались до засвоєння матеріалу по застосуванню програмних способів керування режимами роботи ПКП.