Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_2011.doc
Скачиваний:
64
Добавлен:
09.12.2018
Размер:
1.15 Mб
Скачать
  1. Использование прерываний 8h для управления запуском программ

Импульс от таймера поступает на вход irq0 контроллера прерываний. Контроллер вырабатывает прерывание int 8h , которое вызывает резидентную программу. Обработчик прерывания добавляет 1 в счетчик текущего времени, вызывает пустое прерывание 1Ch и прекращает работу.

В составе операционной системы имеется пустое прерывание, которое можно заполнить нужной процедурой. Например, реализовать запуск внешних программ в определенные моменты времени.

Пример.

Прерывание 1Ch выполняет запуск задачи в определенный момент времени.

alarm proc far

push ax ; сохранение регистров ax, cx, dx, так как

push cx ; после выполнения они могут быть затерты

push dx

mov ax, 0

int 1Ah ; считывание текущего счетчика времени

mov cx, count ; в cx записывается время запуска программы

cmp dx, cx ; в dx записано текущее время

jne exit ; если не равно, то выход из процедуры

int xxh ; если равно. то запуск другой резидентной программы

exit:

pop dx ; восстановление сохраненных регистров

pop cx

pop ax

iret

alarm endp

  1. Программирование коммуникационного порта (com)

Команда записи в порт

out <порт>, al

Команда чтения порта

in al, <порт>

Порт (номер порта) может быть указан непосредственно в формате числа или загружен в регистр dx (если число превышает 255).

Регистр al должен быть загружен параметром при передаче в порт или быть приемником при чтении порта

Микросхема uart 8250

Относительный адрес

Регистры

Адрес

In/Out

Бит 7

0

              1. Регистр хранения передатчика

3F8h

Out

0

0

Регистр данных приемника

3F8h

In

0

0

Регистр делителя скорости (мл.разр)

3F8h

Out

1

1

Регистр делителя скорости (ст.разр)

3F9h

Out

1

1

Регистр разрешения прерываний

3F9h

Out

0

2

Регистр идентификации прерываний

3FAh

In

0

3

Регистр управления

3FBh

Out

0

4

Регистр управления модемом

3FCh

Out

0

5

Регистр статуса линии

3FDh

In

0

6

Регистр статуса модема

3FEh

In

0

Базовый адрес порта COM1 записан в оперативной памяти по адресу 40h:00h

Инициализация порта

Установка скорости работы порта

В таблице даны коды для установки скорости работы порта

Таблица

Скорость

бит/с

Порт 3F9h

старший

Порт 3F8h

младший

100

04h

17h

300

01h

80h

600

00h

C0h

1200

00h

60h

1800

00h

40h

2400

00h

30h

3600

00h

20h

4800

00h

18h

9600

00h

0Ch

Определение параметров сигнала (байта)

Порт позволяет сформировать 5, 6, 7, 8 – разрядный “байт”.

Для установки параметров байта используется регистр управления. Он имеет следующую структуру:

Для определения числа бит в старт-стопном сигнале используются биты 0 и 1 регистра управления:

«0 0» 5 разрядов

«0 1» 6 разрядов

«1 0» 7 разрядов

«1 1» 8 разрядов

Бит 2 – определяет количество разрядов в стоповом сигнале

«0» один стоповый бит

«1» два стоповых бита

Бит 3 – устанавливает формат сигнала на выходе порта

«0» нет бита контроля четности (9-й бит в сигнале отсутствует)

«1» есть бит контроля четности

Бит 4 – определяет правило контроля

«0» контроль на нечетность (нечетное количество единиц в байте)

«1» контроль на четность (четный паритет)

Бит 5 – может быть применен на усмотрение программиста

«0» отмена фиксации четности (нормальный режим)

«1» фиксация четности.

При установки бита 5=1 состояние бита четности зависит от бита 4:

Состояние

бита 4

Бит четности

в сигнале

1

0

0

1

Бит 6 – установка перерыва связи

Бит 7 – меняет доступ к портам, имеющим одинаковые адреса (см таблицу)

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