Разработка микропроцессорной системы. Составление карты распределения адресного пространства МПС под ОЗУ, ПЗУ, внешние и интерфейсные устройства, страница 7

Рассмотрим  теперь  построение  клавиатуры (рис.  6).  Для  её  реализации  нужно  создать  схему  сканирования  матрицы  кнопок  размером  4х5,  то  есть  из  двадцати  кнопок.  Для  сканирования  двадцати  кнопок  необходим  5-разрядный  счётчик (так  как  только  такая  разрядность  позволит  различить  все  20  кнопок ),  для  упрощения  можно,  впрочем,  взять  и  8-разрядный  счётчик (его  проще  строить  из  стандартных  элементов) - при  этом  ещё  останется  и  запас  для  возможного  расширения  клавиатуры.  В  нашем  случае счётчик  можно  построить  на  основе  двух  4-разрядных  счётчиков  КР1554ИЕ18,  как  показано  на  рисунке  6.  От  полученного  8-разрядного  счётчика  для  целей  сканирования  клавиатуры  нужно  взять  лишь  5  младших  разрядов,  2  из  которых (0  и  1)  будут  использованы  для  выбора  строк, а  оставшиеся  3 - для  выбора  столбцов.  Строки  сканируются     путём  подачи  двух  младших  разрядов  счётчика  на  дешифратор  2х4 (возьмём  КР1554ИД14),  а  с  дешифратора  выходы  идут  уже  непосредственно  на  матрицу  клавиш (эти  выходы  инверсные).  3  оставшихся  разряда  счётчика  подадим  на  адресные  входы  выходного  мультиплексора  3х8 (соберём  его  на  основе  микросхемы  КР1554КП2  как  показано  на  рисунке  6).  Этот  мультиплексор  будет  поочерёдно  соединять  каждый  столбец  с  триггером  для  отсечения  дребезга  контактов,  причём  в  состоянии,  когда  к  клавиатуре  нет  обращений,  на  всех  столбцах - “1” (для  этого  подключаем  столбцы  через  сопротивление  R = 1 кОм (Р1 - 4 - 0,5 - 1 кОм ± 5%В).  Когда  нажата  какая-либо  клавиша  на  клавиатуре  на  дешифратор  строк  пойдёт  ток,  образующийся  при  падении  напряжения  от  5  до  0В  на  сопротивлении  1 кОм (считаем,  что  рассматриваемая  линия  дешифратора  находится  в  состоянии  “0” - то  есть  сканируем  именно  эту  линию),  таким  образом  пойдёт  ток  IOL= 5/1000 = 5 мА,  что  не  превысит  максимального  уровня (24 мА),  затем  на  мультиплексор  пойдёт  “0”,  что  и  обеспечит  выработку  сигнала  прерывания.  Вообще  сигнал  прерывания  выдаётся  с  установленного  на  выходе  мультиплексора  D - триггера  на  вход  IRQ3

блока  обслуживания  прерываний.  Этот  триггер  при  нажатии  на  какую-либо  клавишу  производит  ещё  блокировку  счёта  на  счётчиках.  Сброс  этого  D - триггера  возможен  только  при  получении  единичного  сигнала  с  порта  Р0  ОМЭВМ (разряд  0).  Подавать  такой  сигнал  будет  при  старте  программа  обработки  запроса  прерывания. 

Сканирование  клавиатуры  будем  проводить  с  помощью  сигнала  ALE  процессора.  Этот  сигнал  дважды  присутствует  в  каждом  машинном  цикле,  то  есть  идёт  с  частотой  2 МГц ( за  редким  исключением,  когда  частота  будет  1 МГц).

При  работе  программы  обслуживания  прерывания  можно  прочитать  скэн - код  нажатой  клавиши  из  канала  В  параллельного  порта,  инициализируемого  по  сигналу  CS3  системного  дешифратора.  На  этот  канал  заведены  все  5  значащих  разряда  счётчика  клавиатуры.

Рассмотрим  теперь  блок  обслуживания  прерываний (рис. 7).  Он  реализован  очень  просто - это  всего  лишь  схема  ИЛИ,  собирающая  запросы  прерываний  от  трёх  источников (IRQ0 - от  аварийного  датчика,  IRQ1 - отказ  источника  питания,  IRQ2 - запрос  от  клавиатуры).  Затем  посылется  общий  запрос  прерывания  на  вход  INT0  процессора (разряд  2  порта  Р3).  Кроме  того,  чтобы  программа  обслуживания  запроса  могла  выяснить  от  какого  всё-таки  источника  пришёл  запрос,  все  3  сигнала  запроса  параллельно  заводятся  в  канал  А  параллельного  интерфейса,  выбираемого  сигналом  CS3  системного  дешифратора.

Для  реализации  самого  системного  дешифратора  проанализируем  сначала  карту  распределения  адресного  пространства.  По  карте  видно,  что  имеется  лишь  4  устройства,  которым  необходимо  подать  сигнал  CS.  Причём  различие  у  всех  этих  устройств  будет  лишь  в  восьмом  и  девятом  разрядах  адреса (А8  и  А9).  Общая  характеристика  этих  устройств - одинаковые  адресные  разряды  А10  и  А11,  которые  можно  использовать  для  выбора  самого  системного  дешифратора (А10 = 0  и  А11 = 1).  Схема  системного  дешифратора  представлена  на  рис. 8.  За  основу  дешифратора,  как  видно  из  рисунка,  взята  микросхема  КР1554ИД14.