Составители:
248
Б.4.3 Описание работы
Данная лабораторная работа посвящена изучению клавиатуры в составе
контроллера SDK-1.1.
В рамках лабораторной работы необходимо разработать программу для
контроллера SDK-1.1 (ведомый), который обменивается данными с
персональным компьютером (ведущий). В качестве канала связи используется
последовательный канал RS-232. На стороне персонального компьютера
имеется инструментальное средство для обеспечения взаимодействия с SDK-1.1
– это терминальная
программа M3P. Вариант задания такой же, как и в
лабораторной работе № 3, с некоторыми изменениями, главным из которых
является замена устройства ввода данных: вместо клавиатуры персонального
компьютера используется клавиатура SDK-1.1. Устройством вывода является
терминал персонального компьютера и светодиодные индикаторы SDK-1.1.
Программа должна выполнять две задачи. Первая задача – это
тестирование клавиатуры (написанного драйвера): символы
всех нажимаемых
на клавиатуре SDK-1.1 кнопок выводятся в последовательный канал и
отображаются в терминале. Вторая задача – выполнение варианта задания.
Переключение между двумя задачами в программе должно быть выполнено с
использованием DIP-переключателей (лабораторная работа № 1).
Драйвер клавиатуры должен работать по прерыванию от таймера, т.е.
сканирование должно осуществляться в обработчике прерывания от таймера
. В
связи с этим необходимо следить, чтобы время выполнения обработчика не
превышало времени между соседними прерываниями. Иначе это приведет к
повторному входу в обработчик прерывания – последствия могут быть
непредсказуемыми. Поэтому рекомендуется в каждом вызове обработчика
опрашивать только один столбец клавиатуры, а не все сразу, так как увеличение
времени выполнения обработчика
приведет к уменьшению времени
выполнения основной программы: может оказаться, что процессор большую
часть времени будет занят обработкой прерываний от таймера со
сканированием клавиатуры.
Драйвер клавиатуры должен содержать: функцию инициализации, функции
сканирования клавиатуры и обработки нажатия кнопок (вызываются в
обработчике прерывания от таймера), циклический буфер клавиатуры (нажатые
кнопки), API-функцию чтения символа из
буфера клавиатуры (см. [51],
IOS2003_lab5.pdf). Взаимодействие обработчика и API-функции
осуществляется только через буфер. Кроме того, работа с клавиатурой должна
быть организована с переповторами, т.е. с отслеживанием длительного нажатия
кнопки (как на клавиатуре персонального компьютера). Что это значит? Если
после фиксирования нажатой кнопки (соответствующий символ занесен в
буфер клавиатуры) проходит время, равное
задержке перед повтором символа, а
она все еще нажата, то в буфер клавиатуры повторно заносится этот же символ.
После этого через промежутки времени, определяемые скоростью повтора
символа, код кнопки заносится в буфер до тех пор, пока не будет зафиксировано
Страницы
- « первая
- ‹ предыдущая
- …
- 247
- 248
- 249
- 250
- 251
- …
- следующая ›
- последняя »
