Скачиваний:
23
Добавлен:
15.09.2014
Размер:
6.37 Кб
Скачать

6. Љ« ўЁ вга 

6.1. Љ« ўЁ вга  IBM PC/XT

‘ўп§м б Є« ўЁ вга®© ®бгйҐбвў«пҐвбп зҐаҐ§ Ї®авл ЏЏ€ 60h Ё
61h (б¬. 5.2). ЏаЁ ­ ¦ вЁЁ Є« ўЁиЁ Їа®Ёб室Ёв  ЇЇ а в­®Ґ
ЇаҐалў ­ЁҐ IRQ1, бўп§ ­­®Ґ б ўҐЄв®а®¬ Int 9. …б«Ё ‚л е®вЁвҐ
®Ўа Ў влў вм нв® ЇаҐалў ­ЁҐ б ¬Ё, в® Їа®Ја ¬¬  ®Ўа Ў®вЄЁ
ЇаҐалў ­Ёп ¤®«¦­  Ё¬Ґвм б«Ґ¤гойЁ© ўЁ¤:

Int_09h:
push ax
push di
push es
in al,60h ;бЄ ­. Є®¤ Є« ўЁиЁ Ё§ ђЂ
les di,buffer ; ¤аҐб ЎгдҐа 
stosb ;б®еа ­Ёвм Є®¤ ў ЎгдҐаҐ
pop es
pop di
in al,61h ;ўў®¤ Ї®ав  ђ‚
mov ah,al
or al,80h ;гбв ­®ўЁвм ЎЁв "Ї®¤вўҐа¦¤Ґ­Ёп ўў®¤ "
out 61h,al
xchg ah,al ;ўлўҐбвЁ бв а®Ґ §­ зҐ­ЁҐ ђ‚
out 61h,al
mov al,20h ;Ї®б« вм бЁЈ­ « EOI
out 20h,al ;Є®­ва®««Ґаг ЇаҐалў ­Ё©
pop ax
iret

ЏҐаҐзҐ­м бЄ ­-Є®¤®ў ўбҐе Є« ўЁи ЇаЁўҐ¤Ґ­ ў ЇаЁ«®¦Ґ­ЁЁ 1. ‚л
¬®¦ҐвҐ § ЇаҐвЁвм ЇаҐалў ­Ёп ®в Є« ўЁ вгал «ЁЎ® ¬ бЄЁа®ўЄ®© ЎЁв 
1 ў ॣЁбвॠIMR Є®­ва®««Ґа  ЇаҐалў ­Ё©, «ЁЎ® гбв ­®ўЄ®© ЎЁв  6
Ї®ав  ђ‚ ЏЏ€:

in al,21h ;з⥭ЁҐ IMR
or al,2 ;гбв ­®ўЄ  ЎЁв  1
out 21h,al ;§ ЇЁбм IMR
Ё«Ё
in al,61h ;з⥭ЁҐ ђ‚
or al,40h ;гбв ­®ўЄ  ЎЁв  6
out 61h,al ;§ ЇЁбм ђ‚

„«п а §аҐиҐ­Ёп а Ў®вл Є« ўЁ вгал ­Ґ®Ўе®¤Ё¬® ўлЇ®«­Ёвм
®Ўа в­лҐ ¤Ґ©бвўЁп.


6.2. Љ« ўЁ вга  IBM PC AT

‚§ Ё¬®¤Ґ©бвўЁҐ б Є« ўЁ вга®© ў PC AT Ў §ЁагҐвбп ­ 
¬ЁЄа®Їа®жҐбб®аҐ Intel 8042; Ў« Ј®¤ ап н⮬㠯ணࠬ¬Ёбв Ё¬ҐҐв
Ј®а §¤® Ў®«миЁҐ ў®§¬®¦­®бвЁ Ї® гЇа ў«Ґ­Ёо Є« ўЁ вга®©, ­Ґ¦Ґ«Ё ў
PC/XT.

