Ячейки памяти, используемые для прерываний RS232 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ячейки памяти, используемые для прерываний RS232



Таблица 6.

 

При использовании запрещенного кода функции происходит простой возврат управления. Сохраняются все регистры, кроме тех, которые возвращают значение.

НАЗНАЧЕНИЕ: прикладная программа может использовать INT 14h для прямого выполнения функций ввода-вывода на RS232.

В таблице 7 приведен перечень функций, выполняемых по команде INT 14h.

Прерывания остаются разрешенными. Маска для прерываний интерфейса и порт управления для прерываний RS232 не изменяются.

Таблица 7.

Функция 00h Инициализировать RS232(Таблицы 8, 9).

 

В функции указывается длина слова, число стоповых разрядов, тип паритета и скорость передачи для заданного порта.

Хотя BIOS поддерживает четыре средства RS232, при инициализации после включения питания BIOS ищет только порты 1 и 2. Для использования портов 3 и 4 пользователь должен установить базовые адреса интерфейсного порта в ячейки памяти 0040:0004h и 0040:0006h соответственно.

 

 

ВХОДНЫЕ ПАРАМЕТРЫ:

AH = 00h,

AL - конфигурация порта,

DX - номер RS232 (0-3).


Таблица 8.

Таблица 9.

Функция 01h Передать символ (Таблицы 10, 11).

INT 14h, AH = 01h выводит символ на заданный RS232.

ВХОДНЫЕ ПАРАМЕТРЫ:

AH = 01h,

AL - символ, который необходимо передать (00h...FFh),

DX - номер RS232 (0-3).

 

Таблица 10.

ВЫХОДНЫЕ ПАРАМЕТРЫ:

AH - состояние линии (см. определение для INT 14h, AH = 03h).

Таблица 11.

Функция 02h Принять символ (Таблицы 12, 13).

INT 14h, AH = 02h принимает символ с заданного RS232.

ВХОДНЫЕ ПАРАМЕТРЫ:

AH = 02h,

DX - номер RS232 (0-3).

ВЫХОДНЫЕ ПАРАМЕТРЫ:

AH - состояние линии (определение см. INT 14h, AH = 03h),

AL - символ, который принят (00h - FFh).


Таблица 12.

Таблица 13.

Функция 03h Определить состояние интерфейса (Таблицы 14-17).

INT 14h, AH = 03h считывает регистры модема и состояния линии заданного RS232 и помещает эти значения в выходные регистры.

ВХОДНЫЕ ПАРАМЕТРЫ:

AH = 03h,

DX - номер RS232 (0-3).

ВЫХОДНЫЕ ПАРАМЕТРЫ:

AH - состояние линии,

AL - состояние модема.

Таблица 14.

Таблица 15.

Таблица 16.

Таблица 17.


6.8.8 Основы программирования контроллера последовательного интерфейса

Программное обеспечение контроллера состоит из следующих частей:

· инициализация контроллера;

· передача одного байта в канал связи;

· прием одного байта из канала связи;

· обработка прерывания, порожденного контроллером;

Перед началом обмена данными по каналу передачи выполняется начальная инициализация контроллера последовательного интерфейса.

 

Инициализация контроллера

1. Определить базовый адрес контроллера

 

mov AX, 0040; сегментный адрес данных BIOS

mov ES, AX; загрузить сегментный регистр

mov DX,ES:[00000h]; выбрать базовый адрес

; контроллера

 

2. Запретить прерывания от контроллера последовательного интерфейса. Для этого достаточно записать в соответствующий бит регистра IMR (регистр маски прерываний) программируемого контроллера прерываний значение 1:

 

mov AH, 01

shl AH, 04; загрузить маску для IRQ4

cli; запретить прерывания

in AL, [21]; считать значения регистра

; IMR

or AL, AH; установить в 1 бит для IRQ4

out [21], AL; записать значение IMR

nop; задержка

nop

sti; разрешить прерывания

 

3. Загрузить делитель программируемого генератора. Для этого необходимо сначала установить в 1 бит DLAB регистра LCR и затем загрузить младший и старший байт делителя:

 

add DX, 0003; адрес регистра LCR

mov AL, 80; значение бита DLAB

out DX, AL; установить регистр LCR

nop

nop

sub DX, 0003; адрес LSB делителя

mov AX, 0030; значение делителя для

; скорости

; 2400 бод

out DX, AL; записать LSB делителя

nop

nop


inc DX; адрес MSB делителя

mov AL, AH; значение MSB делителя

out DX, AL; записать MSB делителя

nop

nop

dec DX; базовый адрес контроллера

 

4. Установить необходимое значение регистра LCR:

add DX, 0003; адрес регистра LCR

mov AL, 03; значение регистра LCR:

; - длина символа 8 бит

; - нет контроля четности

; - бит DLAB имеет значение 0

out DX, AL; - записать значение в регистр

; LCR

nop

nop

sub DX, 0003; - базовый адрес контроллера

 

5. Установить необходимое значение регистра MCR. В этом примере программирование последовательного интерфейса без использования прерываний:

add DX, 0004; адрес регистра MCR

sub AL, AL; установить управляющие

; сигналы

; модема в 0

out DX, AL; записать значение в регистр

; MCR

nop

nop

sub DX, 0004; базовый адрес контроллера

 

6. Установить необходимое значение регистра IER.

inc DX; адрес регистра IER

sub AL, AL; контроллер не порождает

; прерывания

out DX, AL; записать значение в регистр

; IER

nop

nop

dec DX; базовый адрес контроллера

 

 



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 120; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.143.218.146 (0.017 с.)