Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Аппаратная обработка прерываний с помощью блока PTS

Тип: практическая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Написание алгоритма приема 10 пакетов по 12 байт из последовательного порта и размещение их в памяти PRAM. Создание управляющего блока PTSCB для режима блоковой передачи данных. Аппаратная обработка прерываний в режима аналого-цифрового сканирования.
Краткое сожержание материала:

Размещено на

Практическое занятие №1. Аппаратная обработка прерываний с помощью блока PTS

алгоритм блоковой прерывание аналоговый сканирование

1. Одиночная передача байта информации;

2. Блоковая передача данных;

3. Режима аналого-цифрового сканирования;

Последовательность действий: 1.Сформировать управляющее слово CON=05h;

M2=0

M1=0

M0=0

BW=0

SU=0

DU=1

SI=0

DI=1

2. Размаскировать и разрешить как PTS-прерывание обслуживание запроса int 12 т.е. INT_MASK1.4 :=1 (адрес 13h), PTSSEL(Hi).4 :=1 (адрес 05h).

ORB INT_MASK1, #10H; Размаскировать ORB 13H, #10H

ORB PTSSEL(HI), #10H; разрешить как PTS-прерывание

3. Создать управляющий блок PTSCB для режима одиночной передачи, загрузить вектор FF2058h.

LD CX, #0050H; начальный адрес PTSCB

LD AX, #2058H; адрес вектора прерываний

LDB BL, #0FFH;

EST CX, [BAX]; MEM_WORD(EX) СX

; Создать управляющий блок PTSCB

LD 50H, #050CH; записываем в PTSCB

LD 52H, #1FB8H; исходные параметры

LD 54H, #0200H;

4.Счетчик пакетов расположить в регистре (SFRs)-1FB6h

LDB WSR, 3EH; 64-bytes окно №30

LDB 0B6H, #0AH; Загрузка счетчика пакетов

5.Создать программу "end of PTS"(располагается по вектору стандартного прерывания int12 с адреса FF2038h), в которой предусмотреть проверку счетчика пакетов и инициализацию вновь цикла PTS.

; загрузить вектор FF2038h.

LD CX, #2150H; адрес программы end of PTS

LD AX, #2038H; адрес вектора стандартного прерывания int12

LDB BL, #0FFH;

EST CX, [BAX];

;создать программу "end of PTS"

end of PTS :

LDB WSR, 3EH; выбор окна для 1FB6h

DEC 0B6H; декремент счетчика пакетов

JE M1; проверка счетчика на нуль

OR PTSSEL(HI), #10H; разрешение PTS

LDB 50H, #0CH; перезагрузка счетчика циклов PTS M1: RET;

Последовательность действий: 1.Сформировать управляющее слово CON=8Fh;

M2=1

M1=0

M0=0

BW=0

SU=1

DU=1

SI=1

DI=1

2. Размаскировать и разрешить как PTS-прерывание обслуживание запроса int 14 т.е. INT_MASK1.6 :=1 (адрес 13h), PTSSEL(Hi).6 :=1 (адрес 05h).

ORB INT_MASK1, #40H; Размаскировать ORB 13H, #40H

ORB PTSSEL(HI), #40H; разрешить как PTS-прерывание

3. Создать управляющий блок PTSCB для режима блоковой передачи, загрузить вектор FF205Сh.

LD CX, #0058H; начальный адрес PTSCB

LD AX, #205CH; адрес вектора прерываний

LDB BL, #0FFH;

EST CX, [BAX]; MEM_WORD(EX) СX

; Создать управляющий блок PTSCB

LD 58H, #8F04H; записываем в PTSCB

LD 60H, #0200H; исходные параметры

LD 62H, #0600H;

LD 64H, #001EH;

4.Создать программу "end of PTS" по адресу 2200h (располагается по вектору стандартного прерывания int14 с адреса FF203Сh), в которой предусмотреть повторную инициализацию цикла PTS перемещения нового блока данных, принятого из последовательного порта.

; загрузить вектор FF203Ch.

LD CX, #2200H; адрес программы end of PTS

LD AX, #203CH; адрес вектора стандартного прерывания int14

LDB BL, #0FFH;

EST CX, [BAX];

;создать программу "end of PTS"

end of PTS :

OR PTSSEL(HI), #40H; разрешение PTS

M1: RET;

Последовательность действий: 1.Сформировать управляющее слово CON=САh;

M2=1

M1=1

M0=0

0

SU=1

0

1

0

2. Ниже приводится формат управляющего слова AD_COMMAND,

0

0

T

M

GO

ch2

ch1

ch0

Адрес 1FACh

где - ch2-ch0 номера обслуживаемых каналов от 0 до7; GO=1старт преобразования немедленный; GO=0 старт преобразования через блок EPA; М=0 это10-ти разрядное преобразование; М=1 это8-ми разрядное преобразование; Т=0 нормальное преобразование; Т=1 детектирование порога;

