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).
ứ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:
- giao_trinh_lap_trinh_he_thong_chuong_3_giao_tiep_thiet_bi_ch.pdf