Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Цифровые устройства и микропроцессоры

.pdf
Скачиваний:
516
Добавлен:
09.06.2015
Размер:
3.6 Mб
Скачать

120

переключения регистров (SHIFT) и клавиши управления (CОNTRL). Кодовое слово имеет формат, представленный на рис. 50.

CОNTRL

SHIFT

R

R

 

R

C

 

C

C

 

 

 

Позиция строки

 

 

Позиция столбца

 

(адрес сканирующей линии)

(адрес возвратной линии)

Рис. 50. Формат кодового слова

Врежиме сканирования сенсорной матрицы датчиков сигналы с возвратных линий RET запоминаются в строке памяти ОЗУ клавиатуры и датчиков (FIFO), соответствующей адресу сканирования. При этом потенциалы со входов SHIFT и CNTR не вводятся. Память FIFO хранит копию состояния датчиков. Этот режим удобен, когда информация от нескольких устройств вводится посредством опроса каждого устройства по линиям сканирования.

Врежиме «стробируемый ввод» по перепаду сигнала на линии CO/STB из нуля в единицу содержимое линий RET заносится в ОЗУ клавиатуры и датчиков.

Во всех трёх случаях появление информации в ОЗУ приводит к выработке сигнала запроса прерывания INT.

INT – сигнал запроса прерывания, поступающий на микропроцессор.

Управление вводом – выводом осуществляется с помощью сигналов CS,

А0(INS/D), RD и WR. Они управляют считыванием и записью данных в различные внутренние регистры и буферы.

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

мации через двунаправленный канал данных D0-D7.

RD – чтение, подключается к соответствующему сигналу микропроцессорной системы при передаче информации через двунаправленный канал

данных D0-D7.

D0-D7 – двунаправленная восьмиразрядная шина данных для связи контроллера с микропроцессором.

СS – выбор микросхемы, подключается к ША прямо или через дешифратор

А0 (INS/D) – определяет характер информации, выдаваемой или запрашиваемой микропроцессором, т.е. это– вход «команда/данные». Если на этом входе «1» – выбирается регистр команды (запись) или регистр состояния (считывание); если на нём «0» – регистр данных. Вход подключается к младшему разряду ША.

В таблице 23 приводится информация о совместном использованием выводов CS, RD, WR и A0(INS/D).

121

Кроме указанных выводов в контроллере есть вход сигнала начальной установки (сброса) контроллера, имеющий разные варианты обозначений в справочниках.

SR (RES, CRL) – сброс. Логическая единица на этом входе автоматически устанавливает в контроллере следующее:

тип индикатора – 16-ть 8-разрядных символов, левый вход; тип клавиатуры – сканируемая, запрет одновременного нажатия нескольких клавиш;

внутренний делитель тактовой частоты, автоматически устанавливается деление на 31.

 

 

 

 

Таблица 23

 

 

 

INS/D

Передача

CS

RD

WR

A0

0

1

0

0

ШД → в буфер регистра данных

0

1

0

1

ШД → в регистр управления

0

0

1

0

Буфер регистра данных → на ШД

0

0

1

1

Регистр состояний → на ШД

1

Х

Х

Х

Высокоимпедансное состояние

Дисплейная часть. Индикаторная часть имеет своё ОЗУ 16х8 бит, которое также можно использовать как два ОЗУ 16х4 бита. Оно хранит воспроизводимые на индикаторе символы, загружается и опрашивается МП. Индикаторная часть работает в режиме сканирования индикаторов на светодиодах, жидких кристаллах или простых лампочках.

Регистры адреса ОЗУ отображения содержат:

адрес слова в ОЗУ, записываемого или опрашиваемого процессором; адреса двух 4-битовых цифр, воспроизводимых на индикаторах в данный момент.

Адрес в регистр адреса записывается с помощью команды «Запись в индикаторное ОЗУ» (команда № 4). Команда может сделать так, чтобы адреса автоматически увеличивались или уменьшались после каждого считывания или записи.

