МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
Звіт
з лабораторної роботи № 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).