“Їа ў«Ґ­ЁҐ Є« ўЁ вга®© Їа®Ё§ў®¤Ёвбп ®Ўа йҐ­ЁҐ¬ Є Ї®авг
ўў®¤ -ўлў®¤  64h. „«п б®ў¬ҐбвЁ¬®бвЁ б® бв ал¬Ё Џќ‚Њ ¤®ЇгбвЁ¬®
ЁбЇ®«м§®ў ­ЁҐ Ї®ав  60h. …б«Ё ЇаЁўҐ¤Ґ­­лҐ ­Ё¦Ґ ЇаЁ¬Ґал ­Ґ
а Ў®в ов ­  ‚ иҐ© Џќ‚Њ, в® ЁбЇ®«м§г©вҐ Ї®ав 60h.

Џ®ав 64h ЇаҐ¤­ §­ зҐ­ ¤«п ўлў®¤  Є®¬ ­¤ Ё ¤ ­­ле Ё ¤«п
з⥭Ёп б®бв®п­Ёп Є« ўЁ вгал. ЋЎи п б奬  Ї®бл«ЄЁ Є®¬ ­¤ Є« ўЁ -
вгаe в Є®ў :

cli ;§ ЇаҐв ЇаҐалў ­Ё©
call wait_kbd ;®¦Ё¤ ­ЁҐ Ј®в®ў­®бвЁ Є« ўЁ вгал
mov al,cmd_code ;Є®¤ Є®¬ ­¤л
out 64h,al ;ўлў®¤ ў Ї®ав
sti ;а §аҐиҐ­ЁҐ ЇаҐалў ­Ё©

„«п Є®¬ ­¤, б®Їа®ў®¦¤ ойЁебп Ў ©в®¬ ¤ ­­ле, нв  б奬 
ЇаЁ­Ё¬ Ґв ўЁ¤:

cli
call wait_kbd
mov al,cmd_code ;Є®¤ Є®¬ ­¤л
out 64h,al
call wait_kbd
mov al,data_value ;Ў ©в ¤ ­­ле
out 64h,al
sti

Џа®ўҐаЄ  ®¦Ё¤ ­Ёп Ј®в®ў­®бвЁ Є« ўЁ вгал ¬®¦Ґв Ё¬Ґвм ўЁ¤:

wait_kbd:
mov cx,2500h ;§ ¤Ґа¦Є  Ї®ап¤Є  10 ¬бҐЄ
test_kbd:
in al,64h ;зЁв Ґ¬ б®бв®п­ЁҐ Є« ўЁ вгал
test al,2 ;Їа®ўҐаЄ  ЎЁв  Ј®в®ў­®бвЁ
loopnz test_kbd
ret

Ђўв®а ¬ Ё§ўҐбв­л б«Ґ¤гойЁҐ Є®¬ ­¤л Є®­ва®««Ґа  Є« ўЁ вгал
(нв®в бЇЁб®Є, ўҐа®пв­®, ­Ґ Ї®«®­ Ё ¬®¦Ґв ᮤҐа¦ вм ®иЁЎЄЁ, в. Є.
б®Ўа ­ Ё§ а §«Ёз­ле Ёбв®з­ЁЄ®ў):

Љ®¤ Є®¬ ­¤л ЋЇЁб ­ЁҐ
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0FFh ‘Ўа®б Є« ўЁ вгал Ё § ЇгбЄ ў­гв७­ҐЈ® вҐбв .
0FEh Џ®ўв®аЁвм Ї®б«Ґ¤­оо ЇҐаҐ¤ зг.
0FDh ‚맮ў ЇаҐалў ­Ёп IRQ1.
0F6h ЏаЁўҐбвЁ Є« ўЁ вгаг ў Ёб室­®Ґ б®бв®п­ЁҐ Ё
а §аҐиЁвм бЄ ­Ёа®ў ­ЁҐ.
0F5h ЏаЁўҐбвЁ Є« ўЁ вгаг ў Ёб室­®Ґ б®бв®п­ЁҐ Ё
§ ЇаҐвЁвм бЄ ­Ёа®ў ­ЁҐ.
0F4h ‘Ўа®бЁвм ЎгдҐа Є« ўЁ вгал Ё ­ з вм бЄ ­Ёа®ў ­ЁҐ.
0F3h ‡ ¤ вм § ¤Ґа¦Єг Ё бЄ®а®бвм ўў®¤  бЁ¬ў®«®ў.
ЏҐаў®­ з «м­® Є« ўЁ вга  ­ зЁ­ Ґв Ї®ўв®апвм
­ ¦ вго Є« ўЁиг зҐаҐ§ 0,5 ᥪ б® бЄ®а®бвмо
10 Ї®ўв®а®ў ў ᥪ㭤г. ‚л ¬®¦ҐвҐ Ё§¬Ґ­Ёвм нвЁ
Ї а ¬Ґвал, Ї®б« ў б«Ґ¤гойЁ© Ў ©в ¤ ­­ле:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і0 і і і ЃЁвл:
АДДБДДЕДДБДДБДДБВДБДДБДДЩ ДДДДД
і АДДДДДДДД> 0-4:Є®«ЁзҐбвў Ї®ўв®а®ў ў ᥪ㭤г
АДДДДДДДДДДДДДДДДДД> 5-6:­ з «м­ п § ¤Ґа¦Є  ў ¬бҐЄ:
00=250, 01=500, 10=750, 11=1000