Каждый адрес памяти ОЗУ отображения соответствует одному разряду индикатора, причем нулевой адрес относится к нулевому разряду.

Для индикации символов сначала выдается приказ записи в память индикатора, а затем выводятся в нее данные. После этого процессор освобождается от проблем, связанных с регенерацией, и контроллер начинает вывод на индикаторы. При этом ВВ79 по линиям S0 –S3 выдает адреса выбора разрядов, а по линиям DSPA(3-0) и DSPB(3-0) (в ряде справочников эти выводы обозначены как OUT A0 - A3 и OUT B0-B3) – выводимые символы.

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

122

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

Информация на выходах DSPA (3-0) канала А соответствует разрядам Д74 канала данных, а на выходах DSPB (3-0) – разрядами Д30.

DSPA (3-0), DSPB (3-0) – вывод на индикацию. Данные с этих линий используются для динамической индикации, они синхронизируются линиями

ST0-ST3.

Два 4-битовых порта (А и В) могут использоваться и быть погашены независимо друг от друга. Порты А и В могут рассматриваться как один 8- битовый порт. В последнем случае DSPB0 соответствует разряду Д0 на ОЗУ, т. е. это самый младший разряд индицируемого байта, DSPA3 – самый старший, соответствует разряду D7.

Следует обратить внимание, что индикатор управляется теми же сканирующими выходами S0 - S3, что и клавиатура. Поэтому в режиме с внутренней дешифрацией счетчика сканирования два младших бита дешифрируются внутри микросхемы и обеспечивают индикацию лишь первых 4-х знаков из содержащихся в индикаторном ОЗУ.

BD – выход сигнала гашения отображения, имеющий длительность не менее 150 мкс. Используется для гашения индикации во время переключения знаков на индикаторе или при исполнении команды «гашение индикации».

Состояние FIFO отображается в регистре состояния, его формат приведён на рис. 52. Биты 0, 1 и 2 показывают число находящихся в FIFO байт, а бит 3 говорит о заполнении FIFO. Биты 4 и 5 фиксируют антипереполнение (попытка считать из пустой памяти) и переполнение (попытка ввести символ в переполненную память). Бит 6 – показывает замыкание, когда контроллер находится в режиме матрицы датчиков. Бит 7 – говорит о доступности индикатора. Используя слово состояния контроллера, можно организовать работу с микропроцессором по опросу. Для этого командой IN считывается слово состояния и проверяется бит 3 в этом слове.

123

 

 

 

 

124

 

 

 

D 7

D 6

D 5

D 4

D 3

D 2

D 1

D 0

Доступ

 

 

 

 

 

 

 

к ОЗУ отображ.

 

 

 

 

 

 

 

прекращен.

 

 

 

 

 

 

 

 

 

 

 

Число символов в ОЗУ

 

 

 

"1" - Ошибка (переопустошение)

 

 

 

"1" - Ошибка (переполнение)

 

Реж.матрицы датч.

 

Реж.сканирован.клавиатуры

 

 

"1" -Ошибка (одновременное нажатие

 

"1" - Ключ замкнут

 

 

2-х или более клавиш)

 

 

Рис.52. Слово состояния контроллера индикатора и клавиатуры

На рис. 51 показан один из вариантов подключения к контроллеру 64-клавишной клавиатуры и 8-разрядного семисегментного индикатора. Клавиатура и индикатор сканируются и регенерируются под управлением сигналов выбора S0-S2 / Выход S3 не подключен, так как индикатор имеет только восемь разрядов. Выходы обоих дешифраторов имеют активные сигналы низкого уровня. Один дешифратор выбирает строку клавиатуры, а другой разрешает один из 8-разрядных дисплеев.

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

