Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOS.doc
Скачиваний:
12
Добавлен:
21.12.2018
Размер:
1.25 Mб
Скачать

Вопрос 26. Обработка прерываний от rs-232, клавиатуры, таймера.

Прерывания от таймера

  1. Пользовательское (1С)

  2. Системное (08h)

Системное прерывание вызывается каждые 55 мс. С помощью них система отслеживает время, дату и т.д. В конце прерывания 08h стоит безусловный вызов пользовательского прерывания по таймеру 1С. Стандартный обработчик пользовательского прерывания по таймеру состоит только из одной команды IRET.

55мс=18,2 раза в секунду. Если нужно через 2 секунды, сохраняет 1С, а затем в глобальной переменной делаем счетчик =0, затем инкрементируем. Пороговое значение -36.

RS-232

Асинхронная связь, передаем и принимаем информацию по 1 биту, временной интервал между передаваемыми байтами несущественны, но между отдельными битами байта время критично. Сигнал на последовательной линии можеть быть 0 или 1, то есть +12В или -12В.

Базовый адрес 3F8 и 2F8 – фактически точки отсчета.

3F8 – регистр (хранения передатчика, при установке в ноль седьмого бита регистра 3F8, он же может являться регистром данных приемника, при установке в единицу седьмого бита 3F8 является младшим делителем.

3F9: регистр разрешения прерывания при установке седьмого бита 3F0 в ноль.

3FA – регистр идентификатора прерываний.

3FB – регистр управления линией.

3FC – регистр управления модемом.

3FD – регистр статуса линии.

3FE – регистр управления модемом.

Мы должны установить параметр соединения: длина слова, скорость обмена, четность и количество битов.

1190000-частота системных часов.

Биты 0 и 1 регистра 3FB – длина символа: 00-5бит, 01-6бит, 10-7бит, 11-8бит.

Количество стоповых битов, 0-1 бит.

1 – стоповых бита два или полтора. (Не задумывайтесь над этим. (с) Горелов В.В.)

3 бит – четность (1-генерировать бит четности, 0 – не генерировать)

4 бит – тип четность (0-нечетная, 1 – четная)

7 бит – меняет назначение регистра.

MOV AV, 3F8h

MOV DX,AX

ADD DX,3

MOV AL,10000000b

OUT DX,AL

SUB DX,2

MOV AL,0

OUT DX,AL

MOV AL,60h

OUT DX,AL

MOV AL,0

OR AL,10b

OR AL,000b

OR AL,1000b

OR AL,10000b

ADD DX,3

OUT DX,AL

Существует два способа, которыми программа может определять, как ей работать с контроллером (по опросу или по прерываниям).

SUB DX,2

MOV AL,0 – запретить все прерывания

OUT DX,AL - записать в порт значения

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

Бит 0 установлен в 1, когда получен символ. Бит 1 установлен в 1, если полученные данные были перезаписаны (успели считать символ или нет). Бит 1 устанавливается в 1 при ошибке четности. Регистр хранения передатчика пуст, в бит 5 ставим 1(когда символ передан и можно писать следующий).

Физически есть 6 линий, по которым компьютер и модем соединяются друг с другом. DTR (Data Terminal Ready) – готовность компьютера информировать модем, что компьютер включен и готов к связи. Компьютер устанавливает сигнал DTR и говорит модему, что нужно связать с удаленной станцией. Затем компьютер устанавливает DSR (Data Set Ready). Затем RTS (Request To Send) – запрос на посылку. Модем должен ответить CTS (Clear To Set) – готов начать процедуру передачи данных, после чего информация может быть принята.

Две стандартные линии, по которым компьютер может управлять модемом, доступны через регистр контроля модема, адрес которого на 4 больше базового, его значения:

  • Бит 0 в единице, если готовность компьютера активна;

  • Бит 1 в единице, если запрос на посылку активен;

  • Бит 4 в единице, если выход микросхемы замкнут на вход.

Четыре линии, по которым модем посылает информацию компьютеру, управляются регистром статуса модема – адрес на 6 больше базового. Значения бит:

  • Бит 0 в единице, было изменение CTS;

  • Бит 1 в единице, если изменилось DSR;

  • Бит 4 в единице, если CTS активен;

  • Бит 5 в единице, если DSR активен.

Программа постоянно проверяет значения данного регистра, чтобы определить, началась ли передача данных, продолжается или окончена.

Младшие биты сбрасываются в ноль при чтении регистра.

Микросхема допускает 4 класса прерываний:

2 аппаратных:

  • IRQ3 – для COM1;

  • IRQ4 – для COM2.

Коды, содержащиеся в 1 и 2 битах регистра идентификации прерывания, адрес порта, который на 2 больше базового, кодируется следующим образом:

  • 00 – изменения в регистре статуса модема;

  • 01 – регистр хранения передатчика пуст;

  • 10 – получены данные;

  • 11 – ошибка на приеме.

Чтобы выбрать одно или более прерываний, нужно запрограммировать регистр разрешения прерывания. Бит 0 устанавливается в единицу, если хотим генерировать прерывание при получении данных. Бит 1 в единицу, когда регистр хранения передатчика пуст, бит 2 в единицу при ошибке на приеме, бит 3 в единицу при изменении статуса модема. Если установлен один или несколько бит в данном регистре, то микросхема 8259А будет генерировать прерывания по IRQ3,IRQ4, которые будет поступать в микросхему 8259А. Если прерывания разрешены, будет вызвана соответствующая подпрограмма обработки. Она может быть стандартной, либо наша собственная.

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