BÁO CÁO THÍ NGHIỆM VI XỬ LÍ GVHD: Phạm Đăng Lâm Nhóm L15 Thành viên MSSV Hoàng Hữu Đạt 1510670 Trần Công Minh 1512020 Vũ Thành Nhân 1512283 Trần Văn Trường 1513796 TP.HCM, tháng 5 năm 2017 1 BÀI TN 1 LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM 1 Mục tiêu Nắm được cách thức điều khiển trực tiếp ngoại vi thông qua các port I/O của 8051. Yêu cầu Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn được nối đến P1.0 và hiển thị ra led được nối tại chân P3.0 (bit thứ 0 của led thanh BL202). ORG 2000H LOOP: SETB P1.0 MOV C, P1.0 MOV P3.0,C SJMP LOOP END THÍ NGHIỆM 2 Biên dịch và thử nghiệm chương trình cho sẵn sau: ORG 2000H MAIN: CPL P3.0 SJMP MAIN END THÍ NGHIỆM 3 Mục tiêu Nắm được cách tạo trễ dùng vòng lặp lệnh Yêu cầu
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM KHOA ĐIỆN – ĐIỆN TỬ BÁO CÁO THÍ NGHIỆM VI XỬ LÍ GVHD: Phạm Đăng Lâm Nhóm L15 Thành viên MSSV Hồng Hữu Đạt 1510670 Trần Công Minh 1512020 Vũ Thành Nhân 1512283 Trần Văn Trường 1513796 TP.HCM, tháng năm 2017 BÀI TN LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM Mục tiêu 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: SETB P1.0 MOV C, P1.0 MOV P3.0,C SJMP LOOP END THÍ NGHIỆM Biên dịch thử nghiệm chương trình cho sẵn sau: ORG 2000H MAIN: CPL P3.0 SJMP MAIN END THÍ NGHIỆM Mục tiêu Nắm cách tạo trễ dùng vòng lặp lệnh Yêu cầu Viết chương trình tạo xung vng Khz, chu kỳ nhiệm vụ 50% P3.0 ORG 2000H MAIN: CPL P3.0 ACALL DELAY05MS SJMP MAIN DELAY05MS: MOV R7,#230 LOOP: DJNZ R7,LOOP RET END THÍ NGHIỆM Mục tiêu Nắm cách viết chương trình để tạo trễ Yêu cầu Viết chương trình Delay1sIns dùng 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 1.0 ACALL DELAY1SINS SJMP LOOP DELAY1SINS: MOV R7, #7 LOOP1: MOV R6, #250 LOOP2: MOV R5, #250 LOOP3: DJNZ R5, LOOP3 DJNZ R6, LOOP2 DJNZ R7, LOOP1 RET END THÍ NGHIỆM Mục tiêu Nắm cách hiển thị LED tạo hiệu ứng Yêu cầu Viết chương trình tạo hiệu ứng quay LED: LED đơn BARLED1 sáng từ trái sang phải sau thời gian 1s lặp lại Sử dụng chương trình 1s viết ORG 2000H MOV DPTR,#SIGNAL LAP1: MOV R1,#8 LAP2: MOV A,R1 MOVC A,@A+DPTR MOV P1,A ACALL DELAY1SINS DJNZ R1,LAP2 MOV P1,#0FFH SJMP LAP1 DELAY1SINS: MOV R7,#25 LOOP1: MOV R6,#250 LOOP2: MOV R5,#250 LOOP3: DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET SIGNAL: DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH END BÀI TN LẬP TRÌNH CHO TIMER VÀ HIỂN THỊ LED ĐOẠN THÍ NGHIỆM Mục tiêu Nắm cách thức tạo trễ sử dụng Timer chế độ Yêu cầu Viết chương trình tạo sóng vng Khz chân P1.0 sử dụng timer chế độ ORG 2000H LOOP: CPL P1.0 ACALL DELAY05MS SJMP LOOP DELAY05MS: MOV TMOD,#01H MOV TH0,#HIGH(-461) MOV TL0,#LOW(-461) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET END THÍ NGHIỆM Mục tiêu Nắm cách thức tạo trễ sử dụng Timer chế độ u cầu Viết chương trình tạo sóng vng 10 Khz chân P1.0 sử dụng timer chế độ ORG 2000H MOV TMOD,#02H MOV TH0,#(-46) SETB TR0 LOOP: JNB TF0,$ CLR TF0 CPL P1.0 SJMP LOOP END THÍ NGHIỆM Mục tiêu Nắm cách thức hiển thị LED đoạn Yêu cầu Viết chương trình DisplayLed0 hiển thị lên LED đoạn số giá trị chứa ghi R0 DISPLAYLED0: MOV A,R0 ADD A,#0E0H MOV DPTR,#0000H MOVX @DPTR,A RET Viết chương trình hiển thị số lên LED đoạn số cách cho R0 gọi chương trình DisplayLed0 ORG 2000H MOV R0,#9 ACALL DISPLAYLED0 SJMP DONE DISPLAYLED0: MOV A,R0 ADD A,#0E0H MOV DPTR,#0000H MOVX @DPTR,A RET DONE: NOP END THÍ NGHIỆM Mục tiêu Kết hợp chương trình con, sử dụng timer hiển thị LED đoạn Yêu cầu Viết chương trình hiển thị lên LED đoạn số số từ đến sau khoảng thời gian 1s ORG 2000H MOV TMOD, #01H LAP1: MOV R0, #0 LOOP: LCALL DisplayLed0 LCALL Delay1s INC R0 CJNE R0, #10, LOOP SJMP LAP1 DisplayLed0: MOV A, R0 ORL A, #0E0H MOV DPTR, #0000H MOVX @DPTR, A RET Delay1s: MOV R7, #20 LAP2: MOV TH0, #HIGH(-50000) MOV TL0, #LOW(-50000) SETB TR0 JNB TF0, $ CLR TF0 CLR TR0 DJNZ R7, LAP2 RET END BÀI TN QUÉT LED ĐOẠN VÀ GIAO TIẾP LCD THÍ NGHIỆM Mục tiêu Nắm cách thức xuất giá trị lên LED đoạn Yêu cầu Viết chương trình DisplayLED xuất giá trị chứa ghi R0 lên LED đoạn có số thứ tự chứa ghi R1 R0 nằm tầm từ 0-9 R1 tầm từ 0-3 Sau dùng chương trình viết chương trình xuất giá trị lên LED đoạn số ORG 2000H MOV R0, #1 MOV R1, #3 LCALL DisplayLED SJMP $ DisplayLED: MOV A, R1 MOV DPTR, #TABLE MOVC A, @A +DPTR ORL A, R0 MOV DPTR, #0000H MOVX @DPTR, A RET TABLE: DB 0E0H, 0D0H, 0B0H, 070H END THÍ NGHIỆM Mục tiêu Nắm phương pháp quét LED đoạn Yêu cầu Viết chương trình hiển thị số lên LED7 đoạn 0, sau 1s hiển thị số lên LED đoạn 1, sau 1s hiển thị số lên LED đoạn 2, sau 1s hiển thị số lên LED đoạn Quá trình lặp lặp lại Việc hiển thị sử dụng chương trình DisplayLED viết ORG 2000H MOV TMOD, #01H MAIN: MOV R0, #1 MOV R1, #0 LAP: LCALL DisplayLED LCALL DELAY1s INC R0 10 MOV A, R2 CLR C SUBB A, #1 JZ GOTO MOV A, #40H GOTO: ADD A, #7FH ADD A, R1 LCALL WRITECOM POP ACC RET LCD_CLR: PUSH ACC MOV A, #01H ACALL WRITECOM POP ACC RET END THÍ NGHIỆM Yêu cầu Viết chương trình CALADC tính tốn giá trị điện áp thực tế đặt vào kênh ADC từ giá trị đo ADC Chương trình có giá trị vào chứa R0 (là kết chương trình READADC) Giá trị trả chứa R0 R1, R0 chứa giá trị nguyên R1 chứa giá trị thập phân 39 LCD_E BIT P3.3 LCD_RS BIT P3.5 LCD_ADDR EQU 6000H ORG 2000H MOV R2, #1 MOV TMOD, #01H MOV DPTR, #LCD_ADDR LCALL LCD_INT ACALL LCD_CLR LAP: MOV R3, #1 ACALL GOTOXY ACALL READADC ACALL CALADC MOV A,R0 ACALL WRITETEXT MOV A, #2EH ACALL WRITETEXT MOV A, R1 ACALL WRITETEXT SJMP LAP CALADC: MOV B, #50 DIV AB ADD A, #48 MOV R0, A MOV A, B MOV B, #5 DIV AB ADD A, #48 40 MOV R1, A RET READADC: MOV A, #0 MOV R7,#100 MOV DPTR, #4000H MOVX @DPTR, A DJNZ R7,$ MOVX A, @DPTR MOV R0, A RET LCD_INT: MOV A, #38H LCALL WRITECOM MOV A, #0EH LCALL WRITECOM MOV A, #06H LCALL WRITECOM RET WRITECOM: MOV DPTR, #LCD_ADDR CLR LCD_RS SETB LCD_E MOVX @DPTR, A CLR LCD_E LCALL WAIT RET WAIT: MOV R6,#10 DL1: MOV R7,#250 DJNZ R7,$ 41 DJNZ R6,DL1 RET WRITETEXT: MOV DPTR, #LCD_ADDR SETB LCD_E SETB LCD_RS MOVX @DPTR, A CLR LCD_E CALL WAIT RET GOTOXY: PUSH ACC MOV A, R2 CLR C SUBB A, #1 JZ GOTO MOV A, #40H GOTO: ADD A, #7FH ADD A, R3 LCALL WRITECOM POP ACC RET LCD_CLR: PUSH ACC MOV A, #01H ACALL WRITECOM POP ACC RET END 42 BÀI TN LẬP TRÌNH NGẮT THÍ NGHIỆM Mục tiêu 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 terminal Bật LED gắn vào P1.1 SW 317 (gắn vào P1.0) nhấn, tắt LED phím nhả ORG 2000H JMP MAIN ORG 2023H JMP ISRPORT MAIN: MOV TMOD, #20H MOV TH1, #-3 MOV SCON , #52H MOV A, PCON SETB ACC.7 MOV PCON, A SETB TR1 MOV IE, #10010000B LOOP: MOV R1, #20 SS1: JNB P1.0, $ 43 LCALL DELAY1ms DJNZ R1, SS1 MOV R1, #20 SETB P1.1 SS2: JB P1.0, $ LCALL DELAY1ms DJNZ R1, SS2 CLR P1.1 JMP LOOP ISRPORT: JNB RI, SKIP CLR RI MOV A, SBUF MOV SBUF, A JMP DONE SKIP: CLR TI DONE: RETI DELAY1ms: MOV R7, #2 VONG: MOV R6, #250 DJNZ R6, $ DJNZ R7, VONG RET END THÍ NGHIỆM Mục tiêu Nắm cách sử dụng ngắt timer 44 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 ORG 2000H SJMP MAIN ORG 200BH SJMP ISRT0 MAIN: MOV 20H, #1 MOV 21H, #3 MOV 22H, #1 MOV 23H, #8 MOV TMOD, #01H MOV TL0, #LOW(-1000) MOV TH0, #HIGH(-1000) SETB TR0 MOV IE, #10000010B MOV R3, #20H MOV R1, #3 SJMP $ ISRT0: CLR TR0 MOV TL0, #LOW(-1000) MOV TH0, #HIGH(-1000) MOV A, R3 45 ADD A, R1 MOV R0, A LCALL DISPLAYLED DEC R1 CJNE R1, #0FFH, SKIP MOV R1, #3 SKIP: SETB TR0 RETI DISPLAYLED: MOV A, R1 MOV DPTR, #POT MOVC A, @A+DPTR MOV R2, A MOV A, @R0 ORL A, R2 MOV DPTR, #0000H MOVX @DPTR, A RET POT: DB 070H, 0B0H, 0D0H, 0E0H END THÍ NGHIỆM 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 46 ORG 2000H JMP MAIN ORG 200BH JMP IRST0 ORG 2030H MAIN: MOV R3, #23H MOV R1, #0 MOV 20H, #0 MOV 21H, #0 MOV 22H, #0 MOV 23H, #0 MOV TMOD, #01H MOV TH0, #HIGH(-10000) MOV TL0, #LOW(-10000) MOV IE, #82H SETB TR0 SKIP: MOV R7, #20 T: JNB P1.7, $ LCALL DELAY1MS DJNZ R7, T MOV R7, #20 LOP: JB P1.7, $ 47 LCALL DELAY1MS DJNZ R7, LOP INC 23H MOV A, 23H CJNE A, #10, SKIP MOV 23H, #0 INC 22H MOV A, 22H CJNE A, #10, SKIP MOV 22H, #0 INC 21H MOV A, 21H CJNE A, #10, SKIP MOV 21H, #0 INC 20H MOV A, 20H CJNE A, #10, SKIP MOV 20H, #0 SJMP SKIP IRST0: MOV TH0, #HIGH(-10000) MOV TL0, #LOW(-10000) MOV A, R3 CLR C SUBB A, R1 48 MOV R0, A LCALL FORLED INC R1 CJNE R1, #4, CONTI MOV R1, #0 CONTI: RETI FORLED: MOV A, R1 MOV DPTR, #TABLE MOVC A, @A + DPTR MOV R6,A MOV A, @R0 ORL A, R6 MOV DPTR, #0000H MOVX @DPTR, A RET TABLE: DB 0E0H, 0D0H, 0B0H, 070H DELAY1MS: MOV R4, #2 LAP: MOV R5, #250 DJNZ R5, $ DJNZ R4, LAP RET END 49 THÍ NGHIỆM 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 SW 311 nhấn, đồng hồ bắt đầu chạy SW 312 nhấn, đồng hồ dừng lại ORG 2000H JMP MAIN ORG 200BH JMP IRST0 ORG 2030H MAIN: MOV R3, #20H MOV R1, #0 MOV TMOD, #01H MOV TH0, #HIGH(-10000) MOV TL0, #LOW(-10000) LL1: MOV 20H, #0 MOV 21H, #0 MOV 22H, #0 MOV 23H, #0 LL2: LCALL FORLED JB P1.1, LL2 50 T2: SETB TR0 MOV IE, #10000010B TT2: JB P1.0, TT1 T: CLR TR0 MOV IE, #0 SJMP LL1 TT1: JB P1.2, TT2 CLR TR0 MOV IE, #0 TA2: JNB P1.0, TT2 LCALL FORLED JB P1.1, TA2 SJMP T2 IRST0: MOV TH0, #HIGH(-10000) MOV TL0, #LOW(-10000) LCALL FORLED MOV A, 20H INC 20H MOV A, 20H CJNE A, #10, SKIP MOV 20H, #0 INC 21H MOV A, 21H CJNE A, #10, SKIP 51 MOV 21H, #0 INC 22H MOV A, 22H CJNE A, #10, SKIP MOV 22H, #0 INC 23H MOV A, 23H CJNE A, #07, SKIP MOV 23H, #0 SKIP: RETI FORLED: MOV A, R3 ADD A, R1 MOV R0, A LCALL DISPLAY INC R1 CJNE R1, #4, DONE MOV R1, #0 DONE: RET DISPLAY: MOV A, R1 MOV DPTR, #TABLE MOVC A, @A +DPTR MOV R2, A MOV A, @R0 52 ORL A, R2 MOV DPTR, #0000H MOVX @DPTR, A RET TABLE: DB 0E0H,0D0H,0B0H,070H END 53 ... RET END THÍ NGHIỆM Yêu cầu Vi? ??t chương trình SCANKEY qt bàn phím ma trận 4x4 board thí nghiệm Các giá trị trả từ 0 -15 có phím nhấn 255 khơng có phím nhấn Kết chứa R0 Sử dụng chương trình vi? ??t chương... P3.0,C SJMP LOOP END THÍ NGHIỆM Biên dịch thử nghiệm chương trình cho sẵn sau: ORG 2000H MAIN: CPL P3.0 SJMP MAIN END THÍ NGHIỆM Mục tiêu Nắm cách tạo trễ dùng vòng lặp lệnh Yêu cầu Vi? ??t chương trình... hon 16 bits LCALL WRITECOM MOV R3, #15 SJMP LU EXIT: RET TEXT: DB "Tranvantruong",0 END THÍ NGHIỆM Yêu cầu Vi? ??t thêm chương trình CLRSCREEN để xóa hình LCD Vi? ??t thêm chương trình GOTOXY để di