Електроний посібник з
дисципліни "Мікропроцесорні системи"
 
Дипломный проект
                              4.ОРГАНІЗАЦІЯ ПЕРЕРИВАНЬ У МІКРОПРОЦЕСОРНИХ СИСТЕМАХ

  Логіку роботи режиму переривань зручно розглянути на прикладі читання лекції. Професор викладає лекцію (мікропроцесор виконує програму). Якщо студенту щось не зрозуміло, він піднімає руку (виставляє сигнал-запит на переривання), щоб професор дав роз'яснення з тих або інших питань. Професор запам'ятовує, у якому місці перервана лекція (мікропроцесор запам'ятовує у стековій пам'яті адресу, на якій перервана програма), і після цього відповідає на запитання студента (мікропроцесор виконує підпрограму обслуговування цього запиту). Після відповідей на запитання студента (після виконання підпрограми мікропроцесором) професор продовжує лекцію з того місця, де він її перервав (мікропроцесор вертається до виконання основної програми).
  Таким чином, термін «переривання» відноситься до функціонування мікропроцесора (МП). При звичайному функціонуванні МП на шину адреси виставляє вміст лічильника команд. Функції, які виконує МП, залежать від типу команди. Якщо виконуються команди пересилання інформації, арифметичні, логічні, то вміст лічильника команд (РС) збільшується відомим способом - збільшується на 1, якщо виконується однобайтова команда, збільшується на 2, якщо виконується двобайтова команда й збільшується на 3, якщо виконується трибайтова команда. Новий уміст лічильника команд і є тепер адресою наступної команди в пам'яті програм.
  Під час виконання команд умовних і безумовних переходів (JMP, JC),
вміст РС модифікується, як правило, другим і третім байтом цих команд.
І тільки під час виконання команд виклику підпрограм LCALL вміст лічильника команд збільшується на 2 (РС+2), при виконанні команди ACALL уміст лічильника команд збільшується на 1 (РС+1) і запам'ятовується в стеку, а потім уже в лічильник команд завантажується адреса підпрограми, яка перебуває в другому й третьому байті команд LCALL або ACALL.
  Таким чином, у стеку запам'ятовується адреса програми, при якій була викликана підпрограма. Після закінчення підпрограми, ця адреса буде відновлена в лічильнику команд (РС). Реагування мікропроцесора на запити переривань полягає в переході від виконання поточної програми до виконання підпрограми обслуговування переривання, відповідної до даного запиту.
  У МК51 це реалізується в такий спосіб. При виставлянні сигналу-запиту на переривання від одного із джерел переривань завершується виконання поточної команди, блокується вибірка команд із пам'яті програм наступної команди. Далі контролер переривання на шину даних виставляє код операції команди LCALL з адресою підпрограми, відповідної до даного запиту. Завдяки цій команді МП поточне значення лічильника команд запам'ятовує в стеку, а в лічильник команд заноситься другий і третій байт команди LCALL. Таким чином, звичайний хід виконання програми примусово переривається й мікропроцесор переходить до виконання підпрограми.
  Саме на цьому принципі й організовано переривання в мікроконтролері МК51. Функціональну схему взаємодії МП із периферійними пристроями в МК51 наведено на рис. 4.1.
Рис. 4.1. Логіка функціонування системи переривань МК51
  Роботу мікропроцесора можуть переривати як внутрішні периферійні пристрої мікроконтролера таймер 0 (Т0), таймер 1 (Т1), послідовний порт (SBUFF), так і зовнішні пристрої, які перебувають за межами мікроконтролера (усілякі датчики, пристрої захисту і т.п.). Для зовнішніх пристроїв у МК51 передбачено два входи від сигналів-запитів переривань ( INT і INT1).
  Таймери Т0 і Т1 формують сигнали-запити на переривання прапорами переповнення ТF0 і TF1 у регістрі керування ТCON  (TCON.5,  TCON.7) табл. 4.1.
  Роботу мікропроцесора можуть переривати як внутрішні периферійні пристрої мікроконтролера таймер 0 (Т0), таймер 1 (Т1), послідовний порт (SBUFF), так і зовнішні пристрої, які перебувають за межами мікроконтролера (усілякі датчики, пристрої захисту і т.п.). Для зовнішніх пристроїв у МК51 передбачено два входи від сигналів-запитів переривань ( INT і INT1).
  Таймери Т0 і Т1 формують сигнали-запити на переривання прапорами переповнення ТF0 і TF1 у регістрі керування ТCON  (TCON.5,  TCON.7) табл. 4.1.

 
  Спрощено  логіка  функціонування  системи  переривань  зображена  на рис. 4.2, де показано п'ять сигналів запитів переривань. INT 0, INT1 - зовнішні сигнали запитів переривань,TF 0 ,TF1, SBUFF - сигнали запитів переривань від внутрішніх периферійних пристроїв (таймери Т0 і Т1 і послідовний порт). Причому зовнішні сигнали запитів переривань можуть сприйматися контролером, як за рівнем, так і за перепадом сигналу (зрізу) з «1» в «0». Вибір режиму визначається станами бітів регістру керування TCON (біти TCON.0 і TCON.3) табл. 4.2.
Якщо зазначені біти встановлені в 1, то активним є перехід з 1 в 0, при нульових значеннях цих бітів активним є низький рівень сигналівINT 0 або INT1.
  Оскільки в МК є п'ять запитів переривань, отже, є й п'ять команд LCALL з адресами відповідних підпрограм.
  Причому код операції команди LCALL і адреси переходів, відповідні до кожного запиту, фіксовані для кожного джерела й формуються в контролері переривання у відповідності до табл. 4.3.