Ввод в МКС аналоговых сигналов. Параметры интегральных АЦП. Условное графическое обозначение типового АЦП, страница 5

Если в клавиатуре используются клавиши или кнопки с контактами без фиксации, то необходимы средства (программные или аппаратные) для опроса состояния клавиатуры, т.е. определения момента нажатия клавиши. При использовании программного метода МК должен вызывать подпрограмму опроса INPKEY периодически, обычно не менее 10 раз в секунду, чтобы не пропустить момент нажатия кнопки. Сделать это программно довольно трудно, поэтому этот метод обычно используется совместно со сканированием дисплея при динамическом его управлении. Аппаратный метод заключается в том, что при нажатии любой клавиши вырабатывается запрос прерывания. Микроконтроллер, получив этот запрос, переходит на подпрограмму обслуживания прерывания, которая вызывает подпрограмму опроса INPKEY.

На рис. 7.22 приведена схема подключения клавиатуры с кнопками (контактами без фиксации), в которой формируется сигнал запроса внешнего прерывания МК в случае нажатия любой клавиши. Линия P3.2 в схеме используется на вход запроса прерывания . При разомкнутых контактах SB1-SB4 на входе  = 1. При нажатии любой клавиши замыкается контакт и на входе  = 0, т.е. поступает запрос прерывания.

Рис. 7.22. Схема опроса состояния кнопок

При реализации этого метода следует учесть два обстоятельства:

1.  При нажатии кнопки возникает дребезг контактов в течение времени 5…10 мс. Так как МК реагирует на запрос прерывания практически мгновенно, то надо задержать вызов подпрограммы опроса INPKEY на некоторое время, обычно порядка 20 мс.

2.  Подпрограмма обслуживания прерывания в рассматриваемом случае короткая и длится всего 20-30 мкс. При выходе из подпрограммы МК вновь проверяет состояние входа P3.2, и если  = 0, то МК опять войдет в подпрограмму обслуживания прерывания. И пока клавиша остается нажатой, программа будет зациклена, т.е. МК выключится на это время из управления МКС.

В MCS-51 имеется возможность программно устанавливать активный уровень сигнала запроса прерывания. Это делают флаги IT0 и IT1 в регистре TCON. Если IT0 = 0, то МК реагирует на низкий уровень сигнала  . Если же INT0 = 1, то МК реагирует только на фронт сигнала , т.е. на перепад из «1» в «0».

Основная программа может иметь следующий вид.

                ………………..

                 MOV  KEYCODE,#0FH   ; Нет нажатой клавиши

             ; Разрешить прерывание от клавиатуры

                SETB  EX0            ; Разрешить прерывание по

                SETB  IT0              ; Установить запрос прерывания

                                                ; по перепаду из «1» в «0»

                SETB  EA              ; Общее разрешение прерываний

               ………………..      ; Продолжение основной программы

                ORG  0003H          ; Вектор прерывания по  

                CALL  DEL20MS  ; Задержка на 20 мс

                CALL  INPKEY    ; Вызов подпрограммы опроса

                RETI                      ; Возврат из прерывания

Подпрограмма идентификации может иметь вид:

IDENTIF3:  MOV  R2,#0       ; Счетчик сдвигов

                    CLR  C                ; Сбросить флаг переноса С

SHIFT:        RRC  A

                    JC  CHECK         ; Переход, если есть перенос

                    INC  R2

                    JMP  SHIFT         ; Цикл сдвига

CHECK:     JZ  EXIT               ; Выход, если (A) = 0

                    MOV  R2,#0FFH ; Экстракод (нажаты несколько

                                                 ; клавиш)

EXIT:          MOV  A,R2

                    RET

7.6. Вывод и отображение информации в МКС

В обслуживаемых МКС часто требуются средства для вывода и отображения различной информации. Если МКС требует только простейшей индикации типа Включено/Выключено или Да/Нет, то она обычно реализуется на основе отдельных светодиодов. Методы их подключения к портам МК и управления были рассмотрены в п. 7.3.4.