Для программирования используются восемь команд, приведённых в конце раздела. Перед программированием в контроллер нужно подать сигнал сброса SR(RESET), этот аппаратный сигнал на ОЗУ клавиатуры и ОЗУ дисплея влияния не оказывает, память в исходное состояние устанавливается программно. Три старших бита в командах определяют ее тип (ее код), а смысл остальных зависит от кода.

Команда № 0 определяет режимы ввода с клавиатуры (D0-D2) и вывода на индикацию (D3,D4). В команде разряд D0 определяет вид дешифрации: «0» – внешняя дешифрация (кодированное сканирование), «1» – внутренняя дешифрация (дешифрированное сканирование). Назначение всех остальных разрядов в команде достаточно понятно объяснено в таблице приложения.

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

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

Команда №1 – команда установки тактовой частоты. Она используется для согласования цикла синхронизации процессора с контроллером и обеспечивает требуемую скорость сканирования клавиатуры и дисплея. Поле D4-

125

D0 содержит двоичный код коэффициента деления P программируемого делителя частоты, который, как правило, выбирается так, чтобы частота внутренней синхронизации равнялась 100 кГц.

Команда № 2 – чтение памяти клавиатуры и датчиков. Она определяет, что будет вводиться байт из памяти FIFO. Если контроллер находится в режиме датчиков, команда показывает, какая строка считывается. Команда подается до ввода данных из FIFO. Биты D0-D2 и D4 – нужны только для матрицы датчиков, а при сканировании всегда считывается байт, который был помещен в FIFO первым.

Команда № 3 – чтение индикаторного ОЗУ.

Команда № 4 – запись в память индикатора. Она показывает, что в буферный регистр данных будут помещаться данные в память индикатора. Команду необходимо выдать до того, как процессор будет выводить в контроллер индицируемые символы.

Команда № 5 – гашения и блокировки записи в индикаторное ОЗУ. Можно раздельно заблокировать запись 4-битовых цифр в порты А и В. Если пользователь хочет погасить индикатор, используются разряды D0 и D1 команды.

Команда № 6 – «Сброс» или «Очистка» – очищает содержимое индикаторного ОЗУ. Эта команда определяет значение символа, который потом будет использоваться как пробел. Разряд D4 – разрешение очистки индикатора. Во время очистки (≈ 160 Мкс) в контроллер нельзя записывать данные. Все это время разряд D7 слова состояния удерживается в значении «1». Когда доступ свободен, этот разряд автоматически сбрасывается в 0. По разряду D0 производится полная очистка, при которой происходит сброс и перезапуск внутренних цепей синхронизации.

Команда № 7 – Команда сброса прерываний. Состояние разрядов D0-D3 – безразлично. В режиме сканирования сенсорной матрицы датчиков эта команда сбрасывает в «0» выход INT и разрешает дальнейшую запись информации в ОЗУ датчиков. В режиме независимого восприятия клавиш при D4=1 включается специальный режим обнаружения ошибок. В этом режиме при нажатии нескольких клавиш блокируется запись символов во входное ОЗУ.

Рассмотрим пример программирования контроллера. Предположим, что он подключен к клавиатуре и многоразрядному индикатору в соответствии с рис. 51, имеет адреса 78h и 79h, выход запроса прерывания не используется, т.е. предполагается работа по опросу за счет чтения слова состояния контроллера. Вначале необходимо инициализировать контроллер, посылая в регистр управления приказ установки режима. Используем команду № 0. Запрограммируем контроллер в режим кодированного сканирования клавиатуры с 2-клавишной блокировкой и режим ввода слева 8-разрядного индикатора.

MOV AL, 0

OUT 79h, AL

126

Символы, сформированные нажатыми клавишами, можно считать через память FIFO.

Далее рассмотрим фрагмент программы, в котором применяется программный ввод-вывод (работа по опросу) для ввода 10 кодовых слов и запоминания их в массиве MASS (первый байт находится по старшему адресу).

MOV SI, 0Ah

MOV AL, 01000000B OUT 79h, AL