2. Сформировать таблицу "команды \ данные".

После начала цикла PTS происходит следующее:

1. PTS читает первую команду, сохраняет её во временном регистре, увеличивает дважды указатель PTR1, который теперь указывает на первую пустую ячейку памяти.

2. PTS читает AD_RESULT регистр(1FAAh), сохраняет результат первого преобразования в таблице и дважды увеличивает PTR1

3. PTS загружает команду из временного регистра в регистр команд AD_COMMAND. Начинается следующий цикл АЦП.

4. Если бит SU =1, то PTR1 сохраняется новое значение и указывает на новую команду.

5. Если бит SU=0, то PTR1 повторно устанавливается в первоначальное значение, а значит следующий цикл использует ту же команду и перепишет предыдущее значение результата АЦП.

6. Декрементируется счетчик циклов и по его значению либо возврат в основную программу и ожидание завершения следующего преобразования, либо переход на end-of-PTS.

Последовательность действий (продолжение):

3. Размаскировать и разрешить как PTS-прерывание обслуживание запроса int 5 т.е. INT_MASK.5 :=1 (адрес 08h), PTSSEL(Lo).5:=1 (адрес 04h).

ORB INT_MASK, #20H; Размаскировать ORB 08H, #10H

ORB PTSSEL(LO), #20H; разрешить как PTS-прерывание

4. Создать управляющий блок PTSCB для режима аналого-цифрового сканирования, загрузить вектор FF204Аh.

LD CX, #0060H; начальный адрес PTSCB

LD AX, #204AH; адрес вектора прерываний

LDB BL, #0FFH;

EST CX, [BAX]; MEM_WORD(EX) СX

; Формирование PTSCB

LD 60H, #CA05H; записываем в PTSCB

LD 62H, #0100H; исходные параметры

LD 64H, #1FAAH;

5.Создать программу "end of PTS"(располагается по вектору стандартного прерывания int 5 с адреса FF200Аh), в которой предусмотреть повторную инициализацию для режима аналого-цифрового сканирования, обеспечивая либо ту же, либо иную последовательность преобразования.

; загрузить вектор

LD CX, #200AH; адрес программы end of PTS

LD AX, #200AH; адрес вектора стандартного прерывания int5

LDB BL, #0FFH;

EST CX, [BAX];

;создать программу "end of PTS"

end of PTS :

OR PTSSEL(HI), #20H; разрешение PTS

M1: RET;

6.Программным путем обеспечить начало первого преобразования.

STRING MODULE CMAIN

$include(_SFR_INC_)

$include("regs.inc")

KSEG AT 0FF2200H

INSTRING: DCB 'Stroka0' ;SOURCE STRING

DCB 0 ;STRING DELIMITER

CSEG

START:

LDBWSR, #7EH;ENABLE VERTICAL WINDOW

;(32 BYTES, MAPPING OF ADRESS 1FC0h)

LDIDX1_7E, #02200H ;SET LO WORD OF 24 BIT ADRESS FOR IDX1

LDBIDX1_7E+2, #0FFH ;SET HI BYTE OF 24 BIT ADRESS FOR IDX1

LDBICB1_7E, #01H ;SET AUTOINCREMENT ON 2

LDBWSR, #00H ;DISABLE VERTICAL WINDOW

XORBX, BX ;ZERO AX REGISTER

NEXT:

LDB AL,ICX1 ;LOAD CHAR FROM INSTRING TO AL AND POINT TO NEXT BYTE

CMPB AL,#0 ;CHECK ON STRING END

JE _EXIT ;IF END -- EXIT LOOP

inc BX

SJMP NEXT

_EXIT:

SJMP $ ;INFINITE LOOP

END

Скриншот выполнения программы

Вывод: на этой лабо...

Другие файлы:

Назначение и типы прерываний. Механизм прерываний
Изучение понятия, векторов и механизмов обработки прерываний; их классификация в зависимости от источника происхождения. Особенности реагирования аппа...

Разработка модуля ввода сигналов с термосопротивлений в стандарте VME
Аналого-цифровой преобразователь, дешифратор адреса, запросчик прерываний. Устройство ввода сигналов с термосопротивлений. Поддержка протокола шины пр...

Организация прерываний в ЭВМ
Проектирование механизма обработки прерываний. Контроллер прерываний Intel 82C59A. Ввод-вывод по прерыванию. Программируемый контроллер интерфейса Int...

Обработка и вставка книжного блока
Настоящее издание охватывает следующие допросы брошюровочно-переплетного дела: 1) обработка книжного блока, начиная с заклейки и обрезки и кончая накл...

Аппаратное и программное обеспечение ПК
Базовая аппаратная конфигурация персонального компьютера. Устройства, находящиеся внутри системного блока. Управление работой жесткого диска. Техничес...