- •1. Архітектура мп к580 вм80
- •2. Структурна схема мп к580 вм 80
- •3. Призначення вхідних/вихідних сигналів мп к580 вм 80
- •4. Цикли роботи мп к580 мп вм 80.
- •Фаза вибору - це час, за який команда вибірається з пам’ті та записується в регістр команд (рк).
- •5. Способи адресації мп к580 вм80.
- •6. Загальна характеристика системи команд.
- •7 Команди пересилки
- •8 Арифметичні команди
- •9 Логічні команди.
- •10. Команди розгалуження, виклику підпрограм, повернення та рестарту.
- •11. Команди роботи зі стеком та керування вводу/виводу.
- •12. Генератор тактових імпульсів к580 гф 24.
- •Мал. 2.1 Функціональна схема гті
- •Мал. 2.2. Часова діаграма сигналів гті
- •13 Системний контролер к 580 вк 28
- •Мал.2.4. Функцюнальнасхема ск
- •14. Програмований паралельний інтерфейс (ппі) к 580 вв 55.
- •15. Програмований контролер приорітетних переривань к530 вн59.
- •Мал. 2.9. Структурна схема пкпп вн59
- •Мал. 2.10 Каскадне з‘єднання пкпп
- •16. Режими функціонування пкп к580 вн-59
- •17. Програмування пкп вн 59 та схеми пріоритетів.
- •Використавши циклічний зсув в, маємо такий новий розподіл пріоритетів
- •17 Програмований контролер прямого доступу до пам’яті к 580 вт 57.
- •2.5.1 Загальна характеристика.*
- •2.5.2 Структурна схема контролера к580 вт 57.
- •19. Режими роботи контролера к580 вт 57.
- •20. Загальна характеристика.
- •21.Структурна схема мп.
- •26. Загальна характеристика мікроконтролерів (мк)
- •27. Структурна схема мк 8051
- •1.3. Система переривань мп вм86.
- •1.3.1. Загальна характеристика.
- •1.3.2. Зовнішні переривання.
- •1.3.3. Внутрішні та програмні переривання.
- •1.3.4. Процедура обслуговування переривань.
- •1.4 Система і формат команд мп вм86.
- •1.4.1 Формат команд.
1.3.3. Внутрішні та програмні переривання.
Внутрішні та програмні переривання характеризуються типом, який або визначається заздалегідь (0 – 4), або знаходиться у коді команди (5 – 31) і зокрема:
тип 0 (помилка при діленні) генерується МП після виконання команд ділення DIV, IDIV, якщо формат частки перевищує формат отримувача (тобто регістрів, що використовуються), або у разі ділення на нуль;
тип 4 (переривання при переповнені) формується МП за однобайтовою командою INT0, якщо в результаті виконання будь-якої команди програми флаг переповнення ОF = 1, тобто команда INT0 – це переривання при переповненні;
тип 1 (пошагове переривання) формується автоматично при встановленні флага Т = 1, і яке діє відразу після виконання будь-якої поточної команди. При виконанні однокрокового переривання МП виконує низку операцій, а саме: запис до стеку всіх флагів F, вмісту регістрів CS та IP, після чого скидаються флаги І та Т. По закінченні виконання підпрограми і отримання команди IRET (повернення з підпрограми) зі стека витягуються і записуються у МП флаги F і вміст регістрів ІР та CS.
Rem. МП ВМ 86 не має команд встановлення і скидання прапорця Т, більш того, відсутні команди, які б дозволили організовувати пересилки між старшими байтами регістра F та загальними регістрами МП. Стан флага Т можна змінити, діючи на нього після включення регістра F до стеку. Для включення регістра F і витягнення його зі стеку передбачені відповідні команди PUSHF, POPF. Значення Т = 1 встановлюється об’єднанням за логічною операцією “АБО” вмісту регістра F з константою 0100, а Т= 0 – об’єднанням по І з константою FEFF. Якщо встановлене Т = 1, то перше покрокове переривання буде мати місце після команди, що є наступною за командою повернення з підпрограми обробки покрокових переривань.
тип n (5 – 31) визначається користувачем при написанні програми і виконується по двох байтовій команді INTn, де n задається у другому байті команди. Команда INTn викликає необхідну програму, як і команда CALL, але при переході до підпрограми команда INТn виконує запам’ятовування не лише адреси повернення (ІР, CS) але й регістра F.
тип 3 викликається однобайтовою командою INT3 і визначається як переривання контрольної точки (точки розриву).
Rem. Контрольною точкою може бути будь-яке місце у програмі, де її нормальне виконання переривається і під час відлагодження вживаються деякі спеціальні заходи як то: індикація вмісту регістрів, чарунок пам’яті, портів вводу/виводу, а також для вставлення додаткового фрагмента програми без повторної трансляції.
1.3.4. Процедура обслуговування переривань.
Усі типи внутрішніх переривань мають ряд спільних ознак:
код переривання повідомляється МП командою або включається в команду переривань;
на виході МП не формуються сигнали;
за винятком переривання однокрокового типу, внутрішні переривання не можуть бути відключені;
за винятком переривання однокрокового типу, будь-яке з внутрішніх переривань має більш високий пріоритет по відношенню до зовнішніх переривань.
Зв’язок між кодом, що визначає тип переривання, і підпрограмою обслуговування переривання встановлюється за допомогою таблиці покажчиків векторів переривання (Табл. 2). Вектори переривання займають 1Кб адресного простору (00000 – 003FF), при чому кожен вектор займає 4 чарунки пам’яті. Дві молодші адреси у векторі використовуються для запису зміщення у сегменті, а два старших байта – для базової адреси сегмента.
Таблиця 2.2.
Адреса |
Тип |
Коментар |
||
00000 |
Тип 0 (ОД) |
Переривання за помилкою ділення |
||
00004 |
Тип 1 (ПР) |
Покроковий режим |
||
00008 |
Тип 2 (NMI) |
Переривання по NMI |
||
0000С |
Тип 3 |
Переривання по INT3 |
||
00010 |
Тип 4 |
Переповнення INT0 |
||
00014 |
Тип 5 |
Резерв |
||
............................. |
...................... |
................................................ |
||
0007С |
Тип 31 |
Резерв |
||
00080 |
Тип 32 |
Користувача |
||
.............................. |
...................... |
.............................................. |
||
003FC |
Тип 255 |
Користувача |
||
003FF |
Rem. Тобто кожен елемент таблиці містить 2 слова, які визначають початкову логічну адресу підпрограми. При переході на підпрограму зміщення завантажується до ІР, адреса сегмента – до регістру CS. Оскільки розмір кожного елемента таблиці складає чотири байта, МП вираховує адресу (зміщення) потрібного елементу шляхом множення типа переривання на 4.
Формування адреси передачі керування на відповідну підпрограму обслуговування переривання в BIU відбувається так само, як і при звернені до будь-якої чарунки пам’яті, а саме: вміст двох молодших адрес вектора переривання записується в регістр ІР, вміст старших байтів – записується в регістр CS. Після цього вміст CS зміщується на чотири розряди вліво і додається до вмісту ІР, а отримане таким чином 20-розрядне число визначає фізичну адресу початку підпрограми переривання.
Коли виконується перехід до підпрограми обслуговування переривань вміст регістра F (разом з CS та IP) запам’ятовуються у стеку, після чого флаги І, та Т скидаються, чим автоматично забороняються зовнішні переривання по входу INTR (що необхідно для захисту початкової ділянки підпрограми, в якому відбувається включення до стеку внутрішніх регістрів МП). Потім підпрограма може дозволити зовнішні переривання командою STI, крім того, вона може бути перервана запитом по входу NMI і внутрішніми перериваннями. Необхідно слідкувати, щоб у підпрограмі не виникало переривань того ж самого типу, яке вона обслуговує, оскільки це призведе до нескінченого виклику тієї ж самої процедури.
В кінці підпрограми обслуговування переривань відновлюється вміст регістрів МП, які були включені до стеку на початку підпрограми з метою збереження даних, які відносяться до перерваної програми. Цю ділянку підпрограми треба захищати за допомогою команди CLI від переривань по входу INTR. Підпрограми обробки переривань мають закінчуватися командою повернення з переривання IRET, якій передує команда дозволу переривань STI. Перед виконанням команди IRET стек має бути у тому ж самому стані, що він був відразу після виклику підпрогами, що дозволяє команді IRET витягнути зі стеку три верхніх слова в регістри IP, CS, F. Це забезпечує повернення до тієї команди програми, яка б виконувалася наразі відсутності переривання.