Лабораторная работа №6 (Вариант №2)
Изучение подсистемы прерываний МК 80С31
Цельработы: Изучение организации прерываний в МК 80С31 и обслуживания подсистемы прерываний.
Задание: Написать программу обслуживания подсистемы прерываний, содержащую:
1) таблицу переходов
2) процедуры обслуживания прерываний
3) процедуру определения приоритетов источников прерываний
4) определение начального адреса стека
Задание для варианта №2: Написать процедуру обслуживания прерывания от нулевого таймера-счётчика.
Листинг программы
STACK EQU 0BFh ;начальный адрес стека
;формирование таблицы переходов
ORG 0h ;адрес старта по сигналу RST
ajmp Start ;переход на метку Start
ORG 03h ;внешний запрос прерывания 0
reti ;возврат из прерывания
ORG 0Bh ;прерывание встроенного таймера/счетчика 0
ljmp IntT0 ;вызов подпрограмы обработки прерывания IntT0
ORG 13h ;внешний запрос прерывания 1
reti ;возврат из прерывания
ORG 1Bh ;прерывание встроенного таймера/счетчика 1
reti; ;возврат из прерывания
ORG 23h ;прерывание встроенного порта ввода/вывода
reti ;возврат из прерывания
ORG 30h ;тело программы
Start:
mov SP, #STACK ;вершина стека по адресу 0BFh
mov IE, #10000010b ;разрешаем прерывание только встроенного таймера/счетчика 0
mov IP, #00000010b ;устанавливаем высокий приоритет для данного прерывания
setb TR0 ;включаем нулевой таймер
jmp $ ;зацикливаемся
IntT0: ;подпрограмма обработки прерывания от таймера/счетчика 0
mov SBUF, #127 ;печатаем символ
reti; ;возврат из прерывания
end ;конец программы
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.