Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 76 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
76
Dung lượng
4,7 MB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH BÁO CÁO THÍ NGHIỆM VI XỬ LÝ LỚP: DT03 – HK213 HK213 Thực bởi: STT HỌ VÀ TÊN MSSV Lại Nguyễn Duy 2010999 Nguyễn Xuân Hoàng Tuấn 2012351 Hoàng Tuấn Kiệt 2010363 TP.HỒ CHÍ MINH, NĂM 2022 BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED MỤC TIÊU ➢ Nắm cách sử dụng kit thí nghiệm, phần mềm mềm lập trình ➢ Nắm cách lập trình giao tiếp IO port ➢ Nắm được cách lập trình tạo thời gian trễ dùng lệnh. CHUẨN BỊ ➢ Đọc và làm thí nghiệm 0 tại nhà ➢ Đọc bài chuẩn bị bị thí nghiệm 1 tại nhà ➢ Chuẩn bị bị cho thí nghiệm 1: Viết chương trình mơ phỏn phỏngg trên Proteus tất cả các thí nghiệm 1 dựa trên chuẩn bị 1 (Prelab_1) thí nghiệm 0 ➢ Nộp tất cả các kết quả (bài thí nghiệm 0 chuẩn bị bị thí nghiệm 1) cho GVHD trước khi vào lớp. Sinh viên khơng thực hiện hoặc nộp thiếu nếu khơng có lí đáng sẽ khơng khơng được tham gia thí nghiệm bị đánh vắng buổi Mọi hình thức gian lận, chép bị xử lý đáng. Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ NGHIỆM 1 Mục tiêu: Nắm Nắm cách thức điều khiển trực tiếp ngoại vi thông qua port I/O 8051 Yêu cầu: Viết chương trình thực việc đọc liên tục trạng thái nút nhấn nối đến P1.0 hiển thị led nối chân P3.0 (bit thứ led BL202) ORG 2000H LOOP: MOV C,P1.0 MOV P3.0,C SJMP LOOP END Kiểm tra: ➢ Biên dịch thực thi chương trình để kiểm tra kết thực hiện. Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Câu hỏi: ➢ Thử giải thích có đến led bị tác động nhấn thả nút? Khi nhấn nút, led nối với chân P1.0 led nối với chân P3.0 sáng; thả nút tắt Vì tác động lệnh: MOV C,P1.0; MOV P3.0,C ➢ Tổng kết xem các bit port dùng thí nghiệm giải thích sao? Ta sử dụng bit từ P1.0 đến P1.7 tương tự với Port Nhưng không nên sử dụng Port chân Port sử dụng với chức đặc biệt sau : Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ NGHIỆM 2 Mục tiêu: Nắm Nắm cách viết chương trình để tạo trễ Yêu cầu: ➢ Viết chương trình Delay1s ➢ Dùng chương trình viết để chớp/tắt LED đơn gắn vào P1.0 sau khoảng thời gian 1s ➢ Thay đổi chương trình để tần số chớp tắt 1KHz Chương trình con: • Delay1s: MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250 DJNZ R7,$ DJNZ R6,LP2 DJNZ R5,LP1 RET Chương trình chớp/tắt LED đơn gắn vào P1.0 sau khoảng thời gian 1s: • ORG 2000H LOOP: CPL P1.0 ACALL Delay1s SJMP LOOP Delay1s: MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250 DJNZ R7,$ DJNZ R6,LP2 Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED DJNZ R5,LP1 RET END • Thay đổi chương trình để tần số chớp tắt 1KHz ORG 2000H LOOP: CPL P1.0 ACALL Delay1ms SJMP LOOP DELAY1ms: LP: MOV R5, #2 MOV R6, #250 DJNZ R6, $ DJNZ R5, LP RET END Kiểm tra: ➢ Biên dịch, thực thi kiểm tra chương trình cách quan sát LED đơn. thời gian chớp tắt 1s.mp4 tần số chớp tắt 1KHz.mp4 Câu hỏi : ➢ Thời gian 1s tạo nào? Tính tốn xác dựa chương trình viết 1s = 2*MC*(Giá tr ị nạ p), MC 1() => Giá trị cần nạp 500000 Giới hạn ghi bit, lưu giá trị tối đa 255 nên ta phải chia nhỏ: 500000=250*250*8 => Chọn R5=8; R6=250; R7=250 ➢ Sai số nhỏ đạt so với u cầu bao nhiêu? Cơng thức tính xác Time delay với vịng lặp sau: Time delay = 2*k*m*n +(3*m+3)*k+3 (MC) với k, m, n 8, 250, 250 Time delay = 1.006027(s) Sai số xấp xỉ 0.006207(s) → Department of Electronics Microprocessor Laboratory Page | ➢ Khi tần số chớp tắt 1Khz, cho biết tượng trên LED? LED sẽ chớ p tắt gần liên tục (chu kì 1Khz hay 500()) ➢ Sinh viên thay đổi chương trình để tần số chớp tắt 1KHz? Vớ i tần số chớ p tắt 1Khz => Chu kì sẽ là 1000 ()(500 () tín hiệu ở m mức cao 500 () ) tín hiệu ở mức thấp Do đó, thờ i gian tr ễ Time delay = 500 () với cơng thức ta tính giá trị cần nạp 250. Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ NGHIỆM 3 Mục tiêu: Nắm Nắm cách viết chương trình để tạo trễ u cầu: Viết chương trình tạo xung vng 0.5Hz (chu kỳ nhiệm vụ 50%) 1Hz (chu kỳ nhiệm vụ 30%) chân P1.0 P1.1 ORG 2000H LOOP: CPL P1.0 CPL P1.1 ACALL DELAY300ms CPL P1.1 ACALL DELAY700ms SJMP LOOP DELAY300ms: MOV R5, #3 LP1: MOV R6, #200 LP2: MOV R7, #250 DJNZ R7, $ DJNZ R6, LP2 DJNZ R5, LP1 RET DELAY700ms: MOV R5, #7 LP3: MOV R6, #200 LP4: MOV R7, #250 DJNZ R7, $ DJNZ R6, LP4 DJNZ R5, LP3 RET END Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Kiểm tra: ➢ Biên dịch, thực thi kiểm tra chương trình cách sử dụng oscilloscope để kiểm tra chương trình tạo xung vng 0.5Hz 1Hz.mp4 Câu hỏi: ➢ Vẽ giản đồ xung? Các chương trình viết với thời gian trễ bao nhiêu? Các chương trình viết với thời gian trễ 0.3s 0.7s ➢ Tại thời gian tạo trễ, chân P1.0 P1.1 xuất tín hiệu thế nào? Tại 0.3s đầu, ta đảo bit chân P1.1, 0.7s sau ta tiếp tục đảo bị chân P1.1 ta tạo xung 1Hz với chu kì nhiệm vụ 30% Sau đồng thời đảo bit chân P1.0, ta có xung 0.5Hz với chu kì nhiệm vụ 50% chân P1.0. ➢ Để tạo xung thỏa u cầu tốn, vịng trễ viết nào? Vòng trễ viết như sau: Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM 4 Mục tiêu: Nắm Nắm cách sử dụng ngắt serial port Yêu cầu: Viết chương trình làm song song công việc sau: Nhận byte từ máy tính xuất ngược lại (echo) lên hình Hercules - Nhận - Bật LED gắn vào P1.1 SW 317 (gắn vào P1.0) nhấn, tắt LED phím được nhả. Hướng dẫn: ➢ Sử dụng ngắt serial port, po rt, ngắt lả ngắt thu (cờ RI 1) xóa RI, đọc SBUF ghi trở lại vào SBUF Nếu TI xóa TI ➢ Tác vụ đọc Switch hiển thị LED viết chương trình chính ORG 0000H LJMP MAIN ORG 0023H LJMP ISR_SERIAL MAIN: MOV TMOD,#20H MOV TH1,#-3 SETB TR1 MOV SCON,#01010010B MOV PCON,#80H MOV IE,#10010000B CHECK: JB P1.0,TAT CLR P1.1 SJMP CHECK TAT: SETB P1.1 SJMP CHECK Department of Electronics Microprocessor Laboratory Page | ISR_SERIAL: JNB RI,NEXT CLR RI MOV A,SBUF MOV SBUF,A SJMP OUT NEXT: CLR TI OUT: RETI END Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình lab3 tn4 tn4.mkv mkv Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM 5 Mục tiêu: Nắm Nắm cách sử dụng ngắt timer Yêu cầu: Viết chương trình hiển thị lên LED đoạn số có chữ số, ký số chứa ô nhớ 20H, 21H, 22H 23H Ô nhớ 20H chứa số hàng nghìn Hướng dẫn: ➢ Ở Lab ta viết chương trình DisplayLED hiển thị giá trị chứa R0, với số thứ tự LED chứa R1 Đồng thời, ta nắm cách quét LED cách cho LED sáng sau khoảng thời gian trễ. ➢ Ở thí nghiệm này, LED đoạn quét sử dụng ngắt timer Để đạt tần số quét 25 Hz, LED sáng thời gian 10 ms ➢ Các bước tiến hành: - Cấu hình timer chế độ 1, thời gian tràn 10 ms - Cho phép ngắt timer 0, cho timer chạy. - Sử dụng ghi R1 để xác định LED cần bật Ban đầu R1 0, R1 tăng lên sau lần bật LED để chuyển sang LED Khi R1 3, R3 quay lại 0 - Chương trình DisplayLED chứa giá trị hiển thị trong R0 Giá trị này byte ô nhớ 20H, 21H, 22H 23H, tương ứng giá trị R1 (0-3) - Khi timer tràn, chương trình phục vụ ngắt ta cấu hình lại timer, hiển thị giá trị led đoạn tương ứng, cập nhật giá trị R1 để đến LED tiếp theo (Lưu đồ giải thuật thể trang kế) ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H Department of Electronics Microprocessor Laboratory Page | 10 BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MAIN: MOV 20H,#1 MOV 21H,#2 MOV 22H,#3 MOV 23H,#4 MOV TMOD,#01H SETB TF0 MOV R7,#0 MOV IE,#82H SJMP $ ISR_T0: CJNE R7,#0,NEXT1 MOV R1,23H SJMP TT NEXT1: CJNE R7,#1,NEXT2 MOV R1,22H SJMP TT NEXT2: CJNE R7,#2,NEXT3 MOV R1,21H SJMP TT NEXT3: MOV R1,20H TT: LCALL DISPLAYLED INC R7 CJNE R7,#4,RUN MOV R7,#0 RUN: CLR TR0 Department of Electronics Page | 11 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MOV TH0,#HIGH(-9216) MOV TL0,#LOW(-9216) SETB TR0 RETI DISPLAYLED: MOV A,R7 MOV DPTR,#TABLE MOVC A,@A+DPTR ADD A,R1 MOV DPTR,#0000H MOVX @DPTR,A RET TABLE: DB 0E0H,0D0H,0B0H,070H END Department of Electronics Page | 12 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình Department of Electronics Page | 11 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT START Dừng timer, xóa cờ ngắt, đặt lại giá trị timer, cho phép timer chạy Dừng timer, xóa cờ ngắt, ng ắt, đặt lại giá trị timer, cho phép timer chạy Lấy giá trị hiển thị LED vào R0 Hiển thị LED tương ứng END Department of Electronics Page | 12 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM 6 Mục tiêu: Vận dụng ngắt timer để lập trình Yêu cầu: Viết chương trình đếm số lần nhấn phím SW317, hiển thị lên LED đoạn Hướng dẫn: ➢ Kiểm tra nút nhấn, nút nhấn nhấn, giá trị cập nhật vào ô nhớ 20H, 21H, 22H 23H Ơ nhớ 20H chứa số hàng nghìn Việc đếm số lần nhấn phím thực chương trình chính. ➢ LED đoạn qt thí nghiệm dùng ngắt timer Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H MAIN: MOV TMOD,#01H SETB TF0 MOV R7,#0 MOV IE,#82H MOV 23H,#0 MOV 22H,#0 MOV 21H,#0 MOV 20H,#0 LAP: JB P1.0,TIEP INC 23H MOV R2,23H Department of Electronics Page | 13 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT CJNE R2,#10,TIEP MOV 23H,#0 INC 22H MOV R2,22H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 INC 21H MOV R2,21H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 MOV 21H,#0 INC 20H TIEP: MOV R5,#4 LP2:MOV R4,#200 LP1:MOV R6,#250 DJNZ R6,$ DJNZ R4,LP1 DJNZ R5,LP2 SJMP LAP ISR_T0: CJNE R7,#0,NEXT1 MOV R1,23H SJMP TT NEXT1: CJNE R7,#1,NEXT2 MOV R1,22H SJMP TT NEXT2: Department of Electronics Page | 14 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT CJNE R7,#2,NEXT3 MOV R1,21H SJMP TT NEXT3: MOV R1,20H TT: LCALL DISPLAYLED INC R7 CJNE R7,#4,RUN MOV R7,#0 RUN: CLR TR0 MOV TH0,#HIGH(-9216) MOV TL0,#LOW(-9216) SETB TR0 RETI DISPLAYLED: MOV A,R7 MOV DPTR,#TABLE MOVC A,@A+DPTR ADD A,R1 MOV DPTR,#0000H MOVX @DPTR,A RET TABLE: DB 0E0H,0D0H,0B0H,070H END Department of Electronics Page | 15 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT lab3 tn6 tn6.mkv mkv Department of Electronics Page | 15 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM 7 Mục tiêu: Vận dụng ngắt timer để lập trình Yêu cầu: Viết chương trình thực đồng hồ bấm giây, hiển thị lên LED đoạn Hai LED thể số giây, LED thể phần trăm giây - Khi SW310 nhấn, đồng hồ reset về - Khi SW 311 nhấn, đồng hồ bắt đầu chạy. - Khi SW 312 nhấn, đồng hồ dừng lại. Hướng dẫn: ➢ LED đoạn quét thí nghiệm dùng ngắt timer ➢ Khi đồng hồ chạy, giá trị thời gian cập nhật dùng ngắt timer Giá trị cập nhật vào ô nhớ 20H, 21H, 22H 23H ➢ Việc kiểm tra nhấn các phím SW310, SW311, SW312 được xử lý chương trình Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H MAIN: MOV TMOD,#01H SETB TF0 MOV R7,#0 MOV IE,#82H RE: MOV 23H,#0 Department of Electronics Page | 19 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MOV 22H,#0 MOV 21H,#0 MOV 20H,#0 START: JNB P1.2,RE JB P1.0,START LAP: JNB P1.2,RE JB P1.1,LA SJMP START LA: INC 23H MOV R2,23H CJNE R2,#10,TIEP MOV 23H,#0 INC 22H MOV R2,22H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 INC 21H MOV R2,21H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 MOV 21H,#0 INC 20H TIEP: MOV R5,#20 L:MOV R4,#250 DJNZ R4,$ Department of Electronics Page | 20 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT DJNZ R5,L SJMP LAP ISR_T0: CJNE R7,#0,NEXT1 MOV R1,23H SJMP TT NEXT1: CJNE R7,#1,NEXT2 MOV R1,22H SJMP TT NEXT2: CJNE R7,#2,NEXT3 MOV R1,21H SJMP TT NEXT3: MOV R1,20H TT: LCALL DISPLAYLED INC R7 CJNE R7,#4,RUN MOV R7,#0 RUN: CLR TR0 MOV TH0,#HIGH(-9216) MOV TL0,#LOW(-9216) SETB TR0 RETI DISPLAYLED: MOV A,R7 MOV DPTR,#TABLE MOVC A,@A+DPTR Department of Electronics Page | 21 Microprocessor Laboratory BÀI THÍ NGHIỆM 3 LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT ADD A,R1 MOV DPTR,#0000H MOVX @DPTR,A RET TABLE: DB 0E0H,0D0H,0B0H,070H END lab3 tn7 tn7.mkv mkv Department of Electronics Page | 22 ... 13 BÀI THÍ NGHIỆM 1? ? LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Department of Electronics Microprocessor Laboratory Page | 14 BÀI THÍ NGHIỆM 1? ? LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ... Page | BÀI THÍ NGHIỆM 1? ? LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM 1? ? LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Câu... Laboratory Page | 17 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED? ? Bài làm: ORG 2000H LOOP: MOV R0,#3 MOV R1,#3 ACALL DISPLAYLED SJMP LOOP DISPLAYLED: INC R1 MOV B,R1 MOV A, #11 110 111 B SHIFTLOOP: