- Thế hệ sử dụng dòng phân cực spin cảm ứng (Spin Polarized Current Induced Switching CIS)
c. Nhóm dữ liệu nối tiếp SDU vàn ối tiếp hóa
4.4.3.4. 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.
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: 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.
Thanh ghi điều khiển (64h)
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ụ
F0h Gửi 1 xung tới lối ra FFh Cổng
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:
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: