Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Периферия » Клавиатура PS\2


Клавиатура PS\2

Сообщений 1 страница 9 из 9

1

Здравствуйте!
Подскажите пожалуйсто как можно считать данные с клавиатуры?
В интернете на сайтах преставленна одна и таже статья, в которой приводится пример.. Но недостаток этого в следующем - для чтения исползуется функция Getatkbd() - которая ЖДЕТ нажати кнопки и возвращает значение. Не устраивает именно то что она ждет - просто программа зависает до наатия кнопки.. Есть какие то альтернативные способы?
Спасибо!

0

2

Извиняюсь за лишнюю тему..
Нашел два способа решения проблемы (если это можно так назвать):
1.  Функция GETATKBDRAW() - возвращает чистое не обработанное значение с клавиатуры (без ожидания нажатия и без таблицы данных клавиатуры)
     http://avrhelp.mcselec.com/index.html?getatkbdraw.htm
2.  В это чуть чуть не понял в переводе - но можно как то сбежать от ожидания функции Getatkbd() установив Err=1. Не понятно что за чем и как.. Может кто поможет разобраться?
     Вот оригинальный текст: The Getatkbd function will wait for a pressed key. When you want to escape from the waiting loop you can set the ERR bit from an interrupt routine for example.
     http://avrhelp.mcselec.com/index.html?getatkbd.htm

0

3

это пробовали?

http://avrhelp.mcselec.com/index.html?getatkbd.htm

это для справки:

http://avrhelp.mcselec.com/index.html?c … yboard.htm
http://avrhelp.mcselec.com/index.html?getatkbd.htm

0

4

а чем отличаются ваши первая и третья ссылка от моей?
Я просто попросил разобраться с непонятной строчкой
The Getatkbd function will wait for a pressed key. When you want to escape from the waiting loop you can set the ERR bit from an interrupt routine for example.

Отредактировано dimaib (2013-08-26 15:17:23)

0

5

Попробуйте перед опросом клавиатуры запускать таймер на нужное время ожидания ответа клавиатуры.

В прерывании ставьте Err=1

Перевод:

Getatkbd функция будет ждать нажатия клавиши. Если вы хотите вырваться из цикла ожидания вы можете установить бит Err например от прерывания.

Отредактировано sasha_1973 (2013-08-26 15:56:37)

0

6

не получается - пробовал уже..

0

7

а как вы себе представляете алгоритм работы функции по считыванию значение клавиатуры?
GetatKBD - ожидает прихода клавиши, пока она не появится будет висеть
GetatkbdRAW - будет всегда 0, пока не придет кнопка (ожидания нет)

так что надо ещё?

0

8

Там ещё рекомендуют посмотреть пример в файлах примеров "GETATKBD.BAS".

0

9

О! Как кстати. Тоже вожусь с клавиатурой. За основу брал пример баскома getatkbd_int.bas
Из обработчика прерывания от клавы убрал лишний асм. Вывод в ком порт тоже. В итоге в любой момент времени имеем код нажатой клавиши.
Заморачиваться с набором в строку(как в примере в буфер) не стал, тк потребовалось отлавливать нажатие конкретной кнопки без подтверждения Enter'ом.
Единственный ньюанс выявил. При работе клавиатуры со вторым внешним прерыванием наблюдаются зависания МК. В более новой версии бейсика пока еще не пробовал.

0


Вы здесь » Программирование ATMEL в BASCOM. » Периферия » Клавиатура PS\2