Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

thinh 19(VXL- Thiết kế ghép nối bàn phím 16 bits với CPU x86.)

Đề bài: Thiết kế ghép nối bàn phím 16 bits với CPU x86.

Yêu cầu: - Vẽ bản thiết kế vi mạch

-Viết chương trình đọc bàn phím và hiển thị ra màn hình bằng ASM

- Cho trước 2 cổng ghép nối: 300 hex, 301 hex

- Ghép nối không điều kiện, điều khiển chương trình.

bài làm

2. Mô tả nguyên tắc hoạt động

Nguyên tắc hoạt động của một bàn phím như sau:nếu tín hiệu X ở mức logic cao (logic = 1)thì điốt sẽ bị khóa , vậy nên tiếp điểm Y có đóng hay ko thì tại đầu o ta luôn có điện áp bằng 5V (tức là ko có dòng điện chạy qua)=> không thể thực hiện bấm phím còn nếu tín hiệu X ở mức logic thấp (logic = 0) thì lúc này điốt được mở và khi tiếp điểm Y được đóng xuống tại đầu O ta thu được giá trị điên áp bằng 0V=>phím được thực hiện bấm thành công và sẽ hiển thị kết quả trên màn hình. Bằng cách quét tuần tự các hàng và đọc trên các cột như trên ta sẽ xác định các phím bấm.

Trong quá trình hoạt động các chip diều khiển nhận biết được phím bằng một (hoặc một vài) mã số (gọi là mã quét,scan code) và gửi mã này ra cổng 60h, đồng thời tạo tín hiệu ngắt IRQ1. Tín hiệu IRQ1 tạo ra tín hiệu ngắt 09h, tín hiệu ngắt này có nhiệm vụ chuyển đổi mã quét thành mã ASCII và lưu trữ nó trong bộ đệm của bàn phím . Các chương trình có nhu cấu nhận thông tin từ bàn phím có thể sử dụng hàm của ngắt 21h hoặc 16h để đọc bộ đệm này mà không cần quan tâm tới gí trị của mã quét

Ví dụ : bạn muốn ấn chữ “C” in ra màn hình

Khi phím chữ “C ” được ấn rồi thả , lúc này ta nhận được 2 mã quét tương ứng là 1E và 9E và đoạn mã đây để xác định phím “C” có được bấm hay không

Hang EUQ 300H

Cot EUQ 301H

; code

; Quét hàng đầu tiên và đợi có phím ấn

MOV AL, 11111110 ; D0=0

OUT ĐC hang, AL; AL=kết quả có ấn hay không

Kiểm tra : IN AL, cot ; đọc bàn phím kết quả đưa vào AL

AND AL, 00001000

JNZ kiemtra

; đi xử lí phím và đưa ra màn hình

3.Giải pháp phần mềm

Ghép nối theo những phương pháp

- Ghép CPU mở nối rộng

- Điều khiển bằng phần mềm

- không có đối thoại

4. Viết chương trình:

.model small

.stack 100h

.data

0 DB 77 h 8 DB 0D7h

1 DB 7Bh 9 DB 0DBh

2 DB 7Dh A DB 0DDh

3 DB 7Eh B DB 0DEh

4 DB 0B7h C DB 0E7h

5 DB 0BBh D DB 0EBh

6 DB 0BDh E DB 0EDh

7 DB 0BEh F DB 0EEh

Hang EQU 300h

Cot EQU 301h

.code

main PROC

MOV AX,@Data

MOV DS,AX ;khởi động thanh ghi DS

;kích hoạt hàng 1

MOV AL,11111110b

OUT Hang,AL

Ktra: IN AL,Cot

AND AL,0E7h ;có ấn phím

MOV AX,43h ;nạp mã ASC II vào thanh ghi ax

JNZ HIENTHI ;nếu ấn chuyển ra hiển thị

AND AL,0E7h ;có ấn phím D không

MOV AX,44H ;mã ASCII tương ứng của phím D

JNZ HIENTHI

AND AL,0EDh ;có ấn phím E không

MOV,AX,45H

JNZ HIENTHI

AND AL,0EEh ;có ấn phím F không

MOV AX,46H

JNZ HIENTHI

;kích hoạt hàng 2

MOV AL,11111101b

OUT Hang,AL

Ktra: IN AL,Cot

AND AL,0D7h ;có ấn phím 8 không

MOV AX,38H

JNZ HIENTHI ;nếu bằng có chuyển xuống hiển thị

AND AL,0DBh ;có ấn phím 9 không

MOV AX,39H

JNZ HIENT

AND AL,0EDh ;có ấn phím A không

MOV DX,41H

JNZ HIENTHI

AND AL,0DEh ;có ấn phím B không

MOV AX,42H

JNZ HIENTHI

;kích hoạt hàng 3

MOV AL,111111011b

OUT Hang,AL

IN AL,Cot

AND 0B7h,AL ;có ấn phím 4 không

MOV AX,34H

JNZ HIENTHI

AND 0BBh,AL ;có ấn phím 5

MOV AX,35H

JNZ HIENTHI

AND 0BDh,AL ;có ấn phím 6

MOV AX,36H

JNZ HIENTHI

AND 0BEh,AL ;có ấn phím 7

MOV AX,37H

JNZ HIENTHI

;kích hoạt hàng4

MOV AL,11110111b

OUT Hang,AL

IN AL,Cot

AND AL,77h ;có ấn phím 0 không

MOV AX,30H

JNZ HIENTHI

AND AL,7Bh ;có ấn phím 1 không

MOV AX,31H

JNZ HIENTHI

AND 7Dh,AL ;có ấn phím 2 không

MOV AX,32H

JNZ HIENTHI

AND 7Eh,AL ;có ấn phím 3 không

MOV AX,33H

JNZ HIENTHI

HIENTHI:

MOV AH,9

LEA DX,AX

INT 21H

MOV AH,4CH

main ENDP

end main

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: