Giáo trình Lập trình hệ thống - Chương 3: Giao tiếp thiết bị chuẩn

1. Giao tiếp bàn phím

1.1. Nguyên lý hoạt động

Hình 3.1 - Sơ đồ nguyên lý và các ghép nối của bàn phím

Chip xử lý bàn phím liên tục kiểm tra trạng thái của ma trận quét (scan matrix) để

xác định công tắc tại các tọa độ X, Y đang được đóng hay mở và ghi một mã tương ứng vào

bộ đệm bên trong bàn phím. Sau đó mã này sẽ được truyền nối tiếp tới mạch ghép nối bàn

phím trong PC. Cấu trúc của SDU (Serial Data Unit) cho việc truyền số liệu:

0 10

STRT DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 PAR STOP

STRT: bit start (luôn bằng 0)

DB0 - DB7: bit số liệu từ 0 đến 7.

PAR: bit parity (luôn lẻ)

STOP: bit stop (luôn bằng 1).

pdf26 trang | Chuyên mục: Lập Trình Hệ Thống Và Mạng | Chia sẻ: yen2110 | Lượt xem: 453 | Lượt tải: 0download
Tóm tắt nội dung Giáo trình Lập trình hệ thống - Chương 3: Giao tiếp thiết bị chuẩn, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ức rất đơn giản 
như 1 dãy tuyến tính, trong đó 1 byte tương ứng với 1 điểm ảnh. Giá trị của byte phân định 
màu của điểm ảnh. Kiểu này đòi hỏi 320 byte (140h) trên 1 dòng (320 điểm ảnh / 1 điểm 
ảnh trên 1 byte). Một trang màn hình gồm 64 KB (10000h) nhưng chỉ có 64000 byte được 
sử dụng. Địa chỉ của điểm ảnh trong dòng i, cột j (i = 0-199, j=0-319) là: 
Address (i,j) = A0000h + 140h*j + i 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 67 
PHỤ LỤC CHƯƠNG 3 
TITLE DISPLAYING MOUSE POSITION 
CURSOR MACRO ROW,COLUMN 
 MOV AH,02H 
 MOV BH,00 
 MOV DH,ROW 
 MOV DL,COLUMN 
 INT 10H 
 ENDM 
DISPLAY MACRO STRING 
 MOV AH,09H 
 MOV DX,OFFSET STRING 
 INT 21H 
 ENDM 
.MODEL SMALL 
.STACK 
.DATA 
MESSAGE_1 DB 'PRESS ANY KEY$' 
MESSAGE_2 DB 'THE MOUSE CURSOR IS LOCATED AT $' 
POS_HO DB ?,?, ' AND $' 
POS_VE DB ?,?,'$' 
OLDVIDEO DB ? ;current video mode 
NEWVIDEO DB 0EH ;new video mode 
.CODE 
MAIN PROC 
 MOV AX,@DATA 
 MOV DS,AX 
 MOV AH,0FH ;get current video mode 
 INT 10H 
 MOV OLDVIDEO,AL ;save it 
 MOV AX,0600H ;clear screen 
 MOV BH,07 
 MOV CX,0 
 MOV DX,184FH 
 INT 10H 
 MOV AH,00H ;set new video mode 
 MOV AL,NEWVIDEO 
 INT 10H 
 MOV AX,0 ;initialize mouse 
 INT 33H 
 MOV AX,01 ;show mouse cursor 
 INT 33H 
 CURSOR 20,20 
 DISPLAY MESSAGE_1 
AGAIN: 
 MOV AX,03H ;get mouse location 
 INT 33H 
 MOV AX,CX ;get the hor. pixel position 
 CALL CONVERT 
 MOV POS_HO,AL ;save the LSD 
 MOV POS_HO+1,AH ;save the MSD 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 68 
 MOV AX,DX ;get the vert. pixel position 
 CALL CONVERT 
 MOV POS_VE,AL ;save 
 MOV POS_VE+1,AH 
 CURSOR 5,20 
 DISPLAY MESSAGE_2 
 DISPLAY POS_HO 
 DISPLAY POS_VE 
 MOV AH,01 ;check for key press 
 INT 16H 
 JZ AGAIN ;if no key press 
 MOV AH,02 ;hide mouse 
 INT 33H 
 MOV AH,0 ;restore original video mode 
 MOV AL,OLDVIDEO ;load original video mode 
 MOV AH,0 ;restore original video mode 
 INT 10H 
 MOV AH,4CH ;go back to DOS 
 INT 21H 
MAIN ENDP 
;-------------------- 
;divide pixels position by 8 and convert to ASCII to make 
it displayable 
;ax=pixels position (it is in hex) 
;on return ax= two ASCII digits 
CONVERT PROC 
SHR AX,1 ;divide 
SHR AX,1 ;by 8 
SHR AX,1 ;to get screen position by character 
MOV BL,10 
MOV AH,0 
DIV BL 
ADD AX,3030H ;make it ASCII 
RET ;return with AX=two ASCII digits 
CONVERT ENDP 
END MAIN 
-------------------------------------------------------------------- 
;THIS PROGRAM WAITS FOR THE MOUSE PRESS COUNT AND 
;DISPLAYS IT WHEN ANY KEY IS PRESSED. 
.MODEL SMALL 
.STACK 
.DATA 
MESSAGE_1 DB 'PRESS LEFT BUTTON A NUMBER OF TIMES:LESS 
THAN 99.$' 
MESSAGE_2 DB 'TO FIND OUT HOW MANY TIMES, PRESS ANY 
KEY$' 
MESSAGE_3 DB 'YOU PRESSED IT $' 
P_COUNT DB ?,?, ' TIMES $' 
MESSAGE_4 DB 'NOW PRESS ANY KEY TO GO BACK TO DOS$' 
OLDVIDEO DB ? 
NEWVIDEO DB 12H 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 69 
.CODE 
MAIN PROC 
 MOV AX,@DATA 
 MOV DS,AX 
 MOV AH,0FH ;get current video mode 
 INT 10H 
 MOV OLDVIDEO,AL ;save it 
 MOV AX,0600H ;clear screen 
 MOV BH,07 
 MOV CX,0 
 MOV DX,184FH 
 INT 10H 
 MOV AH,00H ;set new video mode 
 MOV AL,NEWVIDEO 
 INT 10H 
 MOV AX,0 ;initialize mouse 
 INT 33H 
 MOV AX,01 ;show mouse cursor 
 INT 33H 
 CURSOR 2,1 
 DISPLAY MESSAGE_1 
 CURSOR 4,1 
 DISPLAY MESSAGE_2 
 MOV AH,07 ;wait for key press 
 INT 21H 
 MOV AX,05H ;get mouse press count 
 MOV BX,0 ;check press count for left button 
 INT 33H 
 MOV AX,BX ;BX=button press count 
 MOV BL,10 
 DIV BL 
 ADD AX,3030H 
 MOV P_COUNT,AL ;save the number 
 MOV P_COUNT+1,AH 
 CURSOR 10,2 
 DISPLAY MESSAGE_3 
 DISPLAY P_COUNT 
 CURSOR 20,2 
 DISPLAY MESSAGE_4 
 MOV AH,07 ;wait for a key press to get out 
 INT 21H 
 MOV AH,02 ;hide mouse 
 INT 33H 
 MOV AH,0 ;restore original video mode 
 MOV AL,OLDVIDEO ;load original vide mode 
 INT 10H 
 MOV AH,4CH ;go back to DOS 
 INT 21H 
MAIN ENDP 
 END MAIN 
;----------------------------------------------------- 
.MODEL SMALL 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 70 
.STACK 100h 
.DATA 
mask_mon DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh 
 DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh 
 DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh 
 DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh 
mask_p DB 80h,0,0E0h,0,0F8h,0,0FEh,0 
 DB 0D8h,0,0Ch,0,6,0,3,0 
 DB 0,0,0,0,0,0,0,0 
 DB 0,0,0,0,0,0,0,0 
.CODE 
 main PROC 
 mov ax,@data 
 mov ds,ax 
 mov es,ax 
 mov ah,0 
 mov al,6 
 int 10h 
 mov ax,0 
 int 33h 
 mov ax,1 
 int 33h 
 mov ah,08h 
 int 21h 
 mov ax,9 
 mov bx,0 
 mov cx,0 
 lea dx,mask_mon 
 int 33h 
 mov ah,08h 
 int 21h 
 mov ah,4Ch 
 int 21h 
 main ENDP 
 END main 
1000000000000000 
1110000000000000 
1111100000000000 
1111111000000000 
1101100000000000 
0000110000000000 
0000011000000000 
0000001100000000 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 71 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 
0000000000000000 
Keyboard Scan Codes: Set 1 
*All values are in hexadecimal 
101-, 102-, and 104-key keyboards: 
KEY MAKE BREAK ----- KEY MAKE BREAK ----- KEY MAKE BREAK
A 1E 9E 9 0A 8A [ 1A 9A 
B 30 B0 ` 29 89 INSERT E0,52 E0,D2 
C 2E AE - 0C 8C HOME E0,47 E0,97 
D 20 A0 = 0D 8D PG UP E0,49 E0,C9 
E 12 92 \ 2B AB DELETE E0,53 E0,D3 
F 21 A1 BKSP 0E 8E END E0,4F E0,CF 
G 22 A2 SPACE 39 B9 PG DN E0,51 E0,D1 
H 23 A3 TAB 0F 8F U ARROW E0,48 E0,C8 
I 17 97 CAPS 3A BA L ARROW E0,4B E0,CB 
J 24 A4 L SHFT 2A AA D ARROW E0,50 E0,D0 
K 25 A5 L CTRL 1D 9D R ARROW E0,4D E0,CD 
L 26 A6 L GUI E0,5B E0,DB NUM 45 C5 
M 32 B2 L ALT 38 B8 KP / E0,35 E0,B5 
N 31 B1 R SHFT 36 B6 KP * 37 B7 
O 18 98 R CTRL E0,1D E0,9D KP - 4A CA 
P 19 99 R GUI E0,5C E0,DC KP + 4E CE 
Q 10 19 R ALT E0,38 E0,B8 KP EN E0,1C E0,9C 
R 13 93 APPS E0,5D E0,DD KP . 53 D3 
S 1F 9F ENTER 1C 9C KP 0 52 D2 
T 14 94 ESC 01 81 KP 1 4F CF 
U 16 96 F1 3B BB KP 2 50 D0 
V 2F AF F2 3C BC KP 3 51 D1 
W 11 91 F3 3D BD KP 4 4B CB 
X 2D AD F4 3E BE KP 5 4C CC 
Y 15 95 F5 3F BF KP 6 4D CD 
Z 2C AC F6 40 C0 KP 7 47 C7 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 72 
0 0B 8B F7 41 C1 KP 8 48 C8 
1 02 82 F8 42 C2 KP 9 49 C9 
2 03 83 F9 43 C3 ] 1B 9B 
3 04 84 F10 44 C4 ; 27 A7 
4 05 85 F11 57 D7 ' 28 A8 
5 06 86 F12 58 D8 , 33 B3 
6 07 87 PRNT SCRN 
E0,2A, 
E0,37 
 E0,B7, 
E0,AA . 34 B4 
7 08 88 SCROLL 46 C6 / 35 B5 
8 09 89 PAUSE E1,1D,45 E1,9D,C5 -NONE- 
Keyboard Scan Codes: Set 2 
*All values are in hexadecimal 
101-, 102-, and 104-key keyboards: 
KEY MAKE BREAK ----- KEY MAKE BREAK ----- KEY MAKE BREAK
A 1C F0,1C 9 46 F0,46 [ 54 FO,54 
B 32 F0,32 ` 0E F0,0E INSERT E0,70 E0,F0,70
C 21 F0,21 - 4E F0,4E HOME E0,6C E0,F0,6C
D 23 F0,23 = 55 FO,55 PG UP E0,7D E0,F0,7D
E 24 F0,24 \ 5D F0,5D DELETE E0,71 E0,F0,71
F 2B F0,2B BKSP 66 F0,66 END E0,69 E0,F0,69
G 34 F0,34 SPACE 29 F0,29 PG DN E0,7A E0,F0,7A
H 33 F0,33 TAB 0D F0,0D U ARROW E0,75 E0,F0,75
I 43 F0,43 CAPS 58 F0,58 L ARROW E0,6B E0,F0,6B
J 3B F0,3B L SHFT 12 FO,12 D ARROW E0,72 E0,F0,72
K 42 F0,42 L CTRL 14 FO,14 R ARROW E0,74 E0,F0,74
L 4B F0,4B L GUI E0,1F E0,F0,1F NUM 77 F0,77 
M 3A F0,3A L ALT 11 F0,11 KP / E0,4A E0,F0,4A
N 31 F0,31 R SHFT 59 F0,59 KP * 7C F0,7C 
O 44 F0,44 R CTRL E0,14 E0,F0,14 KP - 7B F0,7B 
P 4D F0,4D R GUI E0,27 E0,F0,27 KP + 79 F0,79 
Q 15 F0,15 R ALT E0,11 E0,F0,11 KP EN E0,5A E0,F0,5A
R 2D F0,2D APPS E0,2F E0,F0,2F KP . 71 F0,71 
S 1B F0,1B ENTER 5A F0,5A KP 0 70 F0,70 
T 2C F0,2C ESC 76 F0,76 KP 1 69 F0,69 
U 3C F0,3C F1 05 F0,05 KP 2 72 F0,72 
V 2A F0,2A F2 06 F0,06 KP 3 7A F0,7A 
W 1D F0,1D F3 04 F0,04 KP 4 6B F0,6B 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 73 
X 22 F0,22 F4 0C F0,0C KP 5 73 F0,73 
Y 35 F0,35 F5 03 F0,03 KP 6 74 F0,74 
Z 1A F0,1A F6 0B F0,0B KP 7 6C F0,6C 
0 45 F0,45 F7 83 F0,83 KP 8 75 F0,75 
1 16 F0,16 F8 0A F0,0A KP 9 7D F0,7D 
2 1E F0,1E F9 01 F0,01 ] 5B F0,5B 
3 26 F0,26 F10 09 F0,09 ; 4C F0,4C 
4 25 F0,25 F11 78 F0,78 ' 52 F0,52 
5 2E F0,2E F12 07 F0,07 , 41 F0,41 
6 36 F0,36 PRNT SCRN 
E0,12, 
E0,7C 
E0,F0, 
7C,E0, 
F0,12 
 . 49 F0,49 
