21.07.2013 Views

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

THỰC HÀNH VI XỬ LÝ - Khoa Khoa học và Kỹ thuật Máy tính

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Trường ĐH. Bách <strong>Khoa</strong> TP.HCM <strong>Khoa</strong> KH & KTMT<br />

MOVWF KeyReg1<br />

EXIT_GET_KEY<br />

MOVFF COL,W<br />

ADDWF KeyReg1,d<br />

RETURN<br />

Bước 7: Dựa <strong>và</strong>o hàm Get_key ở trên ta có thể hoàn thiện hàm<br />

Scan_button một cách dễ dàng. Ở đây ta nhắc lại cách mà sử lý phím để nhận dữ<br />

liệu ngược trở về là tại một thời điểm chỉ cho một cột được tích cực (ở đây là mức<br />

0) sau đó đọc ngược giá trị từ các hàng. Hàng 1 tương ứng với cột 1 là số 0, tương<br />

tự hàng 2 với cột 1 là số 4…<br />

Khi nhấn phím thì sẽ có hiện tượng rung phím, để giải quyết trường hợp<br />

này ta có một cách giải quyết ở đây là đọc dữ liệu 3 lần liên tiếp mỗi lần cách nhau<br />

10ms, sau đó so sánh 3 giá trị đọc được. Nếu 3 giá trị bằng nhau thì ta xem như có<br />

một nút nhấn được nhấn. Trong hàm Scan_button ta dùng 3 biến KeyReg1,<br />

KeyReg2 <strong>và</strong> KeyReg3 để lưu giá trị của 3 lần đọc dữ liệu liên tiếp, khi kiểm tra 3<br />

biến này có giá trị bằng nhau thì ta sẽ lưu <strong>và</strong>o biến KeyReg <strong>và</strong> xuất dữ liệu ra<br />

PORTB.<br />

Scan_button<br />

MOVFF KeyReg2,KeyReg3<br />

MOVFF KeyReg1,KeyReg2<br />

MOVLW 0x0E<br />

MOVWF temp_wr<br />

MOVLW .0<br />

MOVWF COL<br />

CALL GET_KEY<br />

MOVLW 0x0D<br />

MOVWF temp_wr<br />

MOVLW .1<br />

MOVWF COL<br />

CALL GET_KEY<br />

MOVLW 0x0B<br />

MOVWF temp_wr<br />

MOVLW .2<br />

MOVWF COL<br />

CALL GET_KEY<br />

MOVLW 0x07<br />

MOVWF temp_wr<br />

Bộ môn <strong>Kỹ</strong> Thuật <strong>Máy</strong> Tính 53 Thực hành Vi xử lý

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!