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