Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Булатов В.Н. Архитектура микропроцессороной системы, состав машинных команд и основы программирования микропроцессорной .pdf
Скачиваний:
97
Добавлен:
02.05.2014
Размер:
7.1 Mб
Скачать

OUT DX,AL

; нены по схеме «монтажное ИЛИ» (рисунок 27).

SUB DX,+4

; Сбросить флаг RxRDY, если он случайно взвелся,

IN AL,DX

; чтением приемника (исключаем ложный INT).

MOV AL,01

; Разрешить установление INT

INC DX

; по окончанию приема символа в приемник (то есть,

OUT DX,AL

; по флагу RxRDY).

RET

;

Пример 2 —Составить подпрограмму вывода символа из регистра DL в порт СОМ1.

Как и в случае с LPТ, прежде, чем вывести символ, надо убедиться в готовности устройства. В данном случае, эта готовность выражается в том, что передатчик пуст (TxE=1) или пуст буфер передатчика (TxRDY=1). В нашем примере устраивает любой вариант.

MOV DX,3FD

; Читаем

M1: IN AL,DX

 

; регистр состояния линии

AND AL,20

; и анализируем занятость (RxE=0);

JZ M1

; если занято, то снова чтение.

ADD DX,+5

; Подготавливаем адрес передатчика

MOV AL,DL

; и выводим туда

OUT DX,AL

; байт данных из регистра DL.

RET

 

;

16 Программируемый таймер

с

8254.

:

три

,

29).

Имя

Счетчик

Счетчик

Счетчик

РУС

таймера

Каждый счетчик имеет выведенные наружу два входа и один выход: Сi —вход счетный по переднему фронту (предельная частота 2,5 МГц); СЕi —разрешение счета, если СЕ=1;

OUTi —выход.

102

Рисунок 29 —Архитектура таймера 8253

Все режимы можно разбить глобально на две группы:

а) режим деления частоты сигнала, поступающего на вход Сi; б) формирование временного интервала.

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

16.1 Режим 0 (задержанный запрос на прерывание)

При загрузке управляющего слова в регистр режима канала на выходе ОUT устанавливается напряжение низкого уровня; загрузка счетчика не изменяет это состояние. Затем начинается декремент счетчика (последовательное вычитание из него единицы). В момент, когда счетчик обнулится, на выходе OUT установливается напряжение высокого уровня и сохраняется до загрузки счетчика новым значением. Счет возможен только при наличие сигнала высокого уровня на входе СЕ. Низкий уровень этого сигнала или ниспадающий фронт запрещают счет.

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

16.2 Режим 1 (ждущий мультивибратор)

На выходе OUT формируется отрицательный импульс длительностью t=n×T, где n —число, загруженное в счетчик, T —период тактовых импульсов. Низкий уровень на выходе OUT устанавливается со следующего такта после подачи на вход СЕ сигнала высокого уровня.

Загрузка в счетчик нового числа не влияет на длительность текущего импульса, а учитывается при следующем запуске. Перезапуск счетчика производится нарастающим фронтом входа GATE (без перезагрузки счетчика). Минимальное допустимое n=1.

16.3 Режим 2 (делитель частоты со сквозным переносом)

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

103

16.4 Режим 3 (делитель частоты с выходным сигналом «меандр»)

В этом режиме положительный уровень выходного сигнала занимает первый полупериод, а отрицательный —второй полупериод. Точнее, если n (начальное значение счетчика) четно, то длительность положительного и отрицательного полупериодов равна n×T/2; если же n нечетно —то (n+1)×T/2 и (n-1)×Т/2 соотвественно. Низкй уровень сигнала на входе СЕ запрещает счет, на выходе OUT устанавливается сигнал высокого уровня. Высокий уровень СЕ разрешает счет, а нарастание его запускает счетчик от начального состояния. Отметим, что n=3 в этом режиме недопустимо. Непредсказуем результат при загрузке в счетчик при СЕ=1.

16.5 Режим 4 (одиночный строб с программным запуском)

При обнулении числа, загруженного в счетчик, на выходе OUT формируется отрицательный импульс длительностью один такт. Запись в счетчик во время счета младшего байта не влияет на текущий счет, а запись старшего байта перезапускает счетчик. Низкий уровень входа СЕ запрещает счет, высокий —разрешает. Минимальное допустимое значение счетчика равно 1.

16.6 Режим 5 (одиночный строб с аппаратным запуском)

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

16.7 Временные диаграммы таймера

Временные диаграммы таймера приведены на рисунках 30 — 35.

Рисунок 30 —Режим 0

104

Рисунок 31 —Режим 1

Рисунок 32 —Режим 2

105