MET1: IN AL, 79h TEST AL,0Fh JZ MET1

IN AL,78h

MOV MASS[SI-1], AL DEC SI

JNZ MET1

Первая команда инициализирует счётчик в SI, следующие две сообщают, что будет произведён ввод информации из FIFO. Следующие три команды, начиная с метки MET1, заставляют процессор ожидать готовности ввода, проверяя слово состояния контроллера, а находящиеся за ними две команды передают введённые данные в MASS. Последние две команды вызывают повторение последовательности до тех пор, пока не будут введены 10 символов.

Для индикации символов процессор сначала должен выдать приказ записи в память индикатора, а затем выводить в нее данные. Следующий фрагмент индицирует восемь цифр, которые хранятся в памяти начиная с SVET (младшая цифра хранится по меньшему адресу):

MOV SI, 8

MOV AL, 10010000B OUT 79h, AL

AGAIN: MOV AL, SVET[SI-1] OUT 78h, AL

DEC SI JNZ AGAIN

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

0. Команда установки режима клавиатуры – дисплея

127

1.Команда установки тактовой частоты

2.Команда чтения ОЗУ клавиатуры и датчиков

3–4. Команды чтения и записи индикаторного ОЗУ

 

 

 

 

128

 

 

 

 

Запись

1

0

0

 

 

 

 

 

Чтение

0

1

1

D4

D3

D2

D1

D0

Флаг инкрементирования

Адрес строки

При D4 =1 адрес увеличивается на 1

5. Команда гашения – запрета записи отображения

6. Команда «Сброс»

1 1 0 D4 D3 D2 D1 D0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"1" Программный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сброс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"1" Сброс рег.слова

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

состояния и

Код на выходах

 

Код

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

прерывания

DSPA(3-0)

DSPB(3-0)

D4

D3

D2

 

 

 

 

 

 

 

 

 

 

 

 

0000

0000

0

0

Х

 

 

 

 

 

 

 

 

 

0010

0000

0

1

0

 

 

 

 

 

 

 

 

 

 

1111

1111

0

1

1

 

 

 

 

 

 

 

 

 

 

Код в ОЗУ

 

Код

 

отображ.

D4

D3

D2

 

 

0000

0000

1

0

Х

0010

0000

1

1

0

1111

1111

1

1

1

129

7. Команда «Сброс прерывания»

Лекция № 16

5.7. Контроллер прямого доступа к памяти I 8237 (К1810ВТ37)

Общие принципы организации ПДП. Режим ПДП является самым ско-

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

1)принять запрос DREQ на ПДП от ВУ;

2)сформировать запрос HRQ на захват шин для ЦП,

3)принять сигнал HLDA, подтверждающий этот факт после того, как ЦП войдет в состояние захвата (ШД, ША, ШУ в z-состоянии);

4)сформировать сигнал DACK, сообщающий ВУ о начале выполнения циклов ПДП;

5)сформировать на ША адрес ячейки памяти, предназначенный для об-

мена;

6)выработать сигналы MR, IOW и MW, IOR, обеспечивающие управление обменом;

7)по окончании ПДП либо повторить цикл ПДП, изменив адрес, либо прекратить ПДП, сняв запросы на ПДП.

Циклы ПДП выполняются с последовательно расположенными ячейками памяти, поэтому контроллер ПДП должен иметь счетчик адреса ОЗУ. Число циклов ПДП определяется специальным счетчиком. Управление обменом осуществляется специальной логической схемой, формирующей в зависимости от типа обмена пары управляющих сигналов: MR, IOW (циклы чтения), MW, IOR (циклы записи).

Из изложенного следует, что контроллер ПДП по запросу должен взять на себя управление системными шинами и выполнять совмещенные циклы чтения / вывода или записи/ввода до тех пор, пока содержимое счетчика циклов ПДП не будет равно нулю. На рис. 53 показана структурная схема МПС с контроллером ПДП.