« Home « Kết quả tìm kiếm

Tài liệu Lập trình hệ thống Chương 3


Tóm tắt Xem thử

- Tài liệu Lập trình hệ thống Chương 3 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 Keyboard Keyboard Interface IRQ1 Y- Decoder IRQ Logic D0 Serial 11 bits SDU D1 Interface D2 (PC/XT) Keyboard chip X - Decoder D3 or Scan Keyboard Matrix D4 Controller D Keyboard cable (AT ect) D6 Scan Enable D7 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.
- Phạm Hùng Kim Khánh Trang 49 Tài liệu Lập trình hệ thống Chương 3 Chân 1: clock Chân 2: dữ liệu Chân 3: Reset Chân 4: GND Chân 5: Vcc Hình 3.2 – Đầu cắm bàn phím AT Chân 1: dữ liệu Chân 2: không dùng Chân 3: GND Chân 4: Vcc Chân 5: clock Chân 6: không dùng Hình 3.3 – Đầu cắm bàn phím PS/2 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.
- 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.
- 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.
- Lập trình giao tiếp 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.
- 7 0 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 = 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 = dữ liệu bộ điều khiển bàn phím trong bộ đệm ra, 0 = đệm ra rỗng.
- Thanh ghi điều khiển Các lệnh cho bộ điều khiển bàn phím: Mã Mô tả A7h Cấm thiết bị phụ A8h Cho phép thiết bị phụ A9h Kiểm tra giao tiếp thiết bị phụ và lưu mã kiểm tra vào bộ đệm ra 00h: không lỗi 01h: CLK ở mức thấp 02h: CLK ở mức cao 03h: DATA ở mức thấp Phạm Hùng Kim Khánh Trang 51 Tài liệu Lập trình hệ thống Chương 3 04h: DATA ở mức cao FFh: lỗi khác AAh Tự kiểm tra (ghi 55h vào bộ đệm ra nếu không lỗi ABh Kiểm tra giao tiếp bàn phím và lưu mã kiểm tra vào bộ đệm ra ADh Cấm bàn phím AEh Cho phép bàn phím C0h Đọc cổng vào và truyền dữ liệu đến bộ đệm ra C1h Đọc các bit 3 – 0 của cổng vào và truyền đến các bit 3- 0 của thanh ghi trạng thái cho đến khi INPB = 1 C2h Đọc các bit 7 – 4 của cổng vào và truyền đến các bit 7- 4 của thanh ghi trạng thái cho đến khi INPB = 1 D0h Đọc cổng ra D1h Ghi cổng ra D2h Ghi vào bộ đệm ra và xoá AUXB D3h Ghi vào bộ đệm ra và set AUXB D4h Ghi byte dữ liệu tiếp theo vào thiết bị phụ Khóa bàn phím: Start: IN AL, 64h .
- khóa bàn phím Keyboard Controller Buffer Input 60h Keyboard Output Port Output Buffer PC System Bus 60h Register Control 64h PS/2 only Input Port Register Status 64h Hình 3.4 - Bộ điều khiển bàn phím Phạm Hùng Kim Khánh Trang 52 Tài liệu Lập trình hệ thống Chương 3 ™ Các lệnh cho bàn phím: Mã Lệnh Mô tả EDh Bật/tắt 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 dạng mã quét Đặt 1 trong 3 tập 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 FFh Reset Chạy reset bên trong 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.
- Lập trình giao tiếp qua các hàm của DOS, 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ỉ 40h:1Eh, gồm 32 byte và kết thúc ở địa chỉ 40h:3Dh.
- Mỗi ký tự được lưu trữ bằng 2 byte, byte cao là mã quét, và byte thấp là mã ASCII.
- 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 dữ liệu của BIOS ở địa chỉ 40h:1Ah và 40h:1Ch.
- Con trỏ ghi (40h:1Ch) cho biết vị trí còn trống kế tiếp để ghi ký tự nhập, con trỏ đọc (40h:1Ah) cho biết vị trí ký tự đầu tiên sẽ đọc.
- Từ đó, bộ đệm bàn phím rỗng khi con trỏ ghi và con trỏ đọc trùng nhau Æ bộ đệm chỉ chứa được 15 ký tự.
- Phạm Hùng Kim Khánh Trang 53 Tài liệu Lập trình hệ thống Chương 3 Các hàm của ngắt 16h: Hàm 0h - đọc ký tự từ bàn phím, nếu không nhấn thì sẽ chờ Ra: AH = scancode, AL = mã ASCII.
- Nếu phím nhấn là các phím đặc biệt thì AL = 0 Hàm 1h - ZF = 1 nếu không có ký tự trong bộ đệm.
- Giá trị trả về giống như hàm 00h nhưng không xoá ký tự ra khỏi bộ đệm Hàm 2h - Trả về trạng thái của các phím, kết quả chứa trong AL INS CAPS NUM SCROLL ALT CTRL LEFT RIGHT LOCK LOCK LOCK SHIFT SHIFT Hàm 10h - Giống hàm 00h nhưng trả về mã mở rộng Hàm 11h - Giống hàm 01h nhưng trả về mã mở rộng Hàm 12h - Giống hàm 02h nhưng AH chứa thêm các thông tin SYS CAPS NUM SCROLL RIGHT RIGHT LEFT LEFT REQ LOCK LOCK LOCK ALT CTRL ALT CTRL Các thí dụ.
- 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 dữ 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.
- 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.
- Phạm Hùng Kim Khánh Trang 55 Tài liệu Lập trình hệ thống Chương 3 2.3.
- 1: nhấn) CX: vị trí ngang DX: vị trí dọc Vào: CX: vị trí ngang 4 Đặt vị trí con trỏ DX: vị trí dọc Vào: BX = nút kiểm tra (=0: trái, =1: phải) Ra: AX = trạng thái nút 5 Trạng thái nút và số lần nhấn từ khi gọi BX = số lần nhấn CX: vị trí ngang DX: vị trí dọc lần nhấn cuối 6 Giống hàm 05h nhưng kiểm tra số lấn nhả Vào: CX = cột trái 7 Giới hạn dịch chuyển ngang của con trỏ DX = cột phải Vào: CX = dòng dưới 8 Giới hạn dịch chuyển dọc của con trỏ DX = dòng trên Vào: BX = vị trí ngang 9 Xác định hình dạng con trỏ đồ hoạ CX = vị trí dọc ES:DX: địa chỉ mặt nạ màn hình và con trỏ Vào: BX = 0: con trỏ phần mềm CX = mặt nạ màn hình DX = mặt nạ con trỏ A Xác định hình dạng con trỏ văn bản BX = 1: con trỏ phần cứng CX = dòng bắt đầu DX = dòng kết thúc Chú ý rằng toạ độ con trỏ xác định theo pixel với độ phân giải 640x200 trong khi chế độ văn bản sử dụng toạ độ ký tự 80x25 nên để chuyển sang toạ độ ký tự thì phải chia cho 8.
- Con trỏ chuột hiển thị trên màn hình đồ hoạ bằng cách thực hiện: Từ mới = (từ cũ AND mặt nạ màn hình) XOR mặt nạ con trỏ Nếu ta đặt mặt nạ màn hình là 0 thì ký tự màn hình tại đó sẽ bị xoá.
- Phạm Hùng Kim Khánh Trang 56 Tài liệu Lập trình hệ thống Chương 3 VD: Con trỏ chuột mềm nhấp nháy và chứa ký tự ‘A’ MOV AH,0Ah MOV BX,0 MOV CX,0 .
- m•t n• màn hình = 0 MOV DH,8Bh.
- Giao tiếp màn hình 3.1.
- Trong chế độ văn bản (text mode), các ký tự được xác định bởi mã ASCII, trong đó có cả các thông tin về thuộc tính của ký tự, thí dụ ký tự được hiện theo cách nhấp nháy hay đảo màu đen trắng ….ROM ký tự (character rom) lưu trữ các hình mẫu điểm ảnh của các ký tự tương ứng để máy phát ký tự biến đổi các mã ký tự đó thành 1 chuỗi các bit điểm ảnh (pixel bit) và chuyển chúng tới thanh ghi dịch (shift register).
- Trong chế độ đồ họa (graphics mode), thông tin trong RAM video được sử dụng trực tiếp cho việc phát ra các ký tự.
- Mỗi ký tự được biểu diễn bởi 1 từ 2 byte trong RAM video.
- 1 = cao, 0 = bình thường CHR7…CHR0: Mã ký tự.
- Phạm Hùng Kim Khánh Trang 57 Tài liệu Lập trình hệ thống Chương 3 Bảng màu quy định như sau: Mã hex Màu Mã hex Màu Mã hex Màu Mã hex Màu 0 Black 4 Red 8 Dark Gray C Light Red 1 Blue 5 Magenta 9 Light Blue D Light Magenta 2 Green 6 Brown A Light Green E Yellow 3 Cyan 7 Light Gray B Light Cyan F White Trong chế độ văn bản, 6845 liên tục xuất các địa chỉ cho RAM video qua MA0- MA13.
- Ký tự ở góc tận cùng phía trên bên trái màn hình có địa chỉ thấp nhất mà 6845 sẽ cung cấp ngay sau khi quét dọc ngược.
- Logic ghép nối định địa chỉ cho RAM video bằng việc lấy ra mã ký tự cùng với thuộc tính.
- Mã ký tự dùng cho máy phát ký tự như là chỉ số thứ nhất trong ROM ký tự.
- Lúc này, 6845 định địa chỉ hàng quét đầu tiên của ma trận ký tự, địa chỉ hàng bằng 0.
- Nếu máy phát tín hiệu nhận được giá trị 1 từ thanh ghi dịch, nó sẽ phát tín hiệu video tương ứng với màu của ký tự.
- Vậy dòng quét thứ nhất được hiện phù hợp với các ma trận điểm ảnh của các ký tự trong hàng ký tự thứ nhất.
- Địa chỉ dòng này hình thành một giá trị offset bên trong ma trận điểm ảnh cho ký tự được hiện.
- Dựa trên mỗi dòng quét như vậy, một dòng các điểm ảnh của ký tự trong hàng ký tự được hiện ra.
- Điều này có nghĩa là với ma trận 9x14 điểm ảnh cho 1 ký tự, hàng ký tự thứ nhất đã được hiện sau 14 dòng quét.
- Khi địa chỉ RA0- RA4 trở về giá trị 0, 6845 sẽ cấp 1 địa chỉ MA0-MA13 mới và hàng ký tự thứ hai sẽ được hiện ra cũng như vậy.
- Ở cuối dòng quét cuối cùng, 6845 sẽ reset địa chỉ MA0-MA13 và RA0-RA4 và cho phép lối ra VS (Vertical Synchronization) phát ra tín hiệu quét ngược cùng tín hiệu đồng bộ dọc.
- Mỗi ký tự có chiều cao cực đại ứng với 32 dòng vì có 5 đường địa chỉ RA0-RA4, còn bộ nhớ video trong trường hợp này được tới 16K từ vì có địa chỉ MA0-MA13 là 14 bit.
- Trong chế độ đồ họa, chúng kết hợp với nhau để tạo thành địa chỉ 19 bit, lúc đó 6845 có thể định địa chỉ cho bộ nhớ video lên tới 512K từ.
- Trong trường hợp này, các byte trong RAM video không được dịch thành mã ký tự và thuộc tính nữa mà trực tiếp xác định cường độ sáng và màu của điểm ảnh.
- Đa số các RAM video được chia thành vài băng được định địa chỉ bởi RA0-RA4.
- Các đường MA0-MA13 sẽ định địa chỉ offset bên trong mỗi băng.
- ROM ký tự và máy phát ký tự không làm việc.
- Thí dụ, với RAM video 128 KB, có thể địa chỉ hóa toàn bộ bộ nhớ màn hình qua CPU như bộ nhớ chính.
- Chế độ văn bản RAM video được coi như một dãy từ tuyến tính, từ đầu tiên được gán cho ký tự góc trên tận cùng bên trái màn hình gọi là hàng 1 cột 1.
- Số từ tuỳ thuộc vào độ phân giải của kiểu hiện ký tự.
- Thí dụ: độ phân giải chuẩn 25 hàng, 80 ký tự đòi hỏi 2000 từ nhớ 2 byte.
- Trong khi đó với card có độ phân giải cao SVGA 60 hàng, 132 ký tự cần đến 15840 byte.
- 6845 có thể được lập trình sao cho địa chỉ khởi phát của MA0-MA13 sau quét ngược dọc là khác 00h.
- Nếu địa chỉ khởi phát là bắt đầu của 1 trang thì có thể quản lý RAM video theo vài trang tách biệt nhau, nếu CPU thay đổi nội dung của 1 trang mà trang đó hiện đang không hiện thì màn hình cũng không thay đổi.
- Đoạn chương trình ghi ký tự 'A' có cường độ sáng cao vào góc trên bên trái với màu số 7 và màu nền số 0.
- Trang thứ nhất và là duy nhất bắt đầu ở địa chỉ B0000h.
- Địa chỉ của byte chứa điểm ảnh thuộc đường i và cột j trong trang k là: B0000h+8000h*k+2000h*(i mod 4)+ 90*int(i/4)+int(j/8) B0000h là đoạn video, 8000h là kích thước của trang, 2000h*(i mod 4) là offset của băng chứa byte đó, 90*int(i/4) là offset của dòng i trong băng và int(j/8) là offset của cột j trong băng.
- Truy xuất qua DOS Các hàm của int 21h có thể hiện các ký tự trên màn hình nhưng không can thiệp được vào màu.
- DOS gộp chung bàn phím và monitor thành 1 thiết bị mang tên CON (console).
- Ghi CON là truyền số liệu tới monitor, còn đọc CON là nhận ký tự từ bàn phím.
- 0: cuộn toàn màn hình) BH = thuộc tính các hàng trống xuất hiện khi cuộn CH, CL = hàng, cột của góc phía trên bên trái DH, DL = hàng, cột của góc phía dưới bên phải - Hàm 07h: cuộn cửa sổ xuống Giống hàm 06h - Hàm 08h: đọc ký tự và thuộc tính ký tự tại vị trí con trỏ Vào: BH = trang Ra: AH = thuộc tính AL = mã ASCII - Hàm 09h: ghi ký tự và thuộc tính ký tự tại vị trí con trỏ Vào: BH = trang BL = thuộc tính (theo bảng trang 61) AL = mã ASCII CX = số ký tự cần xuất Phạm Hùng Kim Khánh Trang 61 Tài liệu Lập trình hệ thống Chương 3 - Hàm 0Ah: ghi ký tự tại vị trí con trỏ Vào: BH = trang AL = mã ASCII CX = số ký tự cần xuất - Hàm 0Bh: chọn bảng màu (dùng cho chế độ đồ hoạ) Vào: BH = 0, BL = chọn màu nền (theo bảng trang 61) BH = 1, BL = số bảng màu Palette Pixel Color Palette Pixel Color.
- 0 0 Black 1 0 Black 0 1 Green 1 1 Cyan 0 2 Red 1 2 Magenta 0 3 Brown 1 3 White - Hàm 0Ch: hiện một điểm trên màn hình (dùng cho chế độ đồ hoạ) AL = giá trị pixel (0 – 3), nếu AL.7 = 1 thì giá trị màu là phép toán XOR vứi giá trị màu hiện hành CX = cột, DX = hàng - Hàm 0Dh: đọc một điểm trên màn hình (dùng cho chế độ đồ hoạ) Vào: CX = cột, DX = hàng Ra: AL = giá trị pixel - Hàm 0Fh: xác định chế độ màn hình hiện hành Ra: AL = chế độ AH = số cột BH = số trang - Hàm 13h: xuất chuỗi Vào: AL = chế độ xuất (bit0 = 1: cập nhật vị trí con trỏ sau khi xuất, bit1 = 1: chuỗi có chứa thuộc tính ký tự) BH = trang BL = thuộc tính (theo bảng trang 61) CX = số ký tự cần xuất CX = số ký tự cần xuất DH, DL = hàng, cột xuất chuỗi Phạm Hùng Kim Khánh Trang 62 Tài liệu Lập trình hệ thống Chương 3 ES:BP = chuỗi in (nếu AL.1 = 1 thì chuỗi có dạng ‘Kýtự’,thuộc tính,‘Kýtự’,thuộc tính,‘Kýtự’,thuộc tính.
- Thường trình cũ (của BIOS trên board mach chính) được thay địa chỉ tới int 42h.
- Tất cả các lệnh gọi int 10h sẽ được BIOS của EGA/VGA thay địa chỉ tới int 42h nếu board mạch EGA/VGA đang chạy các kiểu hiện tương thích với MDA hay CGA.
- Hàm 10h: truy xuất các thanh ghi màu và bảng màu - Hàm 11h: cài đặt các bảng định nghĩa ký tự mới - Hàm 12h: đặt cấu hình hệ con video - Hàm 1Bh: thông tin về trạng thái và chức năng của BIOS video (chỉ có ở VGA.
- gọi ngắt - Hàm 11h – ghép nối với máy phát ký tự Ví dụ: Nạp bảng định nghĩa ký tự 8*14 không cần chương trình CRTC: Mov ah, 11h .
- nạp bảng ký tự từ Rom Bios vào Ram máy phát ký tự.
- gán số 3 cho bảng Phạm Hùng Kim Khánh Trang 63 Tài liệu Lập trình hệ thống Chương 3 Int 10h .
- RAM video bắt đẩu ở đọan B0000h, trong đó ký tự góc trên cùng bên trái là từ thứ nhất trong RAM video.
- Địa chỉ của từ nhớ ứng với ký tự ở dòng i, cột j (i = 0-24, j = 0-79) được tính theo công thức sau: Address (i,j.
- Với board EGA, ở kiểu hiện văn bản từ 0 đến 3 mã ký tự được lưu trữ trong lớp nhớ 0 cùng với thuộc tính trong lớp 1 của RAM video.
- Mạch logic chuyển địa chỉ trên board thực hiện sự kết hợp nhất định nào đó sao cho tổ chức và cấu trúc của RAM video cũng như cách tính địa chỉ vẫn tương đồng với cách của CPU.
- Trong chế độ đồ họa từ 13 đến 16, RAM video bắt đầu từ địa chỉ đoạn A000h.
- Như vậy địa chỉ của 1 trong 4 bit này trên 1 điểm ảnh không chỉ gồm đoạn video và offset mà còn thêm vào số lớp nhớ nữa.
- Để hiện 1 điểm ảnh với 1 trong 16 màu, không phải chỉ tính địa chỉ bit mà còn phải thâm nhập 4 lớp nhớ.
- Thanh ghi này được định địa chỉ qua cổng chỉ số 3C4h với địa chỉ 02h và có thể được ghi qua cổng số liệu 3C5h.
- 0 = không cho phép Res : Dự trữ Phạm Hùng Kim Khánh Trang 64 Tài liệu Lập trình hệ thống Chương 3 Ví dụ: Đặt bit 0 của byte ở địa chỉ A000:0000h cho lớ 0, 1, 3.
- Nó được định địa chỉ với chỉ số 04h qua cổng chỉ số 3CEh, và có thể được ghi qua cổng số liệu 3CFh.
- Cấu trúc của thanh ghi này res res res res res res LY1 LY0 LY1-LY0: cho phép thâm nhập đọc với: 00 = lớp 0 01 = lớp 1 10 = lớp 2 11 = lớp 3 res : dự trữ Ví dụ: đọc byte ở địa chỉ A000:0000h cho lớp 2: Mov AX, A000h .
- Địa chỉ byte của điểm ảnh ở dòng i, cột j trang k (i=0-349, j=0-639, k=0-1) là: Address (i,j,k.
- Trong chế độ văn bản, mã ký tự được lưu trữ trong lớp nhớ 0 cùng với thuộc tính trong lớp 1 của RAM video VGA.
- Quá trình chuyển hóa địa chỉ cũng giống như EGA nhưng khác ở chổ nó vẫn đảm bảo chế độ văn bản 7 với độ phân giải 720x400, ma trận điểm ảnh 9x16.
- Trong chế độ đồ họa 4 ÷ 6 và 13 ÷ 19 , mọi tổ chức, cấu trúc cũng như cách tính Phạm Hùng Kim Khánh Trang 65 Tài liệu Lập trình hệ thống Chương 3 địa chỉ tương tự như CGA và EGA.
- Địa chỉ của byte ở dòng i, cột j ( i= 0-479), j=0-639) như sau: Address (i,j.
- địa chỉ của mỗi byte ở dòng i, cột j (i=0-479.
- Địa chỉ của điểm ảnh trong dòng i, cột j (i = 0-199, j=0-319) là: Address (i,j