Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kharakhnin / ПОСОБИЕ_Харахнин.doc
Скачиваний:
278
Добавлен:
08.03.2016
Размер:
17.89 Mб
Скачать
      1. Применение шифратора для организации клавиатуры

На рис. 30 показана функциональная схема организации клавиатуры с использованием приоритетного шифратора (8 х 3) К555ИВ1.

Рис. 30. Организация клавиатуры с применением приоритетного

Шифратора

Микросхема принимает напряжение низкого уровня на один из восьми параллельных инверсных входов I0 – I7. На инверсных выходах А0 – А2 появляется двоичный код, пропорциональный номеру входа, оказавшегося активным. Приоритет в том случае, если несколько входов получили активные уровни, будет иметь старший среди них по номеру. Таким образом, вход I7 имеет наивысший приоритет. Активный сигнал на входе Е разрешает работу микросхемы. Рассмотрим табл.19 состояний К555ИВ1.

Таблица 19

В х о д ы

В ы х о д ы

Е

I0

I1

I2

I3

I4

I5

I6

I7

G

A0

A1

A2

E0

1

Х

Х

Х

Х

Х

Х

Х

Х

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

1

0

0

1

1

1

1

1

1

1

0

0

0

0

0

1

0

1

1

1

1

1

1

0

1

0

1

0

0

1

0

1

1

1

1

1

0

1

1

0

0

1

0

1

0

1

1

1

1

0

1

1

1

0

1

1

0

1

0

1

1

1

0

1

1

1

1

0

0

0

1

1

0

1

1

0

1

1

1

1

1

0

1

0

1

1

0

1

0

1

1

1

1

1

1

0

0

1

1

1

0

0

1

1

1

1

1

1

1

0

1

1

1

1

Активный (нулевой) сигнал на выходе G свидетельствует о наличии хотя бы одного активного сигнала на входах II. Таким образом, сигнал на выходе G можно использовать в качестве сигнала запроса на прерывание однокристального МК, поэтому выход G соединен с входом INT0. ЕО – выходной сигнал разрешения, свидетельствующий об отсутствии активных входов II. Поскольку шифратор имеет 8 входов, максимально можно подключить 8 клавиш. Используя совместно выход ЕО и вход Е, можно строить многоразрядные приоритетные шифраторы, а следовательно, и подключать большее количество клавиш. Эффект “дребезга контакта” устраняется аппаратно, для этого применяется микросхема К561ТР2, содержащая четыре RS триггера. Алгоритм работы аналогичен вышерассмотренному, программа имеет следующий вид:

<1> ORG 0000H

<2> JMP START ; Переход на начало инициализации системы.

<3> JMP INT_KLAV ; Вектор прерывания при нажатии на клавишу клавиатуры.

<4> START: MOV IE,#01H ; Разрешение прерывания от аппаратного запроса по входу INT0.

<5> SETB IT0 ; Установка прерывания по фронту импульса.

<6> SETB EA ; Разрешение всех установленных прерываний.

<7>MAIN: ; Тело основной программы

<8> JMP MAIN ;Зацикливание основной программы.

<9>INT_KLAV: MOV A,P1 ;Получение кода нажатой клавиши.

<10> CPL A ; Инвертирование для получения прямого кода.

<11> ANL A,#07H ; Выделение младших 3 битов.

<12> MOV R0,A ; Сохранение кода в регистре R0.

<13> XRL A,#00H ; Проверка на нажатие клавиши SB1.

<14> JZ SB1;Если SB1 нажата, то перейти на выполнение функции.

<15> MOV A,R0 ; Восстановление кода в А.

<16> XRL A,#01H ; Проверка на нажатие клавиши SB2.

<17> JZ SB2;Если SB2 нажата, то перейти на выполнение функции.

<18> MOV A,R0 ; Восстановление кода в А.

<19> XRL A,#02H ; Проверка на нажатие клавиши SB3.

<20>JZ SB3 ;Если SB3 нажата, то перейти на выполнение функции.

<21> MOV A,R0 ; Восстановление кода в А.

<22> XRL A,#03H ; Проверка на нажатие клавиши SB4.

<23> JZ SB4;Если SB4 нажата, то перейти на выполнение функции.

<24> END_INT: NOP

<25> RETI ; Выход из прерывания.

<26> SB1: ; Выполнение функции при нажатии на клавишу SB1.

<27> JMP END_INT ;

<28> SB2: ; Выполнение функции при нажатии на клавишу SB2.

<29> JMP END_INT ;

<30>SB3: ; Выполнение функции при нажатии на клавишу SB3.

<31> JMP END_INT ;

<32>SB4: ; Выполнение функции при нажатии на клавишу SB4.

<33> JMP END_INT ;

<34> END

Отличием от программы, описанной выше, является то, что не используется подпрограмма задержки при входе в подпрограмму обслуживания прерывания, поскольку “дребезг” устраняется аппаратно. Предварительно необходимо выделить три младших разряда (шаг 11). Идентификация нажатой клавиши осуществляется посредством команды “ИЛИ ИСКЛЮЧАЮЩЕЕ” содержимого А и проверочных кодов ( шаги 13, 16, 19, 22). Перед каждой проверкой необходимо восстанавливать содержимое аккумулятора (шаги 15, 18, 21). После идентификации клавиши осуществляется переход на процедуру выполнения соответствующей функции.