Ініціалізувати систему переривань на наступний режим роботи:
· Дозволити переривання по фронту від входу INT0 з вищим рівнем пріоритету;
· Дозволити переривання з нижчим рівнем пріоритету по таймеру/лічильнику ТС1, що працює в режимі таймера з програмним керуванням.
Сформувати відповідну область векторів переривань та порожні підпрограми переривань. Дозволити роботу системи переривань.
Для вирішення цієї задачі необхідно сформувати наступні константи ініціалізації:
· регістра TCON - для INT0 визначити роботу по фронту;
· регістра IE – визначити дозволи переривань по джерелам INT0, ТС1;
· регістра IP - визначити пріоритети по джерелам INT0, ТС1.
Необхідно дозволити режим альтернативних функцій по входу INT0 та перенести початок стеку з початкової адреси 7H, для звільнення місця під регістри змінних.
У табл.7.4 – 7.6 приведено відповідні налаштування регістрів TCON, IE, IP.
Таблиця 7.4 Регістр TCON
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
Таблиця 7.5 Регістр IE
|
|
EA | - | - | ES | ET1 | EX1 | ET0 | EX0 |
Таблиця 7.6 Регістр IP
- | - | - | PS | PT1 | PX1 | PT0 | PX0 |
Текст програми має наступний вигляд.
;---------------------------------------------------------------
;--- Опис констант та змінних
INI_TCON equ 00000001b;константа завантаження регістру TCON
INI_IE equ 00001001b;константа завантаження регістру IE
INI_IP equ 00000001b;константа завантаження регістру IP
;--- Область векторів переривань
ORG 0H;адреса рестарту після пуску процесора
SJMP INIT;перехід на початок основної програми
ORG 03H;адреса рестарту після пуску процесора
SJMP INT_INT0;перехід на програму переривань по INT0
ORG 1BH;адреса рестарту після пуску процесора
SJMP INT_TC1;перехід на програму переривань по TC1
;--- Програма
ORG 20H;початкова адреса основної програми
INIT:
MOV SP,#20h;перенесення початку стеку
MOV TCON,#INI_TCON;ініціалізація регістру TCON
MOV IE,#INI_IE;ініціалізація регістру IE
MOV IP,#INI_IP;ініціалізація регістру IP
SETB INT0;дозвіл альтернативних функцій по входу INT0
SETB EA;дозвіл роботи системи переривань
MAIN:;головний цикл програми
SJMP MAIN
;--- Підпрограма переривань по входу INT0
INT_INT0:
RETI
;--- Підпрограма переривань по таймеру/лічильнику TC1
INT_TC1:
RETI
END;директива про закінчення програми
;---------------------------------------------------------------