Tài liệu I/O và ngắt của 8051 doc

27 265 1
Tài liệu I/O và ngắt của 8051 doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

I/O ngắt 8051 Bài Bộ môn TĐ Khoa KTĐK Nội dung nghiên cứu • Giao tiếp ế I/O 8051 – Quét LED – Hiển thị LCD – Bàn phím • Các ngắt 8051 – IVT, ISR – Cho phép mức ưu tiên ngắt – Các ngắt bên ngồi Qt LED đoạn • Các LED hiển thị – Nguồn nuôi (10ma LED) – Các chân (8 chân cho LED đoạn) • Hiện LED quét – Chỉ LED sáng ộ thời điểm – Các đầu vào a-h nối tương ứng với • Tổng số chân cần thiết t ê cổng ổ là: – 8+số LED – Với VD: 8+4 Quét LED đoạn • Thuật ậ tốn để ệ ộ giá trị gồm số • Tần số qt đủ lớn để khơ khơng có ó cảm ả giác iá dung hình – Ít 30Hz – Thời gian số bật • 1/30 s – Tần ầ số ố cao giảm ả dung hình tốt (60Hz) Quét LED đoạn Quét LED đoạn Giao tiếp với bàn phím • 16 phím xếp thành 4x4 • Thuật tốn • – Điều khiển hàng – Đọc tất cột – Nếu ế phím bất ấ kỳ ấ ấn cột 0, khơng ấn cột – Lặp lại cho hàng Ví dụ: – Cơng tắc ấn • R1← 0, C1:C4 = 1111 • R2← 0, C1:C4 = 0111 – Cơng tắc ấn • R1 R1← 0, C1:C4 = 1101 Giao tiếp với bàn phím Giao tiếp với bàn phím ; Ba`n phi'm hex no^'i va`o P1 ; Chuo+ng tri`nh hie^?n thi phi'm nha^'n LED ddoa.n ; P1.0-P1.3: columns ; P1.4-P1.7: rows ; DDi.a chi? LED: A000h LOOP: LCALL READKB ; tri tra? ve^`: A = 0-15 MOV DPTR,#T7SEG MOVC A,@A+DPTR MOV DPTR,#0A000H ; A000h: ddi.a chi? LED MOVX @DPTR,A SJMP LOOP READKB: PUSH SCAN: MOV A,#11111110B ; col_0 -> GND MOV R7,#0 ; R7 = i CONT: MOV P1,A ; no^'i col i -> GND MOV A,P1 ; ddo.c row JNB ACC.4,ROW_0 ; xe't xem row na`o? JNB ACC.5,ROW_1 JNB ACC.6,ROW_2 JNB ACC.7,ROW_3 RL A ; chua^?n bi no^'i GND INC R7 ; co^.t tie^'p theo CJNE R7,#4,CONT ; la^`n luo+.t no^'i GND co^.t SJMP SCAN ; quay la.i que't tu+` co^.t ROW_0: MOV A,R7 ; Row=0, Col=R7 ADD A,#0 ; A = + R7 SJMP EXIT ROW_1: MOV A,R7 ; Row=1, Col=R7 ADD A,#4 ; A = + R7 SJMP EXIT ROW_2: MOV A,R7 ; Row=2, Col=R7 ADD A,#8 ; A = + R7 SJMP EXIT ROW_3: MOV A,R7 ; Row=3, Col=R7 ADD A,#12 ; A = 12 + R7 EXIT: POP RET T7SEG: DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H, DB 08H,03H,46H,21H,04H,0EH END LCD có chữ số - Thuật tốn • Thuật tốn mov A, A command d call cmd delay mov A, A another_cmd another cmd call cmd delay mov A A, #’A’ #A call data delay mov A,, #’B’ call data delay … LCD có chữ số - Thuật tốn • Kiểm tra trạng thái bận: Sau đọc từ LCD, D7 chứa cờ bận Kiểm tra cờ trước gửi lệnh tới LCD, LCD sử dụng thời gian giữ chậm k lớn Các ngắt 8051 • Các ngắt gì? – Cách để dừng xử lý làm việc để phục vụ nhiệm vụ khác • Tại đâu cần sử dụng ngắt – Phục vụ nhiều thiết bị giao tiếp – Hệ thống đa nhiệm vụ • Ngắt 8051 – ngắt ắ bên ngoài, hai cho định thời cho cổng ổ nối tiếp Sự khác phương pháp dị ngắt ắ • Dị: – CPU giám sát thiết bị phục vụ cách lần lượt, tìm “cờ yêu cầu phục vụ” – Khi thấy yêu cầu cầu, phục vụ yêu cầu sau tiếp tục dị – CPU ln bận dị kể khơng có u cầu • Ngắt: – Nếu thiết bị sẵn sàng cần phục vụ, yêu cầu CPU – CPU dừng cơng việc thực phục vụ thiết bị Sau quay trở lại nhiệm vụ ban đầu trước lúc bị ngắt – CPU ln rỗi khơng có u cầu ngắt từ thiết bị giao tiếp Chương trình phục vụ ngắt • CPU có số ố lượng ngắt ắ cố ố định • Mọi ngắt phải kết hợp với đoạn mã gọi chương trình phục vụ ngắt ISR – Nếu ngắt x CPU phục vụ, ISR-x thực • Kiến trúc CPU định nghĩa địa mã xác định cho ISR, địa lưu bảng vectơ ngắt IVT • Các ISR chương trình bản, chúng kết thúc lệnh RETI RETI, RET • Khi ngắt xuất hiện, CPU nạp địa mã lệnh ISR từ bảng vectơ ngắt ắ thực Bảng vectơ ngắt 8051 • Mỗi ngắt có byte cho ISR • Nếu ISR lớn để đặt vào byte ta sử dụng ljmp Thực ngắt CPU hoàn thành lệnh ệ g thực ự ệ lưu PC vào ngăn xếp CPU lưu vào bên trạng thái thời ủ tất ấ ả ngắt ắ Nạp địa ISR ngắt từ IVT nhảy tới đị địa hỉ Thực ISR gặp lệnh RETI Trong lúc RETI RETI, CPU nạp trở lại PC cũ từ ngăn xếp tiếp tục cơng việc thực trước ngắt g xuất ... lớn Các ngắt 8051 • Các ngắt gì? – Cách để dừng xử lý làm việc để phục vụ nhiệm vụ khác • Tại đâu cần sử dụng ngắt – Phục vụ nhiều thiết bị giao tiếp – Hệ thống đa nhiệm vụ • Ngắt 8051 – ngắt ắ... phải RET • Khi ngắt xuất hiện, CPU nạp địa mã lệnh ISR từ bảng vectơ ngắt ắ thực Bảng vectơ ngắt 8051 • Mỗi ngắt có byte cho ISR • Nếu ISR q lớn để đặt vào byte ta sử dụng ljmp Thực ngắt CPU hồn... bị ngắt – CPU ln rỗi khơng có yêu cầu ngắt từ thiết bị giao tiếp Chương trình phục vụ ngắt • CPU có số ố lượng ngắt ắ cố ố định • Mọi ngắt phải kết hợp với đoạn mã gọi chương trình phục vụ ngắt

Ngày đăng: 23/12/2013, 20:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan