Изучение подсистемы прерываний МК 80С31

Страницы работы

Содержание работы

Лабораторная работа №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                                            ;конец программы

Похожие материалы

Информация о работе