Љ®«ЁзҐбвў® Ї®ўв®а®ў § ¤ Ґвбп б«Ґ¤го饩 в Ў«ЁжҐ©:

ЪДДДДДДВДДДДДДДДВДДДДДДВДДДДДДДДВДДДДДДВДДДДДДДДї
іЉ®­бв.і‘Є®а®бвміЉ®­бв.і‘Є®а®бвміЉ®­бв.і‘Є®а®бвмі
ГДДДДДДЕДДДДДДДДЕДДДДДДЕДДДДДДДДЕДДДДДДЕДДДДДДДДґ
і 00h і 30.0 і 0Bh і 10.9 і 16h і 4.3 і
і 01h і 26.7 і 0Ch і 10.0 і 17h і 4.0 і
і 02h і 24.0 і 0Dh і 9.2 і 18h і 3.7 і
і 03h і 21.8 і 0Eh і 8.6 і 19h і 3.3 і
і 04h і 20.0 і 0Fh і 8.0 і 1Ah і 3.0 і
і 05h і 18.5 і 10h і 7.5 і 1Bh і 2.7 і
і 06h і 17.1 і 11h і 6.7 і 1Ch і 2.5 і
і 07h і 16.0 і 12h і 6.0 і 1Dh і 2.3 і
і 08h і 15.0 і 13h і 5.5 і 1Eh і 2.1 і
і 09h і 13.3 і 14h і 5.0 і 1Fh і 2.0 і
і 0Ah і 12.0 і 15h і 4.6 і і і
АДДДДДДБДДДДДДДДБДДДДДДБДДДДДДДДБДДДДДДБДДДДДДДДЩ

0EEh ќе® (¤«п ¤Ё Ј­®бвЁЄЁ). Џа®бв® ў®§ўа й Ґв 0……h.
0EDh “Їа ў«Ґ­ЁҐ ᢥ⮤Ё®¤ ¬Ё Є« ўЁ вгал. „«п ўЄ«о祭Ёп
Ё«Ё ўлЄ«о祭Ёп ᢥ⮤Ё®¤®ў Ї®и«ЁвҐ в Є®© Ў ©в
¤ ­­ле:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і і ЃЁвл:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
і і АДД> 0: 1 = ўЄ«озЁвм ScrollLock
і АДДДДД> 1: 1 = ўЄ«озЁвм NumLock
АДДДДДДДД> 2: 1 = ўЄ«озЁвм CapsLock

0DFh ђ §аҐиЁвм 20-ЎЁв®ўго  ¤аҐб жЁо.
0DDh ‡ ЇаҐвЁвм 20-ЎЁв®ўго  ¤аҐб жЁо.
0D1h ‡ ЇЁбм ў Ї®ав ўлў®¤  8042.
0D0h —⥭ЁҐ Ї®ав  ўлў®¤  8042.
0C0h —⥭ЁҐ Ї®ав  ўў®¤  8042.
0AEh ђ §аҐиҐ­ЁҐ Є« ўЁ вгал.
0ADh ‡ ЇаҐйҐ­ЁҐ Є« ўЁ вгал.
0ACh —⥭ЁҐ Ћ‡“ Є®­ва®««Ґа .
0ABh ’Ґбв бЁ­еа®­Ё§ жЁЁ Ё ¤ ­­ле.
0AAh ‚­гв७­Ё© вҐбв Є« ўЁ вгал.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Соседние файлы в папке Клавиатура