Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание N 7.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
206 Кб
Скачать
☆

5. Содержание отчета

  • Краткое описание системы прерываний МК;

  • Обзор регистров для обслуживания системы прерываний;

  • Задание по лабораторной работе;

  • Текст программы с комментариями;

6. Пример выполнения задания.

Рассмотрим 27 вариант.

Написать на ассемблере МК 51 систему программ, которая выполняет следующие функции.

Первая программа выполняет циклический вызов прерывания типа ТУРЕ=IE1. Программа располагается в СSEG, начиная с адреса АDR0=6ADh. Программа должна состоять из двух частей. Первая часть - инициализация системы, вторая -циклическое взведение соответствующего триггера запроса на прерывание.

Вторая программа - обработчик прерывания, должна располагаться в памяти СSEG, начиная с адреса АDR1=5ADh. Обработчик должен при каждом обращении передавать в порт Р1 очередной код из массива кодов длиной N=6, расположенный в СSEG, начиная с адреса АDR2=7E4h. При исчерпании массива необходимо перейти к его первому элементу.

Вход в систему программ по команде JMP ADR0, расположенной в CSEG по адресу 0000h. В качестве массива выбрать первые N символов ФИО студента (‘Ivanov’).

Текст программы с комментариями.

org 0

jmp start ; переход на начало программы

org 3

reti ; отказ от прерывания INT0

org 0Bh

reti ; отказ от прерывания ТС0

org 13h

jmp interup ; переход на обработчик прерывания INT1

org 1Bh

reti ; отказ от прерывания ТС1

org 23h

reti ; отказ от прерывания по последовательному интерфейсу

;////////////////////////////

org 5ADh

interup:

clr IE1 ; очистить флаг запроса прерывания

mov A,R0 ; записать в А номер текущего элемента массива

movc A,@A+DPTR ; извлечь текущий элемент массива

mov P1,A ; вывести текущий элемент массива в порт Р1

inc R0 ; перейти к следующему элементу

cjne R0,#6,m ; если выведены не все элементы, то выйти из прерывания

mov R0,#0 ; если выведены все элементы, то начать вывод сначала

m:

reti ; возврат из прерывания

;///////////////////////////////

org 6ADh

start:

mov R0,#0 ; номер текущего элемента

mov DPTR,#7E4h ; база массива

setb EA ; разрешить систему прерываний

setb EX1 ; разрешить прерывание INT1

next:

setb IE1 ; вызвать прерывание INT1 программным способом

jmp next ; перейти на вызов прерывания

;///////////////////////////////

org 7E4h

db 'Ivanov' ; заданный массив

end

6

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]