При роботі мікроконтролера можлива ситуація, коли одночасно надходять запити на переривання від різних джерел. Для уникнення конфліктів в МCS51 реалізована дворівнева апаратно-програмна система пріоритетів, відповідно до якої пристрій управління вибирає джерело переривання, який може бути оброблений раніше. У межах кожного рівня пріоритетів встановлена наступна ієрархія пріоритетності обслуговування запитів: INT0 - TF0 - INT1 - TF1 - TI / RI.
Для будь-якого з п'яти джерел (TF1, TF0, INT1, INT0, TI або RI) програмним способом може бути встановлений один з двох рівнів пріоритету - "високий" або "низький". У разі збігу рівнів пріоритетів кількох одночасних запитів переривань, вибір вищого пріоритету пристрій управління проводить відповідно апаратної шкали INT0 - TF0 - INT1 - TF1 - TI / RI. Наприклад, якщо високий пріоритет обраний програмістом для переривань по входу INT0 і таймеру/лічильнику ТС1, то в разі одночасного запиту від джерел IE0, TF1 спочатку буде обробляться запит INT0, а потім ТС1 і тільки після цього - інші запити в порядку TF0-IE1-(TI / RI). Рівень пріоритету кожного джерела встановлюють за допомогою регістра пріоритетів переривань IP.
На рис.7.2 зображено бітову структуру цього регістру, а призначення окремих бітів описано в табл. 7.3.
- | - | - | PS | PT1 | PX1 | PT0 | PX0 |
Рис. 7.2. Бітова структура регістра ІР
Таблиця 7.3
Біт | Позиція | Призначення |
PS | IP.4 | Пріоритет переривань послідовного порту |
PT1 | IP.3 | Пріоритет переривань таймера/лічильника ТС1 |
PX1 | IP.2 | Пріоритет переривань по входу INT1 |
PT0 | IP.1 | Пріоритет переривань таймера/лічильника ТС0 |
PX0 | IP.0 | Пріоритет переривань по входу INT0 |
Для встановлення високого рівня пріоритету переривання необхідно встановити відповідний біт в «1». Скидання біту керування приводить до призначення низького рівня пріоритету.