7 3D F0,3D SCROLL 7E F0,7E / 4A F0,4A 
8 3E F0,3E PAUSE
E1,14,77, 
E1,F0,14, 
F0,77 
-NONE- 
AT Keyboard Scan Codes (Set 3) 
KEY MAKE BREAK ----- KEY MAKE BREAK ----- KEY MAKE BREAK 
A 1C F0,1C 9 46 F0,46 [ 54 F0,54 
B 32 F0,32 ` 0E F0,0E INSERT 67 F0,67 
C 21 F0,21 - 4E F0,4E HOME 6E F0,6E 
D 23 F0,23 = 55 F0,55 PG UP 6F F0,6F 
E 24 F0,24 \ 5C F0,5C DELETE 64 F0,64 
F 2B F0,2B BKSP 66 F0,66 END 65 F0,65 
G 34 F0,34 SPACE 29 F0,29 PG DN 6D F0,6D 
H 33 F0,33 TAB 0D F0,0D U ARROW 63 F0,63 
I 43 F0,48 CAPS 14 F0,14 L ARROW 61 F0,61 
J 3B F0,3B L SHFT 12 F0,12 D ARROW 60 F0,60 
K 42 F0,42 L CTRL 11 F0,11 R ARROW 6A F0,6A 
L 4B F0,4B L WIN 8B F0,8B NUM 76 F0,76 
M 3A F0,3A L ALT 19 F0,19 KP / 4A F0,4A 
N 31 F0,31 R SHFT 59 F0,59 KP * 7E F0,7E 
O 44 F0,44 R CTRL 58 F0,58 KP - 4E F0,4E 
P 4D F0,4D R WIN 8C F0,8C KP + 7C F0,7C 
Q 15 F0,15 R ALT 39 F0,39 KP EN 79 F0,79 
R 2D F0,2D APPS 8D F0,8D KP . 71 F0,71 
S 1B F0,1B ENTER 5A F0,5A KP 0 70 F0,70 
T 2C F0,2C ESC 08 F0,08 KP 1 69 F0,69 
Tài liệu Lập trình hệ thống Chương 3 
Phạm Hùng Kim Khánh Trang 74 
U 3C F0,3C F1 07 F0,07 KP 2 72 F0,72 
V 2A F0,2A F2 0F F0,0F KP 3 7A F0,7A 
W 1D F0,1D F3 17 F0,17 KP 4 6B F0,6B 
X 22 F0,22 F4 1F F0,1F KP 5 73 F0,73 
Y 35 F0,35 F5 27 F0,27 KP 6 74 F0,74 
Z 1A F0,1A F6 2F F0,2F KP 7 6C F0,6C 
0 45 F0,45 F7 37 F0,37 KP 8 75 F0,75 
1 16 F0,16 F8 3F F0,3F KP 9 7D F0,7D 
2 1E F0,1E F9 47 F0,47 ] 5B F0,5B 
3 26 F0,26 F10 4F F0,4F ; 4C F0,4C 
4 25 F0,25 F11 56 F0,56 ' 52 F0,52 
5 2E F0,2E F12 5E F0,5E , 41 F0,41 
6 36 F0,36 PRNT SCRN 57 F0,57 . 49 F0,49 
 3D F0,3D SCROLL 5F F0,5F / 4A F0,4A 
8 3E F0,3E PAUSE 62 F0,62 

File đính kèm:

  • pdfgiao_trinh_lap_trinh_he_thong_chuong_3_giao_tiep_thiet_bi_ch.pdf
Tài liệu liên quan