Приклад 7.1

Ініціалізувати систему переривань на наступний режим роботи:

· Дозволити переривання по фронту від входу 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;директива про закінчення програми

;---------------------------------------------------------------



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: