Giao tiếp với bàn phớm và mouse

Một phần của tài liệu Bài Giảng ghép nối máy tính (Trang 99)

7.1.1. Bàn phớm

• Cấu trỳc và chức năng:

Hỡnh 7.8 - 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 cho việc truyền số liệu này và cỏc chõn cắm của đầu nối bàn phớm.

SDU

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).

Tớn hiệu xung nhịp dựng cho việc trao đổi dữ liệu thụng tin nối tiếp đồng bộ với mạch ghộp nối bàn phớm (keyboard interface) trờn main board được truyền qua chõn số 1.

Một bộ điều khiển bàn phớm đó được lắp đặt trờn cơ sở cỏc chớp 8042, hoặc 8742,8741. Nú cú thể được chương trỡnh húa (thớ dụ khúa bàn phớm) hơn nữa số liệu cú thể truyền o 2 hướng từ bàn phớm và mạch ghộp nối, do vậy vi mó của chớp bàn

phớm cú thể giỳp cho việc nhận lệnh điều khiển từ PC, thớ dụ như đặt tốc độ lặp lại của nhấn bàn phớm,….

Hỡnh 7.9 – Đầu cắm bàn phớm AT

Hỡnh 7.10 – Đầu cắm bàn phớm PS/2

• Mó quột bàn phớm:

Mỗi phớm nhấn sẽ được gỏn cho 1 mó quột (scan code) gồm 1 byte. Nếu 1 phớm được nhấn thỡ bàn phớm phỏt ra 1 mó make code tương ứng với mó quột truyền tới mạch ghộp nối bàn phớm của PC. Ngắt cứng INT 09h được phỏt ra qua IRQ1.

Chương trỡnh xử lý ngắt sẽ xử lý mó này tuỳ o phớm SHIFT cú được nhấn hay khụng. Vớ dụ: nhấn phớm SHIFT trước, khụng rời tay và sau đú nhấn ‘C’: make code được truyền - 42(SHIFT) - 46 (‘C’).

Nếu rời tay nhấn phớm SHIFT thỡ bàn phớm sẽ phỏt ra break code và mó này được truyền như make code. Mó này giống như mó quột nhưng bit 7 được đặt lờn 1, do vậy nú tương đương với make code cụng với 128. Tuỳ o break code, chương trỡnh con xử lý ngắt sẽ xỏc định trạng thỏi nhấn hay rời của cỏc phớm. Thớ dụ, phớm SHIFT và ‘C’ được rời o thứ tự ngược lại với thớ dụ trờn: break code được truyền 174 ( bằng 46 cộng 128 tương ứng với ‘C’) và 170 (bằng 42 cộng 128 tương ứng với SHIFT).

Phần cứng và phần mềm xử lý bàn phớm cũn giải quyết cỏc vấn đề vật lý sau: Nhấn và nhả phớm nhưng khụng được phỏt hiện.

Khử nhiễu rung cơ khớ và phõn biệt 1 phớm được nhấn nhiều lần hay được nhấn chỉ 1 lần nhưng được giữ trong một khoảng thời gian dài.

• Truy xuất bàn phớm qua BIOS

BIOS ghi cỏc ký tự do việc nhấn cỏc phớm vào bộ đệm tạm thời được gọi là bộ đệm bàn phớm (keyboard buffer), cú địa chỉ 40:1E, gồm 32 byte và do vậy kết thỳc ở địa chỉ 40:3D. Mỗi ký tự được lưu trữ bằng 2 bytes, byte cao là mó quột, và byte thấp là mó ASCII. Như vậy, bộ đệm cú thể lưu trữ tạm thời 16 ký tự. Chương trỡnh xử lý

ngắt sẽ xỏc định mó ASCII từ mó quột bằng bảng biến đổi và ghi cả 2 mó vào bộ đệm bàn phớm. Bộ đệm bàn phớm được tổ chức như bộ đệm vũng (ring buffer) và được quản lý bởi 2 con trỏ. Cỏc giỏ trị con trỏ được lưu trữ trong vựng số liệu của BIOS ở địa chỉ 40:1A và 40:1C.

Ngắt INT 16h trong BIOS cung cấp 8 hàm cho bàn phớm. Thường cỏc hàm BIOS trả về một giỏ trị 0 của ASCII nếu phớm điều khiển hoặc chức năng được nhấn..

Cỏc thớ dụ:

Giả sử phớm ‘a’ đó được nhấn.

MOV AH,00h ; chạy hàm 00h, đọc ký tự INT 16h ; phỏt một interrupt

Kết quả: AH = 30 (mó quột cho phớm ‘a’); AL = 97 (ASSCII cho ‘a’) Giả sử phớm ‘.HOME’ đó được nhấn.

MOV AH,00h ; chạy hàm 00h, đọc ký tự INT 16h ; phỏt một interrupt

Kết quả: AH = 71 ( mó quột cho phớm ‘HOME’)

AL = 00 (cỏc phớm chức năng và điều khiển khụng cú mó ASCII) Giả sử phớm ‘HOME’ đó được nhấn.

MOV AH,10h ; chạy hàm 10h, đọc ký tự INT 16h ; phỏt một interrupt (adsbygoogle = window.adsbygoogle || []).push({});

Kết quả: AH = 71 (mó quột cho phớm ‘HOME’) AL = E0h

• Chương trỡnh với bàn phớm qua cỏc cổng:

Bàn phớm cũng là một thiết bị ngoại vi nờn về nguyờn tắc cú thể truy xuất nú qua cỏc cổng vào ra.

Cỏc thanh ghi và cỏc port:

Sử dụng 2 địa chỉ port 60h và 64h cú thể truy xuất bộ đệm vào, bộ đệm ra và thanh ghi điều khiển của bàn phớm.

Port Thanh ghi R/W

60h Đệm ngừ ra R

60h Đệm ngừ vào W

64h Thanh ghi điều khiển W 64h Thanh ghi trạng thỏi R

Thanh ghi trạng thỏi xỏc định trạng thỏi hiện tại của bộ điều khiển bàn phớm. Thanh ghi này chỉ đọc (read only). Cú thể đọc nú bằng lệnh IN tại port 64h.

PARE TIM AUXB KEYL C/D SYSF INPB OUTB PARE Lỗi chẵn lẻ của byte cuối cựng được vào từ bàn phớm; 1 = cú lỗi chẵn

lẻ, 0 = khụng cú.

TIM Lỗi quỏ thời gian (time-out); 1 = cú lỗi, 0 = khụng cú.

AUXB Đệm ra cho thiết bị phụ (chỉ cú ở mỏy PS/2); 1 = giữ số liệu cho thiết bị, 0 = giữ số liệu cho bàn phớm.

KEYL Trạng thỏi khúa bàn phớm; 1 = khụng khúa, 0 = khúa. C/D Lệnh/số liệu; 1 = Ghi qua port 64h, 0 = Ghi qua port 60h.

INPB Trạng thỏi đệm vào; 1 = số liệu CPU trong bộ đệm vào, 0 = đệm vào rỗng.

OUTB Trạng thỏi đệm ra; 1 = số liệu bộ điều khiển bàn phớm trong bộ đệm ra, 0 = đệm ra rỗng.

Hỡnh 7.11 Bộ điều khiển bàn phớm

Thanh ghi điều khiển (64h)

7 0

PARE TIM AUXB KEYL C/D SYSF INPB OUTB Cỏc lệnh cho bộ điều khiển bàn phớm:

Mó Lệnh A7h Cấm thiết bịphụ A8h Cho phộp thiết bịphụ

A9h Kiểm tra ghộp nối tới thiết bịphụ AAh Tựkiểm tra

ABh Kiểm tra ghộp nối bàn phớm ADh Cấm bàn phớm

AEh Cho phộp bàn phớm C0h Đọc cổng vào

C1h Đọc cổng vào ra (byte thấp) C2h Đọc cổng vào ra (byte cao) D0h Đọc cổng ra

D1h Ghi cổng ra

D2h Ghi đệm ra bàn phớm D3h Ghi đệm ra thiết bịphụ D4h Ghi thiết bịphụ

E0h Kiểm tra đọc cổng vào F0h Gửi 1 xung tới lối ra

FFh Cổng (adsbygoogle = window.adsbygoogle || []).push({});

Khúa bàn phớm: Start:

IN AL, 64h ; đọc byte trạng thỏi

TEST AL, 02h ; kiểm tra bộ đệm cú đầy hay khụng JNZ start ; một vài byte vẫn cũn trong bộ đệm vào OUT 64h, 0ADh ; khúa bàn phớm

Cỏc lệnh cho bàn phớm: Túm tắt cỏc lệnh bàn phớm:

Mó Lệnh Mụ tả

EDh Bật ON/OFF LED Bật/tắt cỏc đốn led của bàn phớm EEh Echo Trả về byte eeh

F0h Đặt/nhận diện Đặt 1 trong 3 mó quột và nhận diện cỏc mó quột tập mó quột hiện tại.

F2h Nhận diện bàn phớm Nhận diện ACK = AT, ACK+abh+41h=MF II. F3h Đặt tốc độ lặp lại/trễ Đặt tốc độ lặp lại và thời gian trễ của bàn phớm F4h Enable Cho phộp bàn phớm hoạt động

F5h Chuẩn/khụng cho phộp Đặt giỏ trị chuẩn và cấm bàn phớm. F6h Chuẩn/cho phộp Đặt giỏ trị chuẩn và cho phộp bàn phớm.

FEh Resend Bàn phớm truyền ký tựcuối cựng một lần nữa tới bộ điều khiển bàn phớm

Thớ dụ: lệnh bật đốn led cho phớm NUMCLOCK, tắt tất cả cỏc đốn khỏc. OUT 60H, EDH ; ra lệnh cho bật tắt cỏc đốn led

WAIT:

IN AL, 64H ; đọc thanh ghi trạng thỏi JNZ WAIT ; bộ đệm vào đầy

OUT 60H, 02H ; bật đốn cho numclock Cấu trỳc của byte chỉ thị như sau:

0 0 0 0 0 CPL NUM SCR CPL: 1 = bật đốn Caps Lock; 0 = tắt NUM: 1 = bật đốn Num Lock; 0 = tắt SCR: 1 = bật đốn Scr Lock; 0 = tắt 7.1.2. Chuột

• Cấu tạo

Cấu tạo của chuột rất đơn giản, phần trung tõm là 1 viờn bi thộp được phủ keo hoặc nhựa được quay khi dịch chuyển chuột. Chuyển động này được truyền tới 2 thanh nhỏ được đặt vuụng gúc với nhau. Cỏc thanh này sẽ biến chuyển động của chuột o 2 hướng X,Y thành sự quay tưong ứng của 2 đĩa gắn với chỳng. Trờn 2 đĩa cú những lỗ nhỏ liờn tục đúng và ngắt 2 chựm sỏng tới cỏc sensor nhạy sỏng để tạo ra cỏc xung điện. Số cỏc xung điện tỷ lệ với lượng chuyển động của chuột o cỏc hướng X,Y và số xung trờn 1 sec biểu hiện tốc độ của chuyển động chuột. Kốm o đú cú 2 hay 3 phớm bấm.

Hỡnh 7.12 Sơ đồ cấu tạo của chuột • Mạch ghộp nối và chương trỡnh điều khiển chuột

Hầu hết chuột được nối với PC qua cổng nối tiếp, qua đú chuột cũng được cấp nguồn nuụi từ PC. Khi dịch chuyển hoặc nhấn, nhả cỏc phớm chuột, nú sẽ phỏt ra một gúi cỏc số liệu tới mạch giao tiếp và mạch sẽ phỏt ra 1 ngắt. Phần mềm điều khiển chuột làm cỏc nhiệm vụ: chuyển ngắt tới mạch giao tiếp nối tiếp xỏc định, đọc gúi số liệu và cập nhật cỏc giỏ trị bờn trong liờn quan tới trạng thỏi của bàn phớm cũng như vị trớ của chuột.

Hơn nữa, nú cũn cung cấp 1 giao tiếp mềm qua ngắt của chuột là 33h để định cỏc giỏ trị bờn trong này cũng như làm dịch chuyển con trỏ chuột trờn màn hỡnh tương ứng với vị trớ của chuột.

Cú thể chọn kiểu con trỏ chuột cứng hoặc mềm trong chế độ văn bản hay con trỏ chuột đồ hoạ trong chế độ đồ họa. Cỏc hàm 09h và 0Ah trong ngắt 33h cho phộp định nghĩa loại và dạng con trỏ chuột.

• Chương trỡnh với con trỏ

Ngắt 33h cho phộp xỏc định vị trớ, số lần bấm nhỏy (click) phớm con trỏ và hỡnh dạng con trỏ. Để hiện con trỏ trờn màn hỡnh phải dựng hàm 01h. Hàm 09h định nghĩa con trỏ chuột trong chế độ đồ họa . Hỡnh bờn dưới là thớ dụ của mặt nạ con trỏ hỡnh mũi tờn trong trong kiểu hiện VGA phõn dải cao 256 màu. Ở đõy một điểm ảnh (pixel) được biểu diễn bằng 1 byte.

Đoạn chương trỡnh sau cho phộp hiện con trỏ mềm với màu số 3 và sỏng nhấp nhỏy: f . . . f f . . . f x f . . . f x x f . . . f x x x f . . . f x x x x f . . . f x x x x x f . . . f x x x x x x f . . . f x x x x f f f f . . . . .f . f f x f . . . f f x f x f . . . f . . f x x f . . . f . . . f x f . . . . . . f x x f . . . . . . f x f . . . . . . f . . . Hỡnh 7.13 Mặt nạ con trỏ chuột MOV AX, 0AH ; chọn hàm

MOV BX, 00H ; con trỏ chuột mềm MOV CX, 00H ; xoỏ ký tự trờn màn hỡnh

MOV DX, 8B02H ;BLNK=1b,BAK = 000b, INT = 1b, CHRx = 00000010b INT 33H ; gọi ngắt.

7.2 Giao tiếp PC Game

Bằng lệnh IN và OUT cú thể truy xuất qua địa chỉ 201h.

Hỡnh 7.6 - Cấu trỳc và chức năng của board ghộp nối trũ chơi

Hỡnh 7.7 - Cấu tạo của đầu nối 15 chõn và 2 joystick A và B (adsbygoogle = window.adsbygoogle || []).push({});

Chõn của đầu nối 15 chõn Sửdụng cho

2 Phớm 1 của Joystick A (BA1) 3 Biến trở X của Joystick A 6 Biến trở Y của Joystick A 7 Phớm 2 của Joystick A (BA2) 10 Phớm 1 của Joystick A (BB1) 11 Biến trở X của Joystick B 13 Biến trở Y của Joystick B 14 Phớm 2 của Joystick A (BB2) 1, 8, 9, 15 Vcc (+5V)

4, 5, 12 GND (0V)

Board mạch được nối với bus hệ thống của PC chỉ qua 8 bits thấp của bus dữ liệu, 10 bits thấp của bus địa chỉ và cỏc đường điều khiển IOR và IOW. Một đầu nối 15

chõn được nối với board mạch cho phộp nối cực đại hai thiết bị cho PC game gọi là joystick.

Mỗi joystick cú 2 biến trở cú giỏ trị biến đổi từ 0 đến 100kΩ được đặt vuụng gúc với nhau đại diện cho vị trớ x và y của joystick. Thờm nữa chỳng cú 2 phớm bấm, thường là cỏc cụng tắc thường hở phự hợp với cỏc mức logic cao của cỏc dõy trờn mạch.

Cú thể xỏc định được trạng thỏi nhấn hoặc nhả phớm một cỏch dễ dàng bằng lệnh IN tới địa chỉ 201h. Nibble cao chỉ thị trạng thỏi của phớm. Vỡ board khụng dựng đường IRQ do đú khụng cú khả năng phỏt ra 1 ngắt, do vậy board chỉ hoạt động trong chế độ hỏi vũng (polling). Byte trạng thỏi của board game như sau:

D7 D6 D5 D4 D3 D2 D1 D0 BB2 BB1 BA2 BA1 BY BX AY AX

BB2, BB1, BA2, BA1: Trạng thỏi của cỏc phớm B2, B1, A2, A1; 1 = nhả; 0 = nhấn

BY, BX, AY, AX: Trạng thỏi của mạch đa hài tuỳ thuộc vào biến trở tương ứng.

7.3 Monitor và card giao diện đồ hoạ 7.3.1. Nguyờn lý hiện ảnh trờn monitor 7.3.1. Nguyờn lý hiện ảnh trờn monitor

Phương phỏp hiện ảnh trờn màn hỡnh của monitor mỏy tớnh cũng giống như trong mỏy thu hỡnh thụng thường. Hỡnh bờn dưới minh họa việc hiện ảnh trờn màn hỡnh kiểu ống phúng tia õm cực CRT (cathode ray tube).

Hỡnh 7.14 – Cấu tạo ống hỡnh CRT

Cỏc điện tử phỏt xạ từ cathode trong ống được hội tụ thành 1 chựm tia, sau đú được tăng tốc và được làm lệch hướng chuyển động bởi cỏc bộ phận lỏi tia. Tia này sẽ đập vào màn hỡnh cú phủ chất huỳnh quang để tạo thành 1 điểm sỏng gọi là 1 điểm ảnh.

Do hiện tượng lưu ảnh trong vừng mạc của mắt người nờn khi tia điện tử được quột rất nhanh o chiều ngang từ trỏi sang phải sẽ tạo nờn 1 vệt sỏng ngang được gọi là dũng quột. Đến cuối 1 dũng, nú được quột ngược trở về bờn trỏi để quột tiếp dũng thứ 2 bờn dưới ..v..v.. Quỏ trỡnh quột cỏc dũng được dịch dần từ trờn xuống dưới cho suốt chiều dọc của màn hỡnh được gọi là quột dọc.

Độ chúi (sỏng tối) được quyết định bởi cường độ chựm tia đập vào màn hỡnh huỳnh quang và 1 điểm màu tự nhiờn được hiện nhờ sự trộn lẫn của 3 màu: đỏ, xanh dương, xanh lỏ cõy o 1 tỉ lệ nào đú. Ba màu này được hiện nhờ 3 tia điện tử cựng bắn vào 3 điểm trờn màn hỡnh kề cận nhau, mỗi điểm được phủ chất huỳnh quang phỏt ra cỏc màu tương ứng. 3 chựm tia điện tử đú được phỏt ra bởi 3 sỳng điện tử là 3 cathode được xếp đặt bờn trong CRT một cỏch cẩn thận. Cú 2 kiểu quột tia điện tử:

- Quột xen kẽ (interlaced): cỏc dũng lẻ được quột trước cho đến hết màn hỡnh o chiều dọc, gọi là mành lẻ; sau đú cỏc dũng chẵn tạo nờn mành chẵn được quột sau. Phương phỏp này cú ưu điểm là thu hẹp được dải tần số làm việc của thiết bị nhưng cú nhược điểm là hỡnh ảnh bị nhấp nhỏy.

- Quột khụng xen kẽ (non-interlaced): cỏc dũng quột được thực hiện tuần tự. Ưu điểm là hỡnh ảnh được điều chỉnh chớnh xỏc và ổn định nhưng thiết kế mạch điện sẽ khú hơn vỡ phải giải quyết vấn đề tăng dải tần làm việc.

Hiện nay cũn cú cỏc monitor dựng màn hỡnh tinh thể lỏng LCD hoặc ống chứa khớ được hoạt động o nguyờn lý tương tự như trờn nhưng khụng cú tia điện tử quột nờn thay vỡ cỏc điểm ảnh riờng biệt là cỏc phần tử phỏt sỏng được định địa chỉ một cỏch tuần tự. Do vậy, trờn cỏc monitor này hỡnh ảnh cũng được phỏt ra từng dũng một. Quỏ trỡnh quột ngược cũng khụng cũn nữa vỡ ở đõy đơn giản chỉ việc thay đổi địa chỉ về phần tử đầu dũng tiếp o.

7.3.2. Card giao tiếp đồ họa

Để hiện cỏc hỡnh ảnh, ký tự, hay hỡnh vẽ trờn màn hỡnh, PC phải thụng qua mạch ghộp nối màn hỡnh (graphics adapter). Board mạch này thường được cắm trờn khe cắm mở rộng của PC. Sơ đồ khối như hỡnh sau:

Hỡnh 7.15 Sơ đồ khối của bản mạch ghộp nối màn hỡnh Bus Interface: ghộp nối bus;

Video Ram: Ram Video

Character code: mó ký tự

Attribute information: thụng tin thuộc tớnh; Character rom: rom ký tự

Attribute decoder: bộ giải mó thuộc tớnh; Shift register: thanh ghi dịch

Character generator: mỏy phỏt ký tự; Synchronization information: thụng tin đồng bộ.

Phần trung tõm là chip điều khiển ống hỡnh CRTC (cathode ray tube controller). CPU thõm nhập RAM Video qua mạch ghộp nối bus để ghi thụng tin xỏc định ký tự hay hỡnh vẽ cần hiển thị. CRTC liờn tục phỏt ra cỏc địa chỉ để Ram video đọc cỏc ký tự trong đú và truyền chỳng tới mỏy phỏt ký tự (character generator).

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Bài Giảng ghép nối máy tính (Trang 99)