Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Програмування контролера 8048 блоку клавіатури.Содержание книги
Поиск на нашем сайте
Все, що було сказане з приводу програмування контролера 8048 системного блоку відноситься і до контролеру блоку клавіатури. Псевдокоманди контролера передаються по ланцюжку: вхідний буфер 8042 системного блоку (порт 60h), передача внутрішнім ПЗ в вихідний порт Р2, передача по інтерфейсу, введення через вхід T1 в 8048 блок клавіатури, розшифровка внутрішнім ПЗ і виконання. Нижче приводиться перелік команд контролера 8048 блоку клавіатури. Всі команди як однобайтні, так і двохбайтні, передаються тільки через 60h порт і пересилаються контролером 8042 системного блоку по зазначеному вище ланцюжку як нерозпізнані байти даних власних команд. Перед посилкою кожного байта команди необхідна перевірка на 0 першого біта порта 64h. В одно- і двохбайтних командах контролер клавіатури після отримання і розшифровки кожного байта вертає в 60h порт код підтвердження FAh. EDh - керування світлодіодами клавіатури. Для ввімкнення або вимикання світлодіодів після коду команди (EDh) через 60h порт посилається байт даних, біти якого мають наступне призначення: 0: 1 - включити ScrollLock; 1: 1 - включити NumLock; 2: 1 - включити CapsLock; 3-7: - не використовуються. EEh - луна (для діагностики). Просто вертає ЕЕh; EFh - холоста команда, вертається код FEh; F0h - альтернативний режим, наступний байт даних задає режим роботи клавіатури (1, 2 або 3). Якщо послати нульовий байт даних, то вертається поточний режим; F1h - холоста команда; F2h - ідентифікатор розширеної клавіатури (вертає FAh і 2 байта ідентифікатора 83АВh розширеної клавіатури іі використовується POST для настройки системи); F3h - задати затримку і швидкість введення символів. Спочатку клавіатура починає повторювати натиснути клавішу через 0.5 сек. зі швидкістю 10 повторень в секунду. Для зміни цих параметрів, посилається байт даних, біти якого мають наступне призначення: 0-4: кількість повторень в секунду; 5-6: початкова затримка до генерації автоповтора в мсек: 00=250, 01=500, 10=750, 11=1000; 7: повинен бути рівний 0. F4h - скинути буфер клавіатури і почати сканування; F5h - привести клавіатуру в початковий стан і заборонити сканування; F6h - привести клавіатуру в початковий стан і продовжити сканування; F7h, F8h, F9h, FAh - встановити всі клавіші. Використовуються тільки в режимі три і задають режими роботи всіх клавіш: F7h - тільки автоповтор; F8h - натискання/відпускання; F9h - тільки натискання; FAh - автоповтор/натискання/відпускання. FBh, FCh, FDh - встановити окремі клавіші. Команди двохбайтні, байт даних - скан-коди клавіші, якій передвизначена команда. Використовуються тільки в режимі три і задають режими: FBh - тільки автоповтор; FCh - натискання/відпускання; FDh - тільки натискання; FEh - повторити останню передачу; FFh - скидання клавіатури і запуск внутрішнього тесту.
Буфер клавіатури Буфер клавіатури є класичним прикладом кільцевого буферу. Щоправда, назви часом обманливі, і в дійсності він зовсім не зігнутий в кільце і знаходиться не в клавіатурі, а в ОЗП на системній платі. Свою назву кільцевий буфер отримав через засіб реалізації. Буфер клавіатури складається з 32 послідовно (тобто лінійно, а не по кільцю) розташованих байтів, що знаходяться в області даних BIOS. Цей буфер зарезервований програмами BIOS INT 09h і INT 16h в якості зв’язую чого ланок для зберігання і передачі даних клавіатури. INT 09h одержує дані від клавіатури і запам’ятовує їх в буфері і передає їхній прикладній програмі або INT 16h. Оскільки буфер клавіатури є кільцевим буфером, те поточне положення "голови" і "кінця" постійно змінюється. Буфер клавіатури розміщений по адресам 0040: 001Eh - 0040: 003Ch оперативної пам'яті і дозволяє накопичувати дані (ASCII і скан-коди) про 15 натискань клавіш (на місці, передуючому початку рядку символів в буфері зберігаються ASCII код повернення каретки (ASCII 13) і скан-код клавіші "Enter"). В осередку 0040: 001Ah (покажчик початку) зберігається адреса першого введеного символу, а в осередку 0040: 001Ch (покажчик кінця) - адреса першого вільного осередку після останнього введеного символу. Адреси зберігаються в вигляді байта зміщення (другий байт осередку не використовується). Якщо буфер пустий, то вміст покажчика початку співпадає з вмістом покажчика кінця. Запис в буфер здійснюється за адресою покажчика кінця, при цьому вміст покажчика збільшується на 2. Читання з буферу виконується за адресою покажчика початку, при цьому вміст покажчика також збільшується на 2 (якщо покажчик містить адресу останнього осередку буферу - 3Ch, то замість збільшення на 2 в нього необхідно записати адресу початку буферу - 1Eh). Коли "кінець" досягне кінця буферу (крайнього верхнього осередку, рис. 6.3 - 0040: 003Ch) то він перейде на початок буферу в нижній частині (рис. 5-0040: 001Еh). Цей перенос (циркуляція) і породив термін "кільцевий буфер". В останній осередок дані не будуть занесені. Замість цього роздасться сигнал з динаміка, що вказує на переповнення буферу клавіатури. Це відбудеться тому, що покажчик "кінця" обмине буфер по колу і досягне логічної "голови" буферу.
Рис.6.3 – Буфер клавіатури
Якщо INT 09h заповнить цей осередок, то "кінець" зсунеться вперед і займе ту ж позицію, що і "голова". Однак треба пам'ятати, що якщо покажчик "голови" рівний покажчику "кінця", то вважається, що буфер пустий, тому останній осередок ніколи не заповнюється. Таким чином, в буфері клавіатури обсягом 16 слів може зберігатися не більш 15 кодів натиснутих клавіш. Очевидно, що можна перевірити, чи було введення з клавіатури. Треба просто порівняти покажчики "голови" і "кінця" (тобто вміст осередків пам'яті 0040: 001Ah і 0040: 001Ch).
|
||||
Последнее изменение этой страницы: 2016-06-23; просмотров: 374; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.70.11 (0.007 с.) |