
- •Схемотехника и мп техника
- •Понятие адресного пространства. Совмещенные и параллельные адресные пространства: основные архитектурные и схемотехнические признаки.
- •Клавиатурные алгоритмы: варианты алгоритмов с указанием особенностей и применения.
- •1.2.3 Многоклавишные алгоритмы
- •Iord#. Данные из порта считываются процессором во внутренний шинный буфер.
- •Input/output) с успехом применяются и в интерфейсе ide (ata). Эти режимы используют инструкции
- •Ввод/вывод в режиме прямого доступа к памяти (пдп) (dma): схемотехнические особенности для различных архитектур системы. Области применения режима.
- •Аппаратные реализации шины для интерфейса «Токовая петля 20 мА». Особенности построения и основные ограничения.
- •Xon/xoff. Если двунаправленный обмен не требуется, используют только одну линию данных, а для
- •Последовательная передача в асинхронном режиме: основные характеристики. Понятие стартового и стопового битов, их уровни. Назначение и устройство схемы автофазировки.
- •Виды модуляции, используемые в модемах: сравнительный анализ с точки зрения помехоустойчивости и скорости передачи.
- •2.2. Модели управляющих автоматов
- •2.3.2. Граф-схемы алгоритмов
- •2.3.3. Графы переходов
- •5.1. Программные модели автоматов
- •1 Case (англ.) — случай. Построения произвольной гса с последующим ее структурированием и
- •5.1.2. Использование конструкции s w I t c h при реализации
Клавиатурные алгоритмы: варианты алгоритмов с указанием особенностей и применения.
Клавиатурные алгоритмы: варианты алгоритмов с указанием особенностей и применения.
Клавиатурные алгоритмы
При работе с клавиатурами программисту приходится ре¬шать еще одну проблему: когда должна выполняться функция, связанная с данной клавишей - в момент нажатия клавиши (т.е. в момент обнаружения программой факта нажатия) или в момент отпускания клавиши. На первый взгляд более прием¬лемым является первое предложение. Но при этом програм¬мист принять меры, чтобы застраховаться от повторного (лож¬ного) срабатывания данной функции, если пользователь не успел отпустить клавишу за то время, пока выполнялась функ¬ция. Кроме того, реализация клавиатур с функциональными клавишами (т.е. клавиша "А" выполняет действие "а", клавиша "Б" выполняет действие "б", и действие "в", если нажаты одно¬временно обе клавиши) заметно усложняет алгоритм антидре-безговой программы.
Для прояснения ситуации целесообразно разделить алгорит¬мы, работающие с клавиатурой и представляющие следующий вверх уровень иерархии алгоритмов на алгоритмы, работаю¬щие по нажатию (т.е. запускающие функцию в момент обнару-жения программой факта нажатия клавиши) и алгоритмы, работающие по отпусканию (т.е. запускающие функцию в мо¬мент обнаружения программой факта отпускания клавиши или клавиш). Последние, в свою очередь, можно разделить на одноклавишные и многоклавишные. Алгоритм, работающий по нажатию, многоклавишным не может быть принципиаль¬но, ибо в этом случае придется допустить, что алгоритм обла¬дает априорной информацией: будет нажата еще одна клавиша или пользователь ограничится уже нажатой.
Одноклавишные алгоритмы, в свою очередь, подразделяют¬ся на алгоритмы, воз-вращающие код первой нажатой клавиши (нажатия на последующие клавиши счита-ются ложными) и алгоритмы, возвращающие код последней нажатой клавиши (нажа-тия на предыдущие клавиши считаются ложными). Каж¬дый из этих алгоритмов имеет свою область применения.
Рассмотрим некоторые из них. Все эти алгоритмы использу¬ют в качестве нижнего уровня иерархии антидребезговые алго¬ритмы, рассмотренные ранее. Поэтому в дальнейшем обозна¬чим на блок-схеме применяемый антидребезговый алгоритм подпрограммой АДА, возвращающей результат в переменной А.
1.2.1 Одноклавишный алгоритм, работающий по нажатию
Самым простым из одноклавишных алгоритмов является алгоритм, работающий по нажатию. Блок-схема этого алгорит¬ма показана на рисунке 4.
А=FF?
Выход, возврат А
Рисунок4. Блок-схема одноклавишного алгоритма, работающего по нажатию
Фактически он сводится к ожиданию обнаружения момен¬та нажатия клавиши и возврата ее кода. Следует обратить вни¬мание на тот факт, что алгоритм не преду-сматривает выхода по отсутствию нажатия клавиши в момент своей активизации - для подобного алгоритма такая точка выхода противоречила бы самой логике алго-ритма.
В дальнейших пояснениях алгоритм не нуждается.
1.2.2 Одноклавишные алгоритмы, работающие по отпусканию
Подобные алгоритмы могут быть подразделены по тому, код какой из клавиш они возвращают. Возможны два варианта: ал¬горитм, возвращающий код первой нажатой клавиши (все ос¬тальные нажатые клавиши считаются ошибочными и игнори¬руются) и алгоритм, возвращающий код последней отпущен¬ной клавиши (предполагается, что пользователь мог ошибить¬ся и исправить ошибку).
Блок-схема алгоритма, возвращающего код первой нажатой клавиши показана на рисунке 5.
Работает алгоритм следующим образом.
После первого вызова антидребезгового алгоритма прово¬дится анализ: нажата ли хотя бы одна клавиша?
Если нажатых клавиш не обнаружено, то дальнейшая работа утрачивает смысл и осуществляется выход из алгоритма с ко¬дом возврата, свидетельствующим об отсут-ствии нажатых кла¬виш.
Если же хотя бы одна из клавиш нажата, то результат работы антидребезгового алгоритма запоминается в переменной В.
После этого вновь запускается цикл, состоящий из вызова антидребезгового алго-ритма и проверки на отсутствие нажа¬тых клавиш. Цикл повторяется до тех пор, пока не будет обна¬ружен факт отпускания всех клавиш.
Код первой нажатой клавиши, сохраненный в переменной В, используется в каче-стве кода возврата при выходе из алго¬ритма.
Блок-схема алгоритма, возвращающего код последней отпу¬щенной клавиши пока-зана на рисунке 6.
Работает алгоритм следующим образом.
После первого вызова антидребезгового алгоритма прово¬дится анализ: нажата ли хотя бы одна клавиша?
Если нажатых клавиш не обнаружено, то дальнейшая работа утрачивает смысл и осуществляется выход из алгоритма с ко¬дом возврата, свидетельствующим об отсут-ствии нажатых кла¬виш.
Если же хотя бы одна из клавиш нажата, то результат работы антидребезгового алгоритма запоминается в переменной В.
После этого вновь запускается цикл, состоящий из вызова антидребезгового алго-ритма и проверки на отсутствие нажа¬тых клавиш.
В случае, если все клавиши отпущены, алгоритм возвращает значение, сохранен-ное в переменной В.
В случае, если не все клавиши отпущены (код возврата анти¬дребезгового алго-ритма не равен FF), проводится дополнитель¬ный анализ: совпадает ли код возврата антидребезгового алго¬ритма с кодом, сохраненным в переменной В? В случае сов-падения алгоритм работает аналогично описанному выше, продолжая ожидать мо-мента отпускания всех клавиш. Если же код, сохраненный в переменной В не совпал с кодом возврата антидребезгового алгоритма, то в переменной В сохраняется новое значение и алгоритм продолжает ожидать момент отпускания всех клавиш.