Програмування портів клавіатури мікропроцесора Intel 8086 (80286)

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2003
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР  Звіт з лабораторної роботи № 10 “Програмування портів клавіатури мікропроцесора Intel 8086 (80286)” МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР  Звіт з лабораторної роботи № 10 “Програмування портів клавіатури мікропроцесора Intel 8086 (80286)” Виконав: студент гр. КН-37 Данчук Є.С. Перевірив: Герус В.А. Львів 2003 МЕТА РОБОТИ Вивчити основні шляхи програмування портів клавіатури на ЕОМ з мікропроцесором Intel 8086(80286). ТЕОРЕТИЧНІ ВІДОМОСТІ Одним з найважливіших пристроїв персонального комп'ютера є клавіатура, яка призначена для інтерфейсу між користувачем та комп'ютером. На даний час існує три основні типи клавіатур. Це - клавіатура для комп'ютерів ШМ PC/XT, яка містить 84 клавіші та 101-клавішна клавіатура для IBM PC/AT. Деякі клавіатури містять перемикач режиму роботи (XT/AT). Як контролер виступає процесор Intel 8042, який призначений для обміну між клавіатурою та CPU. Усі горизонтальні лінії матриці підключені через резистор до джерела живлення +5В. Контролер клавіатури містить два порти - вхідний і вихідний. Вхідний порт підключений до горизонтальних ліній матриці (ХО-Х4), а вихідний - до вертикальних (YO-Y4) Принцип роботи даного пристрою полягає в тому, що контролер почергово на вертикальних лініях встановлює значення логічного нуля. Потім він почергово опитує горизонтальні лінії. У випадку, коли натиснутих клавіш не має, рівень напруги на всіх горизонтальних лініях буде відповідати логічній 1 (всі ці лінії підключені до джерела живлення +5V через резистори). У випадку, коли натиснута клавіша - на відповідній горизонтальній лінії буде логічний нуль. На наступному кроці визначається ASCII- код натиснутої клавіші. Для роботи з клавіатурою використовують порти з адресами 60Н та 61Н. Порт 60Н при читанні містить скан-код останньої натисненої клавіші. IN AL, 60Н Для встановлення характеристик автоповтору в порт 60Н необхідно записати код команди, а потім байт, що визначає характеристики режиму. Період автоповтору визначає кількість посилок скан-коду, генерованих процесором клавіатури за одну секунду. Можна використовувати не лише ті значення, які наведені в таблиці, але й проміжні (наприклад, 9 або 16Н). При керуванні світлодіодама використовують команду OEDH. Потім в порт 60Н необхідно записати байт, що має наступний формат: біти значення  0 1 2 3-7 1 - включити світлодіод Scroll Lock 1 - включити світлодіод Num Lock 1 - включити світлодіод Caps Lock не використовується  Використання портів при роботі з клавіатурою є дуже громіздкою роботою для програміста, тому зручніше використати вже готові процедури і функції BIOS(Basic Input/Output System – Базова Система Вводу/Виводу), які розміщені в постійному запам'ятовуючому пристрої комп'ютера. Для вводу з клавіатури використовують переривання BIOS INT 16Н та переривання DOS INT 21Н. MOV AH, номер функції int 16h Функція 00h - означає чекати до того часу, поки користувач не натисне клавішу. В результаті, у регістрі AL, отримаємо код ASCII символу, а якщо в AL нуль, то в АН - розширений код ASCII. Функція 0lh - перевіряє готовність символу на ввід та виводить його, якщо він готовий. Контроль організований по значенню прапорця нуля, якщо клавішу натиснули, то ZF=0. В іншому випадку - ZF=1, тобто клавішу не натискали і черга порожня (ця функція не забирає символ з черги, а тільки перевіряє наявність) Функція 02h - читає статус Shift – клавіш. У результаті, в регістрі АL міститься статус клавіатури. Коли користувач натискає на клавішу, то автоматично викликається апаратне переривання BIOS. Далі клавіша розпізнається і її код записується в так звану чергу (буфер клавіатури). Буфер клавіатури - спеціальна ділянка пам'яті відведена під збереження кодів натиснених клавіш. Саме з буфера клавіатури (по черзі) зчитуються ASCII- коди клавіш, коли ми викликаємо функцію BIOS INT 16h (AH=00h). Прочитаний символ з буфера стирається. ЗАВДАННЯ КОД ПРОГРАМИ .model small .stack 100h .data d0 db 10,13,'-->>$' .code start: mov ax,@data mov ds,ax lea dx,d0 mov ah,9 int 21h janet: mov ah,8 int 21h cmp al,106 je exit cmp al,0 je rozsh ;----------------- cmp al,49 jne jjn1 mov dl,56 mov ah,2 int 21h jmp janet exit: mov ax,4c00h int 21h rozsh: mov ah,8 int 21h cmp al,59 je jF1 cmp al,60 je jF2 cmp al,61 je jF3 cmp al,62 je jF4 cmp al,63 je jF5 cmp al,64 je jF6 cmp al,65 je jF7 cmp al,66 je jF8 cmp al,67 je jF9 cmp al,68 je jF10 jmp janet jjn1: cmp al,50 jne jjn2 mov dl,55 mov ah,2 int 21h jmp janet jF1: mov ah,2 mov dl,113 int 21h jmp janet jF2: mov ah,2 mov dl,119 int 21h jmp janet jF3: mov ah,2 mov dl,101 int 21h jmp janet jF4: mov ah,2 mov dl,114 int 21h jmp janet jF5: mov ah,2 mov dl,116 int 21h jmp janet jF6: mov ah,2 mov dl,121 int 21h jmp janet jF7: mov ah,2 mov dl,117 int 21h jmp janet jF8: mov ah,2 mov dl,105 int 21h jmp janet jF9: mov ah,2 mov dl,111 int 21h jmp janet jF10: mov ah,2 mov dl,112 int 21h jmp janet jjn2: cmp al,51 jne jjn3 mov dl,54 mov ah,2 int 21h jmp janet jjn3: cmp al,52 jne jjn4 mov dl,53 mov ah,2 int 21h jmp janet jjn4: cmp al,53 jne jjn5 mov dl,52 mov ah,2 int 21h jmp janet jjn5: cmp al,54 jne jjn6 mov dl,51 mov ah,2 int 21h jmp janet jjn6: cmp al,55 jne jjn7 mov dl,50 mov ah,2 int 21h jmp janet jjn7: cmp al,56 jne jjn8 mov dl,49 mov ah,2 int 21h jmp janet jjn8: cmp al,57 jne jjn9 mov dl,48 mov ah,2 int 21h jmp janet jjn9: cmp al,48 jne jjn10 mov dl,57 mov ah,2 int 21h jmp janet jjn10: ;---------------- mov ah,2 mov dl,al int 21h jmp janet end start ВИСНОВКИ На даній лабораторній роботі ми вивчили основні шляхи програмування портів клавіатури на ЕОМ з мікропроцесором Intel 8086(80286).
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!