Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СпецКомп_очн_ЛР3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
149.5 Кб
Скачать

5. Задание по лабораторной работе

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

1) Первая программа выполняет циклический вызов прерывания типа TYPE. Программа располагается в CSEG, начиная с адреса ADR0. Программа должна состоять из двух частей. Первая часть – инициализация системы, вторая – циклическое взведение соответствующего триггера запроса на прерывание.

2) Вторая программа – обработчик прерывания, должна располагаться в памяти CSEG, начиная с адреса ADRI. Обработчик должен при каждом обращении передавать в порт Р1 очередной код из массива кодов длиной N, расположенный в CSEG, начиная с адреса ADF2.

Вход в систему программ по команде LCALL ADR0, расположенной в CSEG по адресу 0000h.

Таблица 5.1. Варианты заданий.

Номер

ADR0

TYPE

ADR1

ADR2

N

614

IE0

714

431

E

52F

TF0

62F

541

F

43E

IE1

53E

621

D

34A

TF1

44A

711

C

255

RI

355

121

B

366

TI

266

236

A

277

IE0

177

345

6

68A

TF0

78A

454

7

79D

IE1

69D

568

F

3AF

TF1

5AF

677

E

5BA

RI

4BA

781

5

4C9

TI

3C9

231

6

1D8

IE0

2D8

3A1

7

2E4

TF0

1E4

4B2

8

3F5

IE1

7F5

5C2

8

5E6

TF1

6E6

6D2

9

6A1

RI

5A1

7E2

F

7D3

TI

4D3

1F2

A

4C8

IE0

3C8

2E2

B

36F

TF0

26F

3D2

C

2BE

IE1

4BE

782

D

1CA

TF1

3CA

232

E

4D3

RI

2D3

3A2

F

3E7

TI

1E7

4B2

8

6F3

IE0

7F3

5C2

8

4E5

TF0

6E5

6D2

9

6AD

IE1

5AD

7E4

C

6. СОДЕРЖАНИЕ ОТЧЕТА:

– краткое описание системы прерываний;

– задание по лабораторной работе;

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

– черновик выполнения работы.

7. ФРАГМЕНТЫ ПРОГРАММ

Необходимо написать программную систему со следующими функциями.

Программа 1 инициализирует систему и циклически вызывает прерывание типа IE1 (программный аналог запроса на прерывание по входу ~INTI). Программа должна располагаться в CSEG по адресу 0100Н.

Программа 2 является обработчиком прерывания. При каждом вызове она должна пересылать очередной элемент массива в порт Р1. Массив однобайтных кодов длиной N располагается в CSEG, начиная с адреса ADRD.

Вектор прерываний

0000

020100

LJMP

0100

0003

00

NOP

0004

00

NOP

0013

020200

LJMP

0200

0015

00

NOP

Программа 1

0100

900300

MOV

DPTR, <ADRD>

; загружаем DPTR

0103

D2AF

SETB

IE.7

; разрешаем прерывания

0105

D2AA

SETB

IE.2

; разрешаем прерывание IE1

0107

00

NOP

; пустая команда

0108

D28B

SETB

TCON.3

; программный запрос на прерывания

010A

80FB

SJMP

0107

; в начало цикла

Программа 2

0200

D2D3

SETB

PSW.3

; задаем 3 банк

0202

D2D4

SETB

PSW.4

;

0204

B80602

CJNE

R0, <N>, 0209

; проверяем счетчик

0207

7800

MOV

R0, #00

; обнуляем счетчик

0209

E8

MOV

A, R0

020A

93

MOVC

A,@A+DPTR

; чтение очередного кода

020B

F590

MOV

R1, A

; засылка кода в Р1

020D

08

INC

R0

; инкремент счетчика

020E

32

RET

I

; возврат из обработчика