5 Организация ввода и отображения данных в мпс
Скачать 0.52 Mb.
|
RD, BD, OUTA и OUTB устанавливается сигнал низкого уровня. Если аппаратный сброс (подача сигнала RESET) выполняется после записи управляющего слова CW0 “Установка режима работы интерфейса клавиатуры и индикации”, то в общем случае необходимо заново программировать режимы работы ВВ79, так как по умолчанию программируемый интерфейс настраивается на режим кодированного сканирования клавиатуры с запрещением ввода двух и более одновременно нажатых клавиш (режим стандартной клавиатуры), а также на вывод информации на 16-разрядную индикацию с разрешением ввода символов слева направо (начиная со старших разрядов). Также источником чтения назначается М-ОЗУ, что соответствует загрузке управляющего слова CW2. Отметим, что при аппаратном сбросе содержимое ячеек ОЗУИ и М-ОЗУ клавиатуры не обнуляется.STB, а по линиям RET7-RET0 с клавиатуры поступает непосредственно код клавиши, т.е. формирование кода клавиши осуществляется в блоке клавиатуры и его выдача сопровождается формированием сигнала C0/WR, A0 в режимах записи и чтения. CS, Определение факта нажатия клавиши на клавиатуре. Нахождение номера (кодового слова) нажатой клавиши. Осуществление передачи управления на соответствующую подпрограмму преобразования кода клавиши в код символа (кодогенератор) (решается программными или аппаратными средствами). Программируемый контроллер клавиатуры и индикации ввод информации (по прерыванию) в МПС с помощью матрицы клавиш или датчиков; вывод информации на 8- или 16-разрядный алфавитно-цифровой (цифровой) индикатор |
Тип информации определяется значением разряда адреса порта ПККИ А0. Если А0=1, то записываемая в ПККИ информация является кодом управляющего слова CW, а считанная - кодом слова состояния ПККИ (PSW). Если А0=0, то записываемая и считываемая информация является словом данных ПККИ.
Регистры управляющих слов служат для записи и хранения управляющих слов CW, определяющих режимы работы ПККИ, а с помощью схем управления и синхронизации производится их дешифрация и выработка сигналов, которые управляют функционированием всех узлов БИС. Кроме того, с помощью 5-разрядного регистра коэффициента пересчета, вычитающего счетчика с предустановкой и 10-разрядного счетчика (четыре старших разряда которого выполняют функции счетчика сканирования) схема управления и синхронизации делит внешнюю частоту синхросерии CLK, поступающей на вход ПККИ от ГТИ микропроцессора на К (К - число, записанное в регистр коэффициента пересчета), так как внутренняя частота синхронизации должна быть не более 100 кГц, что обеспечивает время просмотра (сканирования) клавиатуры за 5,12 мс и время ожидания успокоения дребезга контактов - 10,24 мс (два цикла сканирования). При этом тактовая частота внешнего генератора импульсов Тclk <= 2 МГц, а длительность такта внутренней синхронизации составляет 10 мкс.
Схема управления и синхронизации также вырабатывает синхросигнал на выход
кодированном (обычного двоичного счета);
декодированном (режим сдвигового регистра с бегущим нулем).
количество символов в очереди FIFO, кроме режима анализа матрицы датчиков (разряды D3-D0), причем значение разряда D3=1 используется как признак (флажок) того, что М-ОЗУ заполнено;
признаки ошибок обращения при записи в заполненное М-ОЗУ (D5) или попытки чтения микропроцессором из М-ОЗУ, не содержащего информации (D4) (FIFO пуст);
признак “Неготовность дисплея” (разряд D7) устанавливается и сигнализирует об ошибке при вводе данных в ОЗУИ, указывая на запрет доступа (записи) к ОЗУ индикации, когда выполняется команда CW6 “Программный сброс” формата записи константы в ОЗУИ или CW5 “Запрет записи в ОЗУ индикации - гашение” по обоим каналам (А и В) ОЗУИ;
признак S/E (разряд D6) устанавливается в зависимости от режима работы контроллера:
в режиме “Анализа матрицы датчиков”, если обнаружено изменение состояния хотя бы одного датчика по сравнению с предыдущим циклом сканирования с блокированием дальнейшей записи в М-ОЗУ;
в режиме игровой клавиатуры с запрещением одновременного нажатия двух и более клавиш (или специального анализа ошибки), если обнаружено одновременное срабатывание двух и более клавиш с блокированием дальнейшей записи в М-ОЗУ.
Начальная установка БИС ВВ79 (настройка) осуществляется загрузкой управляющего слова CW0 “Установка режима работы интерфейса клавиатуры и индикации”, причем значение на входе А0=1. Блоки интерфейса клавиатуры и индикации хотя и используют для сброса общий счетчик сканирования, функционируют независимо и устанавливаются после загрузки управляющего слова.
Программирование (настройка) ПККИ выполняется по командам OUT путем записи управляющих слов CW в регистры блока управления, после чего МПр может записывать командой OUT, читать командой IN информацию из ОЗУИ, М-ОЗУ клавиатуры и его слово состояния. Операции чтения/записи выполняются в зависимости от состояния управляющих сигналов
Входные сигналы А0 RD WR CS | В и д о п е р а ц и и |
1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 Х Х Х 1 | Запись команды RgCW := D7-D0 Запись данных ОЗУИ := D7-D0 Чтение слова состояния D7-D0 = Rg PSW Чтение данных D7-D0 = М-ОЗУ v ОЗУИ Микросхема не выбрана. Шина данных находится в третьем состоянии. |
В ПККИ возможна запись восьми управляющих слов (таблица 5.3): три команды являются общими и используются во всех режимах; три CW управляют работой дисплея (индикацией) и два - режимами ввода, которые передаются по магистрали данных от МПр при CS=0 и А0=1 и загружаются по нарастающему фронту сигнала WR.
Таблица 5.3 - Команды процессора для установки режимов работы
Т и п команды | К о м а н д а (управляющее слово CW) | Код CW D7 D6 D5 | Код операции D4 D3 D2 D1 D0 |
Общие команды | CW0: Установка режима работы интерфейса клавиатуры и инди- кации CW1: Программирование скорос- ти ввода-вывода (синхронизации) CW6: Программный сброс | 0 0 0 0 0 1 1 1 0 | T2 T1 K2 K1 KD P4 P3 P2 P1 P0 C4 C3 C2 C1 C0 |
Управле- ние работой дисплея | CW3: Чтение ОЗУ индикации CW4: Запись в ОЗУ индикации CW5: Запрет записи в ОЗУ инди- кации - гашение | 0 1 1 1 0 0 1 0 1 | S A3 A2 A1 A0 S A3 A2 A1 A0 X A B A B |
Управле- ние вводом инфор- мации | CW2: Чтение М-ОЗУ клавиатуры (датчиков) CW7: Снятие запроса на преры- вание - подключение средств об- наружения ошибок | 0 1 0 1 1 1 | S X A2 A1 A0 E X X X X |
Рассмотрим форматы управляющих слов и преобразования, выполняемые в ПККИ ВВ79 при их загрузке.
При загрузке CW0 “Установка режима работы интерфейса клавиатуры и индикации” производится настройка клавиатуры на один из восьми режимов работы (таблица 5.4) и дисплея на один из четырех режимов (таблица 5.5). Формат CW0 приведен на рисунке 5.8.
Возможно задание одного из трех базовых режимов ввода информации:
Ввод данных с клавиатуры (последовательный опрос матрицы клавиш, включающий два режима);
режим стандартной клавиатуры;
режим “игровой” клавиатуры;
Последовательный опрос матрицы датчиков (или режим анализа матрицы датчиков);
Стробируемый ввод (или ввод по стробу - сигналу синхронизации выдачи данных с клавиатуры STB ).
В каждом из режимов ввода возможны следующие два варианта управления работой сканирующих линий:
режим кодирования (с дешифрированием состояния счетчика сканирования) - информация на линиях S3-S0 изменяется в двоичном коде;
режим декодирования - информация на линиях S3-S0 изменяется в унитарном коде с бегущим нулем, и при этом возможна работа без внешнего дешифратора.
Таблица 5.4 - Кодирование режимов работы интерфейса клавиатуры
К2К1 К0 | Режим | Модификации режимов интерфейса клавиатуры |
0 0 0 0 0 1 0 1 0 0 1 1 | Режим ввода с клавиатуры | Режим стандартной клавиатуры с блоки- Кодирование линий S3-S0 ровкой ввода двух и более одновремен- Декодирование линий S3-S0 но нажатых клавиш Режим “игровой” Кодирование линий S3-S0 клавиатуры с разрешением ввода Декодирование линий S3-S0 нескольких клавиш |
1 0 0 1 0 1 | Режим анализа матрицы датчиков | Кодирование линий S3-S0 Декодирование линий S3-S0 |
1 1 0 1 1 1 | Режим стробирован- ного ввода | Кодирование линий S3-S0 Декодирование линий S3-S0 |
Функционирование ПККИ в различных режимах будет рассмотрено ниже.
Таблица 5.5 - Режимы работы дисплея
Т2 Т1 | Режимы работы интерфейса клавиатуры |
0 0 | Вывод 8-разрядных символов на индикацию с размещением их слева направо (начиная со старшего разряда индикатора) |
0 1 | Вывод 16-разрядных символов на индикацию с размещением их слева направо (начиная со старшего разряда индикатора) (устанавливается после аппаратного сброса по сигналу RESET) |
1 0 | Вывод 8-разрядных символов в один и тот же разряд со сдвигом ранее отображаемой информации влево (начиная с младшего разряда индикатора) |
1 1 | Вывод 16-разрядных символов в один и тот же разряд со сдвигом ранее отображаемой информации влево (начиная с младшего разряда индикатора) |
КD = 0 - кодированный выход счетчика сканирования;
КD = 1 - декодированный выход счетчика сканирования.
К2 К1
0 0 - режим стандартной клавиатуры
0 1 - режим “игровой” клавиатуры
1 0 - режим анализа матрицы датчиков
1 1 - режим ввода по стробу
Т1=0 - вывод на 8-разрядный индикатор
Т1=1 - вывод на 16-разрядный индикатор
Т2=0 - вывод цифр слева направо (начиная со старшего разряда дисплея)
Т2=1 - вывод цифр справа налево (начиная с младшего разряда дисплея)
Рисунок 5.8 - Формат управляющего слова CW0 “Установка режима
работы интерфейса клавиатуры и индикации
“Программирования скорости ввода-вывода (синхронизации)” CW1.
Загрузка данного управляющего слова выполняется при настройке ПККИ для согласования внешней синхросерии CLK микропроцессора с внутренней частотой БИС ВВ79, которая должна быть не более 100 кГц. Коэффициент деления частоты, размещаемый в разрядах D4-D0 CW1, должен обеспечивать внутреннюю синхронизацию ПККИ с частотой Fclk/K <= 100 кГц.
При аппаратном сбросе в регистр коэффициента пересчета заносится число 31, а при программном сбросе не изменяется. После загрузки CW1 происходит перенос коэффициента пересчета К= 2 - 31 в вычитающий счетчик с предустановкой в течение от 0 до 64 Тclk.
“Сброс” (программная очистка) CW6. Формат управляющего слова CW6 предусматривает несколько возможных вариантов сброса интерфейсов клавиатуры и индикации (рисунок 5.9):
сброс интерфейса индикации:
а) запись в ОЗУИ константы гашения (пробела): С4=1, С1-С0=0;
б) загрузка константы гашения в буфер: С4=0, С1-С0=0;
сброс интерфейса клавиатуры: С4=0, С1=1, С0=0;
два варианта совместного сброса интерфейсов клавиатуры и индикации:
а) С4=1, С1=1, С0=0;
б) С4=0, С1=0, С0=1.
Сброс интерфейса индикации выполняется после загрузки CW6 формата 110.1УУ00, где УУ - код константы очистки, записываемый в ОЗУИ в течение цикла сканирования: все нули, все единицы или код 20h (цикл сканирования определяется форматом загруженного управляющего слова CW0: для декодированного выхода СТS цикл сканирования по умолчанию равен 4, а для кодированного выхода СТS - определяется разрядностью индикатора 8 или 16). Код константы, записываемый в ОЗУИ, определяется типом семисегментного индикатора (рисунок 5.2 - все нули или все единицы) или кодом символа (20h код пробела для КОИ8).
При загрузке данного формата управляющего слова в слове состояния ПККИ бит 7 устанавливается в “1” и запрещается запись в ОЗУИ со стороны микропроцессора. В течение цикла сканирования в ОЗУИ записывается константа, определяемая значением бит D3, D2 CW6, а по окончании записи бит D7 PSW автоматически сбрасывается. Операция очистки занимает около 200 мкс, и процессор должен анализировать состояние разряда D7 слова состояния после загрузки команды CW6 “Сброс ОЗУИ”, прежде чем будет выполнено следующее обращение к контроллеру для записи новой информации в ОЗУИ.
Если в разряде D4 CW6 будет записан нуль, то после загрузки управляющего слова в ПККИ на выходах OUTA и OUTB в зависимости от содержимого разрядов D3 и D2 появятся нули, единицы или код 20h, т.е. на время загрузки CW6 выполняется гашение индикатора и константа гашения записывается в специальный буферный регистр, которая в дальнейшем используется при гашении индикатора после загрузки CW5.
Сброс интерфейса клавиатуры выполняется при D1=1, D4=0, D0=0 в формате CW6. При этом в ПККИ сбрасывается регистр слова состояния М-ОЗУ, указатели стека FIFO и на выходе INT устанавливается сигнал низкого уровня, что соответствует ситуации: М-ОЗУ пусто и разрешена запись новых кодов клавиш. Единица в разряде D0 CW6 оказывает такое же действие, как единицы в разрядах D4 и D1.
Преобразования, выполняемые при загрузке CW6 различных форматов, приведены в таблице 5.6.
Таблица 5.6 - Установка ПККИ при аппаратном и программном сбросе
Источник | RESET | Программный сброс CW6 CW0 1100NN10 1100NN00 1101NN00 110XNN01 |
Режим работы | CW0 01000 | Определ. командой W W W W |
Коэффициент деления К | 31 | W W W W W |
Счетчик сканирования | Сброс | W W W W Сброс |
Источник чтения | М-ОЗУ | W W W W W |
Регистр адреса ОЗУИ | 0 | 0 W W 0 0 |
Указатели стека М-ОЗУ | 0 | 0 0 W W 0 |
Слово состояния | 0 | 0 0 W W 0 |
Запрос INT | 0 | 0 0 W W 0 |
ОЗУ индикации | W | W W W NN NN |
Код очистки на выходах OUTA, OUTB | 0 | W W NN NN NN |
W - остается без изменения.
“Чтение М-ОЗУ (FIFO) клавиатуры (датчиков)” CW2.
В зависимости от режима работы, на который настроена БИС ПККИ, чтение содержимого М-ОЗУ клавиатуры производится различным образом. В клавиатурных режимах (последовательного опроса клавиатуры) и ввода по стробу данные из М-ОЗУ (FIFO) клавиатуры читаются после загрузки управляющего слова CW2, в разрядах D4-D0 которого может быть записана произвольная информация, так как в качестве адреса чтения используется указатель стека чтения FIFO.
В режиме анализа матрицы датчиков М-ОЗУ работает в режиме ЗУ с произвольным доступом, а в качестве регистра адреса используется RgA ОЗУИ и после загрузки CW2 содержимое М-ОЗУ читается микропроцессором по командам IN по адресу, указанному в разрядах D2-D0 CW2. Если разряд D4=1 в CW2, то после каждого чтения адрес увеличивается на “1”, т.е. выполняется автоинкрементирование и информация будет считываться из последовательных ячеек М-ОЗУ, иначе (S=0) чтение будет происходить из одной и той же ячейки до подачи новой команды CW2 с другим кодом адреса ААА.
“Снятие запроса на прерывание - подключение средств обнаружения ошибки” CW7.
В зависимости от режима, на который настроена БИС ПККИ, загрузка CW7 приводит к разным последствиям. В режиме анализа матрицы датчиков (Е=Х) после загрузки CW7 на выходе INT устанавливается низкий уровень сигнала и разрешается запись в М-ОЗУ клавиатуры (датчиков) (или просто снятие запроса на прерывание).
В режиме “игровой” клавиатуры с разрешением замыкания двух и более одновременно нажатых клавиш единица, записанная в разряд D4 (Е) CW7, обеспечивает подключение специальных средств обнаружения ошибок, которые переводят ПККИ в режим, при котором фиксируется факт одновременного нажатия нескольких клавиш в одном цикле проверки на дребезг контактов и устанавливают в “1” флаг ошибки (разряд D6 слова состояния), запрещающий запись кодов клавиш в М-ОЗУ клавиатуры и устанавливающий на выходе INT сигнал высокого уровня.
“Запись в ОЗУ индикации” CW4.
После загрузки CW4 микропроцессор по командам OUT может записывать информацию в ОЗУ индикации по адресу, указанному в разрядах D3-D0. Если разряд D4=1, то адрес ячейки после каждой операции записи увеличивается на единицу для адресации в следующую ячейку по принципу указателя стека.
“Чтение ОЗУ индикации” CW3.
Значения разрядов те же, что и в предыдущей команде. После загрузки CW3 микропроцессор по командам IN может читать информацию из ОЗУ индикации. CW3 устанавливает, помимо адреса ячейки, еще и внутренний переключатель, в результате чего источником считываемой информации становится ОЗУ индикации, а не М-ОЗУ клавиатуры. Загрузка CW2 сбрасывает этот переключатель, и источником чтения становится М-ОЗУ клавиатуры, т.к. чтение М-ОЗУ и ОЗУИ осуществляется микропроцессором по одной и той же команде IN с четным портом ввода-вывода (А0=0). Микропроцессор всегда будет читать информацию из источника, определяемого последней по времени командой CW3 “Чтение ОЗУ индикации" или CW2 “Чтение М-ОЗУ клавиатуры”. Также следует учитывать следующие особенности использования RgA ОЗУИ:
адрес в RgA ОЗУИ может устанавливаться по трем командам: CW3, CW4 и CW2 (только в режиме анализа матрицы датчиков (АМД));
при загрузке адреса можно использовать два режима чтения: с автоинкрементированием по принципу указателя стека и без изменения адреса чтения/записи (в режиме произвольного доступа).
Поэтому при совместном использовании этих команд необходимо учитывать следующее:
для команд CW3, CW4, CW2 (в режиме АМД) без автоинкрементирования необходимо перед командой IN задавать адрес чтения ОЗУИ или М-ОЗУ, а перед командой OUT - адрес записи ОЗУИ;
команды CW3, CW4, CW2 (в режиме АМД) с автоинкрементированием нельзя использовать в одном цикле (ППОП), т.к. при каждом чтении или записи адрес будет автоматически изменяться на “1”. Например, в режиме АМД, если загружены CW2 и CW4 с автоикрементированием, то адрес чтения М-ОЗУ будет определяться последней загруженной командой CW, а адрес записи в ОЗУИ будет на “1” больше адреса чтения.
Поэтому рекомендуется при использовании этих команд с автоинкрементированием сначала выполнить операции чтения М-ОЗУ всех переменных в цикле, а затем - запись массива данных в ОЗУИ. Во всяком случае недопустимо перемежать различные виды обмена (запись и считывание, обращение по чтению к ОЗУИ и М-ОЗУ клавиатуры) без предварительной посылки управляющего слова, устанавливающего код регистра адреса и внутренний переключатель чтения ОЗУИ и М-ОЗУ клавиатуры.
Также отметим, что в режимах вывода символов на 4- и 8-разрядный дисплей в ОЗУИ ячейки с адресами 4-15 и 8-15 соответственно не используются для отображения и при построении микроконтроллерных систем их может использовать микропроцессор для расширения емкости ОЗУ данных. Доступ к этим ячейкам возможен только по командам IN и OUT.
“Запрет записи в ОЗУ индикации - гашение” CW5.
При загрузке CW5 в ПККИ можно запретить запись информации в ОЗУ индикации по входам D7-D0 при наличии единиц в разрядах слова D3, D2 или запретить раздельно запись информации в каждую половину ОЗУ по входам D7-D4 магистрали данных (D3=1) или по входам D3-D0 (D2=1).
Кроме того, единица в разряде D1 CW5 запрещает выдачу информации (гашение индикации) из выходного регистра канала А (OUTA3-OUTA0), а единица в разряде D0 - выдачу информации из выходного регистра канала В (OUTB3-OUTB0). Команда применяется, например, при отображении данных на дисплее из 32 знакомест (две линейки индикаторов по 16 отображаемых символов) для вывода данных на одну из линеек индикатора или запрещения ввода соответственно младшей или старшей половины байта. При запрещении выдачи данных выходы OUTA и OUTB устанавливаются в 0000, 1111 или 00100000 (20h) в зависимости от того, какой код константы гашения был предварительно загружен командой CW6. Заметим, что если выдача информации запрещается по каналам А и В одновременно, то на выходе BD появляется сигнал низкого уровня. Отмена режима отображения данных, установленного командой CW5, производится при выполнении этой же команды с инверсными значениями требуемых битов.